You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Spam <sp...@rockhopper.org> on 2009/10/02 18:13:12 UTC

CXF - JAX-WS Configuration With Spring

Hi All,

I've followed the guidelines from
"http://cwiki.apache.org/CXF20DOC/jax-ws-configuration.html" to
configure my web services inside Tomcat 6.0.

If I use the following configuration, everything in the cxf (log4j) log
file looks like the services are deployed successfully, but checking
with "http://localhost:8080/myWebApp/services/" results in "No services
have been found.".

    <bean id="WSUserServicePortType"
class="be.eft.cbkv3.ws.WSUserServicePortTypeImpl">       
    </bean>      
    <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
                    implementor="#WSUserServicePortType"
                    address="/WS_UserService.srv">                
        <jaxws:binding>
                 <soap:soapBinding mtomEnabled="true" version="1.2"/>
          </jaxws:binding>                          
    </jaxws:endpoint>

    <bean id="WSClaimServicePortType"
class="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl">       
    </bean>                                       
    <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
                    implementor="#WSClaimServicePortType"
                    address="/WS_ClaimService.srv">
        <jaxws:binding>
                 <soap:soapBinding mtomEnabled="true" version="1.2"/>
          </jaxws:binding>   
      </jaxws:endpoint>

I changed configuration in that way (not using implementor but
implementorClass only):
    <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
                   
implementorClass="be.eft.cbkv3.ws.WSUserServicePortTypeImpl"
                    address="/WS_UserService.srv">                
        <jaxws:binding>
                 <soap:soapBinding mtomEnabled="true" version="1.2"/>
          </jaxws:binding>                          
    </jaxws:endpoint>
                              
    <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
                   
implementorClass="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl"
                    address="/WS_ClaimService.srv">
        <jaxws:binding>
                 <soap:soapBinding mtomEnabled="true" version="1.2"/>
          </jaxws:binding>   
      </jaxws:endpoint>
Then I get on "http://localhost:8080/myWebApp/services/" (looks good,
isn't it?):
    Available SOAP services:
        WSClaimServicePortType
            * getClaim
            * identify

        WSUserServicePortType
            * openSession
            * identify
            * closeSession
But when I try to use the Web Services by running the WS consumers, I
get this error (in tomcat log):
       02 Oct 2009 at 18.06.57,929    WARN
(SessionId=,org.apache.cxf.common.logging.LogUtils,345,http-8080-1) [] 
Application has thrown exception, unwinding now
org.apache.cxf.interceptor.Fault: object is not an instance of declaring
class while invoking public java.lang.String
myPackage.ws.WSUserServicePortTypeImpl.openSession(java.lang.String,java.lang.String,java.lang.Short,java.lang.String)
throws myPackage.ws.LoginException_Exception with params [login,
password, 0, localhost].
    at
org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:152)
    at
org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:83)
    at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:126)
    at
org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:55)
    at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:68)
    at
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
    at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
    at
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:98)
    at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
    at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:104)
    at
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:99)
    at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:452)
    at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:196)
    at
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:220)
    at
org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:153)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at
org.apache.cxf.transport.servlet.AbstractCXFServlet.service(AbstractCXFServlet.java:211)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.IllegalArgumentException: object is not an instance
of declaring class
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:166)
    at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:82)
    ... 29 more

I wonder what is wrong in my configuration?

I've tested using "jaxws:server" and I have same issue: the web services
looks like deployed in the log but access to
"http://localhost:8080/myWebApp/services/" results in "No services have
been found.".

By the way, my tests based on Simple Frontend are working well:

   <simple:server id="cxf.wsUserService"
serviceClass="myPackage.ws.interfaces.WSUserService"
address="/WS_UserService.srv">
      <simple:serviceBean>
        <bean id="server.wsUserService"
class="myPackage.ws.impl.WSUserServiceImpl">
            <property name="businessFacade" ref="businessFacade"/>
        </bean>
      </simple:serviceBean>
  </simple:server>

  <simple:server id="cxf.wsClaimService"
serviceClass="myPackage.ws.interfaces.WSClaimService"
address="/WS_ClaimService.srv">
      <simple:serviceBean>
          <bean id="server.wsClaimService"
class="myPackage.ws.impl.WSClaimServiceImpl">
            <property name="businessFacade" ref="businessFacade"/>
        </bean>         
      </simple:serviceBean>          
  </simple:server>

Any help would be greatly appreciated.

Regards.
Johann


Re: CXF - JAX-WS Configuration With Spring

Posted by Daniel Kulp <dk...@apache.org>.
On Fri October 16 2009 5:01:05 am Spam wrote:
> With 2.2.4 it works fine :-)
> 
> I still mustn't add these imports:
> 
>    <import resource="classpath:META-INF/cxf/cxf.xml" />
>    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
>    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
> 
> But I'm now able (with 2.2.4) to configure
> 
> >      <cxf:bus>
> >         <cxf:features>
> >             <cxf:logging/>
> >         </cxf:features>
> >     </cxf:bus>
> 
> without any problem.
> 
> For my knowledge, could you give me the JIRA issue number that is
> related to your '<cxf:bus> processing modifications'? 

There wasn't a JIRA.  Something I kind of did while reviewing other stuff.   
The specific commits are:

------------------------------------------------------------------------                                            
r812736 | dkulp | 2009-09-08 20:35:29 -0400 (Tue, 08 Sep 2009) | 2 lines                                            

if <cxf:bus> is used in a context that doesn't define a bus, go ahead
and create a default bus and wire it into the context                

------------------------------------------------------------------------
r788820 | dkulp | 2009-06-26 15:13:14 -0400 (Fri, 26 Jun 2009) | 4 lines

Change <cxf:bus> processing to configure the existing bus, not create a
new one
Make Bus have properties so props (like schema-validation) can be
enabled globally



Dan



> 
> Thank you for you help.
> 
> Johann
> 
> 
> 
> On Fri, Oct 9, 2009 at 8:59 AM, Johann DUPUIS <johann.dupuis@gmail.com
> <ma...@gmail.com>> wrote:
> 
>     Thanks I will give 2.2.4 a try.
> 
>     Johann
> 
> 
>     On Thu, Oct 8, 2009 at 10:56 PM, Daniel Kulp <dkulp@apache.org
>     <ma...@apache.org>> wrote:
> 
> 
>         I think this is one of the bugs I fixed in 2.2.4.   If made some
>         modifications
>         to the <cxf:bus> processing stuff to grab the default bus (which
>         is what you
>         see being created) if one isn't already in the context.   Thus,
>         this may be
>         fixed in 2.2.4 (which is being voted on now)
> 
>         Dan
> 
>         On Tue October 6 2009 3:44:38 am Spam wrote:
>         > In my 'web.xml' I load services related configuration with:
>         >
>         >     <servlet>
>         >         <servlet-name>CXFServlet</servlet-name>
>         >         <display-name>CXF Servlet</display-name>
> 
>        
>  <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
> 
>         >         <init-param>
>         >             <param-name>config-location</param-name>
> 
>          <param-value>/WEB-INF/services-server.xml</param-value>
> 
>         >         </init-param>
>         >         <load-on-startup>1</load-on-startup>
>         >      </servlet>
>         >
>         >     <servlet-mapping>
>         >         <servlet-name>CXFServlet</servlet-name>
>         >         <url-pattern>/services/*</url-pattern>
>         >       </servlet-mapping>
>         >
>         > If i remove those lines from 'services-server.xml', then
> 
>         imports looks
> 
>         > like useless:
>         > >      <cxf:bus>
>         > >         <cxf:features>
>         > >             <cxf:logging/>
>         > >         </cxf:features>
>         > >     </cxf:bus>
>         >
>         > For info, here is the beginning of 'services-server.xml' file:
>         > <?xml version="1.0" encoding="UTF-8"?>
>         > <beans xmlns="http://www.springframework.org/schema/beans"
>         >       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>         >       xmlns:simple="http://cxf.apache.org/simple"
>         >       xmlns:soap="http://cxf.apache.org/bindings/soap"
>         >       xmlns:cxf="http://cxf.apache.org/core"
>         >       xmlns:jaxws="http://cxf.apache.org/jaxws"
>         >       xsi:schemaLocation="
>         > http://www.springframework.org/schema/beans
>         > http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>         > http://cxf.apache.org/bindings/soap
>         > http://cxf.apache.org/schemas/configuration/soap.xsd
>         > http://cxf.apache.org/simple
> 
>         http://cxf.apache.org/schemas/simple.xsd
> 
>         > http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
>         > http://cxf.apache.org/jaxws
> 
>         http://cxf.apache.org/schemas/jaxws.xsd
> 
>         > "
>         > default-autowire="byName">
>         >
>         >
>         > Looking at Tomcat starting I can read:
>         > 09:31:10,191 INFO  [BusApplicationContext] No cxf.xml
> 
>         configuration file
> 
>         > detected, relying on defaults.
>         > 09:31:10,191 DEBUG [BusApplicationContext] Creating
> 
>         application context
> 
>         > with resources: [class path resource [META-INF/cxf/cxf.xml],
> 
>         class path
> 
>         > resource [META-INF/cxf/cxf-extension-corba.xml], class path
> 
>         resource
> 
>         > [META-INF/cxf/cxf-extension-jaxws.xml], ...
>         >
>         > So I guess there is a fallback that workaround the missing
> 
>         'cxf.xml' and
> 
>         > related files.
>         >
>         > The problem is I cannot configure <cxf:bus> since adding
> 
>         imports is
> 
>         > breaking (without error) the WS deployment.
>         >
>         > Regards.
>         > Johann
>         >
>         >
>         > On Mon, Oct 5, 2009 at 8:42 PM, Daniel Kulp <dkulp@apache.org
> 
>         <ma...@apache.org>
> 
>         > <mailto:dkulp@apache.org <ma...@apache.org>>> wrote:
>         >
>         >
>         >     I guess it kind of depends on how this config is picked up...
>         >
>         >     Is this a cxf-servlet.xml thing that the CXFServlet is
> 
>         loading (in
> 
>         >     which case
>         >     you shouldn't have the imports as your config is loaded on
> 
>         top of the
> 
>         >     "Default" bus configs)  or is this a
> 
>         applicationContext.xml type
> 
>         >     thing that
>         >     the sping context listener is picking up (in which case it
> 
>         IS needed)?
> 
>         >     Dan
>         >
>         >     On Mon October 5 2009 4:37:25 am Spam wrote:
>         >     > Hi All,
>         >     >
>         >     > I answer by myself.
>         >     >
>         >     > Even if I don't really know why, removing following
> 
>         lines from  my
> 
>         >     > services configuration is fixing the issue (services are
> 
>         visible
> 
>         >     and are
>         >
>         >     > running perfectly):
>         >     >
>         >     >     <import resource="classpath:META-INF/cxf/cxf.xml" />
>         >     >     <import
>         >
>         >     resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
>         >
>         >     >     <import
> 
>         resource="classpath:META-INF/cxf/cxf-servlet.xml" />
> 
>         >     >     <cxf:bus>
>         >     >         <cxf:features>
>         >     >             <cxf:logging/>
>         >     >         </cxf:features>
>         >     >     </cxf:bus>
>         >     >
>         >     > Any idea why these lines are preventing web services to
> 
>         be usable
> 
>         >     while
>         >
>         >     > no error message is issued?
>         >     >
>         >     > Regards.
>         >     > Johann
>         >     >
>         >     > Spam a écrit :
>         >     > > Hi All,
>         >     > >
>         >     > > I've followed the guidelines from
> 
>         "http://cwiki.apache.org/CXF20DOC/jax-ws-configuration.html" to
> 
>         >     > > configure my web services inside Tomcat 6.0.
>         >     > >
>         >     > > If I use the following configuration, everything in
> 
>         the cxf
> 
>         >     (log4j) log
>         >
>         >     > > file looks like the services are deployed
> 
>         successfully, but
> 
>         >     > > checking with
> 
>         "http://localhost:8080/myWebApp/services/" results in
> 
>         >     > > "No
>         >
>         >     services
>         >
>         >     > > have been found.".
>         >     > >
>         >     > >     <bean id="WSUserServicePortType"
>         >     > > class="be.eft.cbkv3.ws.WSUserServicePortTypeImpl">
>         >     > >     </bean>
>         >     > >     <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
>         >     > >                     implementor="#WSUserServicePortType"
>         >     > >                     address="/WS_UserService.srv">
>         >     > >         <jaxws:binding>
>         >     > >                  <soap:soapBinding mtomEnabled="true"
>         >
>         >     version="1.2"/>
>         >
>         >     > >           </jaxws:binding>
>         >     > >     </jaxws:endpoint>
>         >     > >
>         >     > >     <bean id="WSClaimServicePortType"
>         >     > > class="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl">
>         >     > >     </bean>
>         >     > >     <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
>         >     > >                     implementor="#WSClaimServicePortType"
>         >     > >                     address="/WS_ClaimService.srv">
>         >     > >         <jaxws:binding>
>         >     > >                  <soap:soapBinding mtomEnabled="true"
>         >
>         >     version="1.2"/>
>         >
>         >     > >           </jaxws:binding>
>         >     > >       </jaxws:endpoint>
>         >     > >
>         >     > > I changed configuration in that way (not using
> 
>         implementor but
> 
>         >     > > implementorClass only):
>         >     > >     <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
> 
>         implementorClass="be.eft.cbkv3.ws.WSUserServicePortTypeImpl"
> 
>         >     > >                     address="/WS_UserService.srv">
>         >     > >         <jaxws:binding>
>         >     > >                  <soap:soapBinding mtomEnabled="true"
>         >
>         >     version="1.2"/>
>         >
>         >     > >           </jaxws:binding>
>         >     > >     </jaxws:endpoint>
>         >     > >
>         >     > >     <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
> 
>         implementorClass="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl"
> 
>         >     > >                     address="/WS_ClaimService.srv">
>         >     > >         <jaxws:binding>
>         >     > >                  <soap:soapBinding mtomEnabled="true"
>         >
>         >     version="1.2"/>
>         >
>         >     > >           </jaxws:binding>
>         >     > >       </jaxws:endpoint>
>         >     > > Then I get on
> 
>         "http://localhost:8080/myWebApp/services/" (looks
> 
>         >     good,
>         >
>         >     > > isn't it?):
>         >     > >     Available SOAP services:
>         >     > >         WSClaimServicePortType
>         >     > >             * getClaim
>         >     > >             * identify
>         >     > >
>         >     > >         WSUserServicePortType
>         >     > >             * openSession
>         >     > >             * identify
>         >     > >             * closeSession
>         >     > > But when I try to use the Web Services by running the WS
>         >
>         >     consumers, I
>         >
>         >     > > get this error (in tomcat log):
>         >     > >        02 Oct 2009 at 18.06.57,929    WARN
> 
>         (SessionId=,org.apache.cxf.common.logging.LogUtils,345,http-8080-1)
>         []
> 
>         >     > > Application has thrown exception, unwinding now
>         >     > > org.apache.cxf.interceptor.Fault: object is not an
> 
>         instance of
> 
>         >     declaring
>         >
>         >     > > class while invoking public java.lang.String
> 
>         
>  myPackage.ws.WSUserServicePortTypeImpl.openSession(java.lang.String,java.
> 
>         >     > >lang.String,java.lang.Short,java.lang.String) throws
>         >     > > myPackage.ws.LoginException_Exception with params [login,
>         >
>         >     password, 0,
>         >
>         >     > > localhost].
>         >     > >     at
> 
>         
>  org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoke
> 
>         >     > >r.java:152) at
> 
>         
>  org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWS
> 
>         >     > >MethodInvoker.java:83) at
> 
>         
>  org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
> 
>         >     > >a:126) at
> 
>         
>  org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:55
> 
>         >     > >) at
> 
>         
>  org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
> 
>         >     > >a:68) at
> 
>         
>  org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvoker
> 
>         >     > >Interceptor.java:58) at
> 
>        
>  java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> 
>         >     > >     at
> 
>         java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> 
>         >     > >     at
> 
>         java.util.concurrent.FutureTask.run(FutureTask.java:138)
> 
>         >     > >     at
> 
>         
>  org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.
> 
>         >     > >java:37) at
> 
>         
>  org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(Servic
> 
>         >     > >eInvokerInterceptor.java:98) at
> 
>         
>  org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh
> 
>         >     > >ain.java:236) at
> 
>         
>  org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiatio
> 
>         >     > >nObserver.java:104) at
> 
>         
>  org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestina
> 
>         >     > >tion.java:99) at
> 
>         
>  org.apache.cxf.transport.servlet.ServletController.invokeDestination(Serv
> 
>         >     > >letController.java:452) at
> 
>         
>  org.apache.cxf.transport.servlet.ServletController.invoke(ServletControll
> 
>         >     > >er.java:196) at
> 
>         
>  org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFSer
> 
>         >     > >vlet.java:220) at
> 
>         
>  org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFSer
> 
>         >     > >vlet.java:153) at
> 
>         javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at
> 
> 
> 
>         
>  org.apache.cxf.transport.servlet.AbstractCXFServlet.service(AbstractCXFSe
> 
>         >     > >rvlet.java:211) at
> 
>         
>  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
> 
>         >     > >ionFilterChain.java:290) at
> 
>         
>  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
> 
>         >     > >rChain.java:206) at
> 
>         
>  org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve
> 
>         >     > >.java:233) at
> 
>         
>  org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve
> 
>         >     > >.java:191) at
> 
>         
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
>         >     > >128) at
> 
>         
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
>         >     > >102) at
> 
>         
>  org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.j
> 
>         >     > >ava:109) at
> 
>         
>  org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:28
> 
>         >     > >6) at
> 
>         
>  org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845
> 
>         >     > >) at
> 
>         
>  org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(H
> 
>         >     > >ttp11Protocol.java:583) at
> 
>        
>  org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> 
>         >     > >     at java.lang.Thread.run(Thread.java:619)
>         >     > > Caused by: java.lang.IllegalArgumentException: object
> 
>         is not an
> 
>         >     instance
>         >
>         >     > > of declaring class
>         >     > >     at
> 
>         sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 
>         >     > >     at
> 
>         
>  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java
> 
>         >     > >:39) at
> 
>         
>  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI
> 
>         >     > >mpl.java:25) at
> 
>         java.lang.reflect.Method.invoke(Method.java:597)
> 
>         >     > >     at
> 
>         
>  org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(Abstract
> 
>         >     > >Invoker.java:166) at
> 
>         
>  org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
> 
>         >     > >a:82) ... 29 more
>         >     > >
>         >     > > I wonder what is wrong in my configuration?
>         >     > >
>         >     > > I've tested using "jaxws:server" and I have same
> 
>         issue: the web
> 
>         >     services
>         >
>         >     > > looks like deployed in the log but access to
>         >     > > "http://localhost:8080/myWebApp/services/" results in "No
>         >
>         >     services have
>         >
>         >     > > been found.".
>         >     > >
>         >     > > By the way, my tests based on Simple Frontend are
> 
>         working well:
>         >     > >    <simple:server id="cxf.wsUserService"
>         >     > > serviceClass="myPackage.ws.interfaces.WSUserService"
>         >     > > address="/WS_UserService.srv">
>         >     > >       <simple:serviceBean>
>         >     > >         <bean id="server.wsUserService"
>         >     > > class="myPackage.ws.impl.WSUserServiceImpl">
>         >     > >             <property name="businessFacade"
> 
>         ref="businessFacade"/>
> 
>         >     > >         </bean>
>         >     > >       </simple:serviceBean>
>         >     > >   </simple:server>
>         >     > >
>         >     > >   <simple:server id="cxf.wsClaimService"
>         >     > > serviceClass="myPackage.ws.interfaces.WSClaimService"
>         >     > > address="/WS_ClaimService.srv">
>         >     > >       <simple:serviceBean>
>         >     > >           <bean id="server.wsClaimService"
>         >     > > class="myPackage.ws.impl.WSClaimServiceImpl">
>         >     > >             <property name="businessFacade"
> 
>         ref="businessFacade"/>
> 
>         >     > >         </bean>
>         >     > >       </simple:serviceBean>
>         >     > >   </simple:server>
>         >     > >
>         >     > > Any help would be greatly appreciated.
>         >     > >
>         >     > > Regards.
>         >     > > Johann
>         >
>         >     --
>         >     Daniel Kulp
>         >     dkulp@apache.org <ma...@apache.org>
> 
>         <mailto:dkulp@apache.org <ma...@apache.org>>
> 
>         >     http://www.dankulp.com/blog
> 
>         --
>         Daniel Kulp
>         dkulp@apache.org <ma...@apache.org>
>         http://www.dankulp.com/blog
> 

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog

CXF - JAX-WS Configuration With Spring

Posted by Spam <sp...@rockhopper.org>.
With 2.2.4 it works fine :-)

I still mustn't add these imports:

   <import resource="classpath:META-INF/cxf/cxf.xml" />
   <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
   <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

But I'm now able (with 2.2.4) to configure

>      <cxf:bus>
>         <cxf:features>
>             <cxf:logging/>
>         </cxf:features>
>     </cxf:bus>

without any problem.

For my knowledge, could you give me the JIRA issue number that is
related to your '<cxf:bus> processing modifications'?

Thank you for you help.

Johann



On Fri, Oct 9, 2009 at 8:59 AM, Johann DUPUIS <johann.dupuis@gmail.com
<ma...@gmail.com>> wrote:

    Thanks I will give 2.2.4 a try.

    Johann


    On Thu, Oct 8, 2009 at 10:56 PM, Daniel Kulp <dkulp@apache.org
    <ma...@apache.org>> wrote:


        I think this is one of the bugs I fixed in 2.2.4.   If made some
        modifications
        to the <cxf:bus> processing stuff to grab the default bus (which
        is what you
        see being created) if one isn't already in the context.   Thus,
        this may be
        fixed in 2.2.4 (which is being voted on now)

        Dan

        On Tue October 6 2009 3:44:38 am Spam wrote:
        > In my 'web.xml' I load services related configuration with:
        >
        >     <servlet>
        >         <servlet-name>CXFServlet</servlet-name>
        >         <display-name>CXF Servlet</display-name>
        >
        >
        <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        >         <init-param>
        >             <param-name>config-location</param-name>
        >              
         <param-value>/WEB-INF/services-server.xml</param-value>
        >         </init-param>
        >         <load-on-startup>1</load-on-startup>
        >      </servlet>
        >
        >     <servlet-mapping>
        >         <servlet-name>CXFServlet</servlet-name>
        >         <url-pattern>/services/*</url-pattern>
        >       </servlet-mapping>
        >
        > If i remove those lines from 'services-server.xml', then
        imports looks
        >
        > like useless:
        > >      <cxf:bus>
        > >         <cxf:features>
        > >             <cxf:logging/>
        > >         </cxf:features>
        > >     </cxf:bus>
        >
        > For info, here is the beginning of 'services-server.xml' file:
        > <?xml version="1.0" encoding="UTF-8"?>
        > <beans xmlns="http://www.springframework.org/schema/beans"
        >       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        >       xmlns:simple="http://cxf.apache.org/simple"
        >       xmlns:soap="http://cxf.apache.org/bindings/soap"
        >       xmlns:cxf="http://cxf.apache.org/core"
        >       xmlns:jaxws="http://cxf.apache.org/jaxws"
        >       xsi:schemaLocation="
        > http://www.springframework.org/schema/beans
        > http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        > http://cxf.apache.org/bindings/soap
        > http://cxf.apache.org/schemas/configuration/soap.xsd
        > http://cxf.apache.org/simple
        http://cxf.apache.org/schemas/simple.xsd
        > http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
        > http://cxf.apache.org/jaxws
        http://cxf.apache.org/schemas/jaxws.xsd
        > "
        > default-autowire="byName">
        >
        >
        > Looking at Tomcat starting I can read:
        > 09:31:10,191 INFO  [BusApplicationContext] No cxf.xml
        configuration file
        > detected, relying on defaults.
        > 09:31:10,191 DEBUG [BusApplicationContext] Creating
        application context
        > with resources: [class path resource [META-INF/cxf/cxf.xml],
        class path
        > resource [META-INF/cxf/cxf-extension-corba.xml], class path
        resource
        > [META-INF/cxf/cxf-extension-jaxws.xml], ...
        >
        > So I guess there is a fallback that workaround the missing
        'cxf.xml' and
        > related files.
        >
        > The problem is I cannot configure <cxf:bus> since adding
        imports is
        > breaking (without error) the WS deployment.
        >
        > Regards.
        > Johann
        >
        >
        > On Mon, Oct 5, 2009 at 8:42 PM, Daniel Kulp <dkulp@apache.org
        <ma...@apache.org>
        > <mailto:dkulp@apache.org <ma...@apache.org>>> wrote:
        >
        >
        >     I guess it kind of depends on how this config is picked up...
        >
        >     Is this a cxf-servlet.xml thing that the CXFServlet is
        loading (in
        >     which case
        >     you shouldn't have the imports as your config is loaded on
        top of the
        >     "Default" bus configs)  or is this a
        applicationContext.xml type
        >     thing that
        >     the sping context listener is picking up (in which case it
        IS needed)?
        >
        >     Dan
        >
        >     On Mon October 5 2009 4:37:25 am Spam wrote:
        >     > Hi All,
        >     >
        >     > I answer by myself.
        >     >
        >     > Even if I don't really know why, removing following
        lines from  my
        >     > services configuration is fixing the issue (services are
        visible
        >
        >     and are
        >
        >     > running perfectly):
        >     >
        >     >     <import resource="classpath:META-INF/cxf/cxf.xml" />
        >     >     <import
        >
        >     resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
        >
        >     >     <import
        resource="classpath:META-INF/cxf/cxf-servlet.xml" />
        >     >
        >     >
        >     >     <cxf:bus>
        >     >         <cxf:features>
        >     >             <cxf:logging/>
        >     >         </cxf:features>
        >     >     </cxf:bus>
        >     >
        >     > Any idea why these lines are preventing web services to
        be usable
        >
        >     while
        >
        >     > no error message is issued?
        >     >
        >     > Regards.
        >     > Johann
        >     >
        >     > Spam a écrit :
        >     > > Hi All,
        >     > >
        >     > > I've followed the guidelines from
        >     > >
        "http://cwiki.apache.org/CXF20DOC/jax-ws-configuration.html" to
        >     > > configure my web services inside Tomcat 6.0.
        >     > >
        >     > > If I use the following configuration, everything in
        the cxf
        >
        >     (log4j) log
        >
        >     > > file looks like the services are deployed
        successfully, but
        >     > > checking with
        "http://localhost:8080/myWebApp/services/" results in
        >     > > "No
        >
        >     services
        >
        >     > > have been found.".
        >     > >
        >     > >     <bean id="WSUserServicePortType"
        >     > > class="be.eft.cbkv3.ws.WSUserServicePortTypeImpl">
        >     > >     </bean>
        >     > >     <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
        >     > >                     implementor="#WSUserServicePortType"
        >     > >                     address="/WS_UserService.srv">
        >     > >         <jaxws:binding>
        >     > >                  <soap:soapBinding mtomEnabled="true"
        >
        >     version="1.2"/>
        >
        >     > >           </jaxws:binding>
        >     > >     </jaxws:endpoint>
        >     > >
        >     > >     <bean id="WSClaimServicePortType"
        >     > > class="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl">
        >     > >     </bean>
        >     > >     <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
        >     > >                     implementor="#WSClaimServicePortType"
        >     > >                     address="/WS_ClaimService.srv">
        >     > >         <jaxws:binding>
        >     > >                  <soap:soapBinding mtomEnabled="true"
        >
        >     version="1.2"/>
        >
        >     > >           </jaxws:binding>
        >     > >       </jaxws:endpoint>
        >     > >
        >     > > I changed configuration in that way (not using
        implementor but
        >     > > implementorClass only):
        >     > >     <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
        >     > >
        >     > >
        implementorClass="be.eft.cbkv3.ws.WSUserServicePortTypeImpl"
        >     > >                     address="/WS_UserService.srv">
        >     > >         <jaxws:binding>
        >     > >                  <soap:soapBinding mtomEnabled="true"
        >
        >     version="1.2"/>
        >
        >     > >           </jaxws:binding>
        >     > >     </jaxws:endpoint>
        >     > >
        >     > >     <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
        >     > >
        >     > >
        implementorClass="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl"
        >     > >                     address="/WS_ClaimService.srv">
        >     > >         <jaxws:binding>
        >     > >                  <soap:soapBinding mtomEnabled="true"
        >
        >     version="1.2"/>
        >
        >     > >           </jaxws:binding>
        >     > >       </jaxws:endpoint>
        >     > > Then I get on
        "http://localhost:8080/myWebApp/services/" (looks
        >
        >     good,
        >
        >     > > isn't it?):
        >     > >     Available SOAP services:
        >     > >         WSClaimServicePortType
        >     > >             * getClaim
        >     > >             * identify
        >     > >
        >     > >         WSUserServicePortType
        >     > >             * openSession
        >     > >             * identify
        >     > >             * closeSession
        >     > > But when I try to use the Web Services by running the WS
        >
        >     consumers, I
        >
        >     > > get this error (in tomcat log):
        >     > >        02 Oct 2009 at 18.06.57,929    WARN
        >
        >    
        (SessionId=,org.apache.cxf.common.logging.LogUtils,345,http-8080-1)
        []
        >
        >     > > Application has thrown exception, unwinding now
        >     > > org.apache.cxf.interceptor.Fault: object is not an
        instance of
        >
        >     declaring
        >
        >     > > class while invoking public java.lang.String
        >
        >
        >
         myPackage.ws.WSUserServicePortTypeImpl.openSession(java.lang.String,java.
        >
        >     > >lang.String,java.lang.Short,java.lang.String) throws
        >     > > myPackage.ws.LoginException_Exception with params [login,
        >
        >     password, 0,
        >
        >     > > localhost].
        >     > >     at
        >
        >
        >
         org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoke
        >
        >     > >r.java:152) at
        >
        >
        >
         org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWS
        >
        >     > >MethodInvoker.java:83) at
        >
        >
        >
         org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
        >
        >     > >a:126) at
        >
        >
        >
         org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:55
        >
        >     > >) at
        >
        >
        >
         org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
        >
        >     > >a:68) at
        >
        >
        >
         org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvoker
        >
        >     > >Interceptor.java:58) at
        >
        >    
        java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        >
        >     > >     at
        >
        >    
        java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        >
        >     > >     at
        java.util.concurrent.FutureTask.run(FutureTask.java:138)
        >     > >     at
        >
        >
        >
         org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.
        >
        >     > >java:37) at
        >
        >
        >
         org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(Servic
        >
        >     > >eInvokerInterceptor.java:98) at
        >
        >
        >
         org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh
        >
        >     > >ain.java:236) at
        >
        >
        >
         org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiatio
        >
        >     > >nObserver.java:104) at
        >
        >
        >
         org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestina
        >
        >     > >tion.java:99) at
        >
        >
        >
         org.apache.cxf.transport.servlet.ServletController.invokeDestination(Serv
        >
        >     > >letController.java:452) at
        >
        >
        >
         org.apache.cxf.transport.servlet.ServletController.invoke(ServletControll
        >
        >     > >er.java:196) at
        >
        >
        >
         org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFSer
        >
        >     > >vlet.java:220) at
        >
        >
        >
         org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFSer
        >
        >     > >vlet.java:153) at
        >     > >
        javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at
        >
        >
        >
         org.apache.cxf.transport.servlet.AbstractCXFServlet.service(AbstractCXFSe
        >
        >     > >rvlet.java:211) at
        >
        >
        >
         org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
        >
        >     > >ionFilterChain.java:290) at
        >
        >
        >
         org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
        >
        >     > >rChain.java:206) at
        >
        >
        >
         org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve
        >
        >     > >.java:233) at
        >
        >
        >
         org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve
        >
        >     > >.java:191) at
        >
        >
        org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
        >     > >128) at
        >
        >
        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
        >     > >102) at
        >
        >
        >
         org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.j
        >
        >     > >ava:109) at
        >
        >
        >
         org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:28
        >
        >     > >6) at
        >
        >
        >
         org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845
        >
        >     > >) at
        >
        >
        >
         org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(H
        >
        >     > >ttp11Protocol.java:583) at
        >
        >    
        org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        >
        >     > >     at java.lang.Thread.run(Thread.java:619)
        >     > > Caused by: java.lang.IllegalArgumentException: object
        is not an
        >
        >     instance
        >
        >     > > of declaring class
        >     > >     at
        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        >     > >     at
        >
        >
        >
         sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java
        >
        >     > >:39) at
        >
        >
        >
         sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI
        >
        >     > >mpl.java:25) at
        java.lang.reflect.Method.invoke(Method.java:597)
        >     > >     at
        >
        >
        >
         org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(Abstract
        >
        >     > >Invoker.java:166) at
        >
        >
        >
         org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
        >
        >     > >a:82) ... 29 more
        >     > >
        >     > > I wonder what is wrong in my configuration?
        >     > >
        >     > > I've tested using "jaxws:server" and I have same
        issue: the web
        >
        >     services
        >
        >     > > looks like deployed in the log but access to
        >     > > "http://localhost:8080/myWebApp/services/" results in "No
        >
        >     services have
        >
        >     > > been found.".
        >     > >
        >     > > By the way, my tests based on Simple Frontend are
        working well:
        >     > >
        >     > >    <simple:server id="cxf.wsUserService"
        >     > > serviceClass="myPackage.ws.interfaces.WSUserService"
        >     > > address="/WS_UserService.srv">
        >     > >       <simple:serviceBean>
        >     > >         <bean id="server.wsUserService"
        >     > > class="myPackage.ws.impl.WSUserServiceImpl">
        >     > >             <property name="businessFacade"
        ref="businessFacade"/>
        >     > >         </bean>
        >     > >       </simple:serviceBean>
        >     > >   </simple:server>
        >     > >
        >     > >   <simple:server id="cxf.wsClaimService"
        >     > > serviceClass="myPackage.ws.interfaces.WSClaimService"
        >     > > address="/WS_ClaimService.srv">
        >     > >       <simple:serviceBean>
        >     > >           <bean id="server.wsClaimService"
        >     > > class="myPackage.ws.impl.WSClaimServiceImpl">
        >     > >             <property name="businessFacade"
        ref="businessFacade"/>
        >     > >         </bean>
        >     > >       </simple:serviceBean>
        >     > >   </simple:server>
        >     > >
        >     > > Any help would be greatly appreciated.
        >     > >
        >     > > Regards.
        >     > > Johann
        >
        >     --
        >     Daniel Kulp
        >     dkulp@apache.org <ma...@apache.org>
        <mailto:dkulp@apache.org <ma...@apache.org>>
        >     http://www.dankulp.com/blog
        >

        --
        Daniel Kulp
        dkulp@apache.org <ma...@apache.org>
        http://www.dankulp.com/blog






Re: CXF - JAX-WS Configuration With Spring

Posted by Daniel Kulp <dk...@apache.org>.
I think this is one of the bugs I fixed in 2.2.4.   If made some modifications 
to the <cxf:bus> processing stuff to grab the default bus (which is what you 
see being created) if one isn't already in the context.   Thus, this may be 
fixed in 2.2.4 (which is being voted on now)

Dan

On Tue October 6 2009 3:44:38 am Spam wrote:
> In my 'web.xml' I load services related configuration with:
> 
>     <servlet>
>         <servlet-name>CXFServlet</servlet-name>
>         <display-name>CXF Servlet</display-name>
> 
> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
>         <init-param>
>             <param-name>config-location</param-name>
>                <param-value>/WEB-INF/services-server.xml</param-value>
>         </init-param>
>         <load-on-startup>1</load-on-startup>
>      </servlet>
> 
>     <servlet-mapping>
>         <servlet-name>CXFServlet</servlet-name>
>         <url-pattern>/services/*</url-pattern>
>       </servlet-mapping>
> 
> If i remove those lines from 'services-server.xml', then imports looks
> 
> like useless:
> >      <cxf:bus>
> >         <cxf:features>
> >             <cxf:logging/>
> >         </cxf:features>
> >     </cxf:bus>
> 
> For info, here is the beginning of 'services-server.xml' file:
> <?xml version="1.0" encoding="UTF-8"?>
> <beans xmlns="http://www.springframework.org/schema/beans"
>       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>       xmlns:simple="http://cxf.apache.org/simple"
>       xmlns:soap="http://cxf.apache.org/bindings/soap"
>       xmlns:cxf="http://cxf.apache.org/core"
>       xmlns:jaxws="http://cxf.apache.org/jaxws"
>       xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
> http://cxf.apache.org/bindings/soap
> http://cxf.apache.org/schemas/configuration/soap.xsd
> http://cxf.apache.org/simple http://cxf.apache.org/schemas/simple.xsd
> http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
> http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
> "
> default-autowire="byName">
> 
> 
> Looking at Tomcat starting I can read:
> 09:31:10,191 INFO  [BusApplicationContext] No cxf.xml configuration file
> detected, relying on defaults.
> 09:31:10,191 DEBUG [BusApplicationContext] Creating application context
> with resources: [class path resource [META-INF/cxf/cxf.xml], class path
> resource [META-INF/cxf/cxf-extension-corba.xml], class path resource
> [META-INF/cxf/cxf-extension-jaxws.xml], ...
> 
> So I guess there is a fallback that workaround the missing 'cxf.xml' and
> related files.
> 
> The problem is I cannot configure <cxf:bus> since adding imports is
> breaking (without error) the WS deployment.
> 
> Regards.
> Johann
> 
> 
> On Mon, Oct 5, 2009 at 8:42 PM, Daniel Kulp <dkulp@apache.org
> <ma...@apache.org>> wrote:
> 
> 
>     I guess it kind of depends on how this config is picked up...
> 
>     Is this a cxf-servlet.xml thing that the CXFServlet is loading (in
>     which case
>     you shouldn't have the imports as your config is loaded on top of the
>     "Default" bus configs)  or is this a applicationContext.xml type
>     thing that
>     the sping context listener is picking up (in which case it IS needed)?
> 
>     Dan
> 
>     On Mon October 5 2009 4:37:25 am Spam wrote:
>     > Hi All,
>     >
>     > I answer by myself.
>     >
>     > Even if I don't really know why, removing following lines from  my
>     > services configuration is fixing the issue (services are visible
> 
>     and are
> 
>     > running perfectly):
>     >
>     >     <import resource="classpath:META-INF/cxf/cxf.xml" />
>     >     <import
> 
>     resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
> 
>     >     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>     >
>     >
>     >     <cxf:bus>
>     >         <cxf:features>
>     >             <cxf:logging/>
>     >         </cxf:features>
>     >     </cxf:bus>
>     >
>     > Any idea why these lines are preventing web services to be usable
> 
>     while
> 
>     > no error message is issued?
>     >
>     > Regards.
>     > Johann
>     >
>     > Spam a écrit :
>     > > Hi All,
>     > >
>     > > I've followed the guidelines from
>     > > "http://cwiki.apache.org/CXF20DOC/jax-ws-configuration.html" to
>     > > configure my web services inside Tomcat 6.0.
>     > >
>     > > If I use the following configuration, everything in the cxf
> 
>     (log4j) log
> 
>     > > file looks like the services are deployed successfully, but
>     > > checking with "http://localhost:8080/myWebApp/services/" results in
>     > > "No
> 
>     services
> 
>     > > have been found.".
>     > >
>     > >     <bean id="WSUserServicePortType"
>     > > class="be.eft.cbkv3.ws.WSUserServicePortTypeImpl">
>     > >     </bean>
>     > >     <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
>     > >                     implementor="#WSUserServicePortType"
>     > >                     address="/WS_UserService.srv">
>     > >         <jaxws:binding>
>     > >                  <soap:soapBinding mtomEnabled="true"
> 
>     version="1.2"/>
> 
>     > >           </jaxws:binding>
>     > >     </jaxws:endpoint>
>     > >
>     > >     <bean id="WSClaimServicePortType"
>     > > class="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl">
>     > >     </bean>
>     > >     <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
>     > >                     implementor="#WSClaimServicePortType"
>     > >                     address="/WS_ClaimService.srv">
>     > >         <jaxws:binding>
>     > >                  <soap:soapBinding mtomEnabled="true"
> 
>     version="1.2"/>
> 
>     > >           </jaxws:binding>
>     > >       </jaxws:endpoint>
>     > >
>     > > I changed configuration in that way (not using implementor but
>     > > implementorClass only):
>     > >     <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
>     > >
>     > > implementorClass="be.eft.cbkv3.ws.WSUserServicePortTypeImpl"
>     > >                     address="/WS_UserService.srv">
>     > >         <jaxws:binding>
>     > >                  <soap:soapBinding mtomEnabled="true"
> 
>     version="1.2"/>
> 
>     > >           </jaxws:binding>
>     > >     </jaxws:endpoint>
>     > >
>     > >     <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
>     > >
>     > > implementorClass="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl"
>     > >                     address="/WS_ClaimService.srv">
>     > >         <jaxws:binding>
>     > >                  <soap:soapBinding mtomEnabled="true"
> 
>     version="1.2"/>
> 
>     > >           </jaxws:binding>
>     > >       </jaxws:endpoint>
>     > > Then I get on "http://localhost:8080/myWebApp/services/" (looks
> 
>     good,
> 
>     > > isn't it?):
>     > >     Available SOAP services:
>     > >         WSClaimServicePortType
>     > >             * getClaim
>     > >             * identify
>     > >
>     > >         WSUserServicePortType
>     > >             * openSession
>     > >             * identify
>     > >             * closeSession
>     > > But when I try to use the Web Services by running the WS
> 
>     consumers, I
> 
>     > > get this error (in tomcat log):
>     > >        02 Oct 2009 at 18.06.57,929    WARN
> 
>     (SessionId=,org.apache.cxf.common.logging.LogUtils,345,http-8080-1) []
> 
>     > > Application has thrown exception, unwinding now
>     > > org.apache.cxf.interceptor.Fault: object is not an instance of
> 
>     declaring
> 
>     > > class while invoking public java.lang.String
> 
>    
>  myPackage.ws.WSUserServicePortTypeImpl.openSession(java.lang.String,java.
> 
>     > >lang.String,java.lang.Short,java.lang.String) throws
>     > > myPackage.ws.LoginException_Exception with params [login,
> 
>     password, 0,
> 
>     > > localhost].
>     > >     at
> 
>    
>  org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoke
> 
>     > >r.java:152) at
> 
>    
>  org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWS
> 
>     > >MethodInvoker.java:83) at
> 
>    
>  org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
> 
>     > >a:126) at
> 
>    
>  org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:55
> 
>     > >) at
> 
>    
>  org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
> 
>     > >a:68) at
> 
>    
>  org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvoker
> 
>     > >Interceptor.java:58) at
> 
>     java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> 
>     > >     at
> 
>     java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> 
>     > >     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>     > >     at
> 
>    
>  org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.
> 
>     > >java:37) at
> 
>    
>  org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(Servic
> 
>     > >eInvokerInterceptor.java:98) at
> 
>    
>  org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh
> 
>     > >ain.java:236) at
> 
>    
>  org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiatio
> 
>     > >nObserver.java:104) at
> 
>    
>  org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestina
> 
>     > >tion.java:99) at
> 
>    
>  org.apache.cxf.transport.servlet.ServletController.invokeDestination(Serv
> 
>     > >letController.java:452) at
> 
>    
>  org.apache.cxf.transport.servlet.ServletController.invoke(ServletControll
> 
>     > >er.java:196) at
> 
>    
>  org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFSer
> 
>     > >vlet.java:220) at
> 
>    
>  org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFSer
> 
>     > >vlet.java:153) at
>     > > javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at
> 
>    
>  org.apache.cxf.transport.servlet.AbstractCXFServlet.service(AbstractCXFSe
> 
>     > >rvlet.java:211) at
> 
>    
>  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
> 
>     > >ionFilterChain.java:290) at
> 
>    
>  org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
> 
>     > >rChain.java:206) at
> 
>    
>  org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve
> 
>     > >.java:233) at
> 
>    
>  org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve
> 
>     > >.java:191) at
> 
>     
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
>     > >128) at
> 
>     
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
>     > >102) at
> 
>    
>  org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.j
> 
>     > >ava:109) at
> 
>    
>  org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:28
> 
>     > >6) at
> 
>    
>  org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845
> 
>     > >) at
> 
>    
>  org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(H
> 
>     > >ttp11Protocol.java:583) at
> 
>     org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> 
>     > >     at java.lang.Thread.run(Thread.java:619)
>     > > Caused by: java.lang.IllegalArgumentException: object is not an
> 
>     instance
> 
>     > > of declaring class
>     > >     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     > >     at
> 
>    
>  sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java
> 
>     > >:39) at
> 
>    
>  sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI
> 
>     > >mpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597)
>     > >     at
> 
>    
>  org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(Abstract
> 
>     > >Invoker.java:166) at
> 
>    
>  org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
> 
>     > >a:82) ... 29 more
>     > >
>     > > I wonder what is wrong in my configuration?
>     > >
>     > > I've tested using "jaxws:server" and I have same issue: the web
> 
>     services
> 
>     > > looks like deployed in the log but access to
>     > > "http://localhost:8080/myWebApp/services/" results in "No
> 
>     services have
> 
>     > > been found.".
>     > >
>     > > By the way, my tests based on Simple Frontend are working well:
>     > >
>     > >    <simple:server id="cxf.wsUserService"
>     > > serviceClass="myPackage.ws.interfaces.WSUserService"
>     > > address="/WS_UserService.srv">
>     > >       <simple:serviceBean>
>     > >         <bean id="server.wsUserService"
>     > > class="myPackage.ws.impl.WSUserServiceImpl">
>     > >             <property name="businessFacade" ref="businessFacade"/>
>     > >         </bean>
>     > >       </simple:serviceBean>
>     > >   </simple:server>
>     > >
>     > >   <simple:server id="cxf.wsClaimService"
>     > > serviceClass="myPackage.ws.interfaces.WSClaimService"
>     > > address="/WS_ClaimService.srv">
>     > >       <simple:serviceBean>
>     > >           <bean id="server.wsClaimService"
>     > > class="myPackage.ws.impl.WSClaimServiceImpl">
>     > >             <property name="businessFacade" ref="businessFacade"/>
>     > >         </bean>
>     > >       </simple:serviceBean>
>     > >   </simple:server>
>     > >
>     > > Any help would be greatly appreciated.
>     > >
>     > > Regards.
>     > > Johann
> 
>     --
>     Daniel Kulp
>     dkulp@apache.org <ma...@apache.org>
>     http://www.dankulp.com/blog
> 

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog

CXF - JAX-WS Configuration With Spring

Posted by Spam <sp...@rockhopper.org>.
In my 'web.xml' I load services related configuration with:

    <servlet>
        <servlet-name>CXFServlet</servlet-name>
        <display-name>CXF Servlet</display-name>
       
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
        <init-param>
            <param-name>config-location</param-name>
               <param-value>/WEB-INF/services-server.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>           
     </servlet>

    <servlet-mapping>
        <servlet-name>CXFServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>
      </servlet-mapping>

If i remove those lines from 'services-server.xml', then imports looks
like useless:
>      <cxf:bus>
>         <cxf:features>
>             <cxf:logging/>
>         </cxf:features>
>     </cxf:bus>

For info, here is the beginning of 'services-server.xml' file:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:simple="http://cxf.apache.org/simple"
      xmlns:soap="http://cxf.apache.org/bindings/soap"
      xmlns:cxf="http://cxf.apache.org/core"
      xmlns:jaxws="http://cxf.apache.org/jaxws"
      xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://cxf.apache.org/bindings/soap
http://cxf.apache.org/schemas/configuration/soap.xsd
http://cxf.apache.org/simple http://cxf.apache.org/schemas/simple.xsd
http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
"
default-autowire="byName">


Looking at Tomcat starting I can read:
09:31:10,191 INFO  [BusApplicationContext] No cxf.xml configuration file
detected, relying on defaults.
09:31:10,191 DEBUG [BusApplicationContext] Creating application context
with resources: [class path resource [META-INF/cxf/cxf.xml], class path
resource [META-INF/cxf/cxf-extension-corba.xml], class path resource
[META-INF/cxf/cxf-extension-jaxws.xml], ...

So I guess there is a fallback that workaround the missing 'cxf.xml' and
related files.

The problem is I cannot configure <cxf:bus> since adding imports is
breaking (without error) the WS deployment.

Regards.
Johann


On Mon, Oct 5, 2009 at 8:42 PM, Daniel Kulp <dkulp@apache.org
<ma...@apache.org>> wrote:


    I guess it kind of depends on how this config is picked up...

    Is this a cxf-servlet.xml thing that the CXFServlet is loading (in
    which case
    you shouldn't have the imports as your config is loaded on top of the
    "Default" bus configs)  or is this a applicationContext.xml type
    thing that
    the sping context listener is picking up (in which case it IS needed)?

    Dan


    On Mon October 5 2009 4:37:25 am Spam wrote:
    > Hi All,
    >
    > I answer by myself.
    >
    > Even if I don't really know why, removing following lines from  my
    > services configuration is fixing the issue (services are visible
    and are
    > running perfectly):
    >
    >     <import resource="classpath:META-INF/cxf/cxf.xml" />
    >     <import
    resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    >     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
    >
    >
    >     <cxf:bus>
    >         <cxf:features>
    >             <cxf:logging/>
    >         </cxf:features>
    >     </cxf:bus>
    >
    > Any idea why these lines are preventing web services to be usable
    while
    > no error message is issued?
    >
    > Regards.
    > Johann
    >
    > Spam a écrit :
    > > Hi All,
    > >
    > > I've followed the guidelines from
    > > "http://cwiki.apache.org/CXF20DOC/jax-ws-configuration.html" to
    > > configure my web services inside Tomcat 6.0.
    > >
    > > If I use the following configuration, everything in the cxf
    (log4j) log
    > > file looks like the services are deployed successfully, but checking
    > > with "http://localhost:8080/myWebApp/services/" results in "No
    services
    > > have been found.".
    > >
    > >     <bean id="WSUserServicePortType"
    > > class="be.eft.cbkv3.ws.WSUserServicePortTypeImpl">
    > >     </bean>
    > >     <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
    > >                     implementor="#WSUserServicePortType"
    > >                     address="/WS_UserService.srv">
    > >         <jaxws:binding>
    > >                  <soap:soapBinding mtomEnabled="true"
    version="1.2"/>
    > >           </jaxws:binding>
    > >     </jaxws:endpoint>
    > >
    > >     <bean id="WSClaimServicePortType"
    > > class="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl">
    > >     </bean>
    > >     <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
    > >                     implementor="#WSClaimServicePortType"
    > >                     address="/WS_ClaimService.srv">
    > >         <jaxws:binding>
    > >                  <soap:soapBinding mtomEnabled="true"
    version="1.2"/>
    > >           </jaxws:binding>
    > >       </jaxws:endpoint>
    > >
    > > I changed configuration in that way (not using implementor but
    > > implementorClass only):
    > >     <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
    > >
    > > implementorClass="be.eft.cbkv3.ws.WSUserServicePortTypeImpl"
    > >                     address="/WS_UserService.srv">
    > >         <jaxws:binding>
    > >                  <soap:soapBinding mtomEnabled="true"
    version="1.2"/>
    > >           </jaxws:binding>
    > >     </jaxws:endpoint>
    > >
    > >     <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
    > >
    > > implementorClass="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl"
    > >                     address="/WS_ClaimService.srv">
    > >         <jaxws:binding>
    > >                  <soap:soapBinding mtomEnabled="true"
    version="1.2"/>
    > >           </jaxws:binding>
    > >       </jaxws:endpoint>
    > > Then I get on "http://localhost:8080/myWebApp/services/" (looks
    good,
    > > isn't it?):
    > >     Available SOAP services:
    > >         WSClaimServicePortType
    > >             * getClaim
    > >             * identify
    > >
    > >         WSUserServicePortType
    > >             * openSession
    > >             * identify
    > >             * closeSession
    > > But when I try to use the Web Services by running the WS
    consumers, I
    > > get this error (in tomcat log):
    > >        02 Oct 2009 at 18.06.57,929    WARN
    > >
    (SessionId=,org.apache.cxf.common.logging.LogUtils,345,http-8080-1) []
    > > Application has thrown exception, unwinding now
    > > org.apache.cxf.interceptor.Fault: object is not an instance of
    declaring
    > > class while invoking public java.lang.String
    > >
    myPackage.ws.WSUserServicePortTypeImpl.openSession(java.lang.String,java.
    > >lang.String,java.lang.Short,java.lang.String) throws
    > > myPackage.ws.LoginException_Exception with params [login,
    password, 0,
    > > localhost].
    > >     at
    > >
    org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoke
    > >r.java:152) at
    > >
    org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWS
    > >MethodInvoker.java:83) at
    > >
    org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
    > >a:126) at
    > >
    org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:55
    > >) at
    > >
    org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
    > >a:68) at
    > >
    org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvoker
    > >Interceptor.java:58) at
    > >
    java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    > >     at
    java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    > >     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    > >     at
    > >
    org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.
    > >java:37) at
    > >
    org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(Servic
    > >eInvokerInterceptor.java:98) at
    > >
    org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh
    > >ain.java:236) at
    > >
    org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiatio
    > >nObserver.java:104) at
    > >
    org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestina
    > >tion.java:99) at
    > >
    org.apache.cxf.transport.servlet.ServletController.invokeDestination(Serv
    > >letController.java:452) at
    > >
    org.apache.cxf.transport.servlet.ServletController.invoke(ServletControll
    > >er.java:196) at
    > >
    org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFSer
    > >vlet.java:220) at
    > >
    org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFSer
    > >vlet.java:153) at
    > > javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at
    > >
    org.apache.cxf.transport.servlet.AbstractCXFServlet.service(AbstractCXFSe
    > >rvlet.java:211) at
    > >
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
    > >ionFilterChain.java:290) at
    > >
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
    > >rChain.java:206) at
    > >
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve
    > >.java:233) at
    > >
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve
    > >.java:191) at
    > >
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
    > >128) at
    > >
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
    > >102) at
    > >
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.j
    > >ava:109) at
    > >
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:28
    > >6) at
    > >
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845
    > >) at
    > >
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(H
    > >ttp11Protocol.java:583) at
    > >
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    > >     at java.lang.Thread.run(Thread.java:619)
    > > Caused by: java.lang.IllegalArgumentException: object is not an
    instance
    > > of declaring class
    > >     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    > >     at
    > >
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java
    > >:39) at
    > >
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI
    > >mpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597)
    > >     at
    > >
    org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(Abstract
    > >Invoker.java:166) at
    > >
    org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
    > >a:82) ... 29 more
    > >
    > > I wonder what is wrong in my configuration?
    > >
    > > I've tested using "jaxws:server" and I have same issue: the web
    services
    > > looks like deployed in the log but access to
    > > "http://localhost:8080/myWebApp/services/" results in "No
    services have
    > > been found.".
    > >
    > > By the way, my tests based on Simple Frontend are working well:
    > >
    > >    <simple:server id="cxf.wsUserService"
    > > serviceClass="myPackage.ws.interfaces.WSUserService"
    > > address="/WS_UserService.srv">
    > >       <simple:serviceBean>
    > >         <bean id="server.wsUserService"
    > > class="myPackage.ws.impl.WSUserServiceImpl">
    > >             <property name="businessFacade" ref="businessFacade"/>
    > >         </bean>
    > >       </simple:serviceBean>
    > >   </simple:server>
    > >
    > >   <simple:server id="cxf.wsClaimService"
    > > serviceClass="myPackage.ws.interfaces.WSClaimService"
    > > address="/WS_ClaimService.srv">
    > >       <simple:serviceBean>
    > >           <bean id="server.wsClaimService"
    > > class="myPackage.ws.impl.WSClaimServiceImpl">
    > >             <property name="businessFacade" ref="businessFacade"/>
    > >         </bean>
    > >       </simple:serviceBean>
    > >   </simple:server>
    > >
    > > Any help would be greatly appreciated.
    > >
    > > Regards.
    > > Johann
    >

    --
    Daniel Kulp
    dkulp@apache.org <ma...@apache.org>
    http://www.dankulp.com/blog




Re: CXF - JAX-WS Configuration With Spring

Posted by Daniel Kulp <dk...@apache.org>.
I guess it kind of depends on how this config is picked up...

Is this a cxf-servlet.xml thing that the CXFServlet is loading (in which case 
you shouldn't have the imports as your config is loaded on top of the 
"Default" bus configs)  or is this a applicationContext.xml type thing that 
the sping context listener is picking up (in which case it IS needed)?    

Dan


On Mon October 5 2009 4:37:25 am Spam wrote:
> Hi All,
> 
> I answer by myself.
> 
> Even if I don't really know why, removing following lines from  my
> services configuration is fixing the issue (services are visible and are
> running perfectly):
> 
>     <import resource="classpath:META-INF/cxf/cxf.xml" />
>     <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
>     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
> 
> 
>     <cxf:bus>
>         <cxf:features>
>             <cxf:logging/>
>         </cxf:features>
>     </cxf:bus>
> 
> Any idea why these lines are preventing web services to be usable while
> no error message is issued?
> 
> Regards.
> Johann
> 
> Spam a écrit :
> > Hi All,
> >
> > I've followed the guidelines from
> > "http://cwiki.apache.org/CXF20DOC/jax-ws-configuration.html" to
> > configure my web services inside Tomcat 6.0.
> >
> > If I use the following configuration, everything in the cxf (log4j) log
> > file looks like the services are deployed successfully, but checking
> > with "http://localhost:8080/myWebApp/services/" results in "No services
> > have been found.".
> >
> >     <bean id="WSUserServicePortType"
> > class="be.eft.cbkv3.ws.WSUserServicePortTypeImpl">
> >     </bean>
> >     <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
> >                     implementor="#WSUserServicePortType"
> >                     address="/WS_UserService.srv">
> >         <jaxws:binding>
> >                  <soap:soapBinding mtomEnabled="true" version="1.2"/>
> >           </jaxws:binding>
> >     </jaxws:endpoint>
> >
> >     <bean id="WSClaimServicePortType"
> > class="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl">
> >     </bean>
> >     <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
> >                     implementor="#WSClaimServicePortType"
> >                     address="/WS_ClaimService.srv">
> >         <jaxws:binding>
> >                  <soap:soapBinding mtomEnabled="true" version="1.2"/>
> >           </jaxws:binding>
> >       </jaxws:endpoint>
> >
> > I changed configuration in that way (not using implementor but
> > implementorClass only):
> >     <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
> >
> > implementorClass="be.eft.cbkv3.ws.WSUserServicePortTypeImpl"
> >                     address="/WS_UserService.srv">
> >         <jaxws:binding>
> >                  <soap:soapBinding mtomEnabled="true" version="1.2"/>
> >           </jaxws:binding>
> >     </jaxws:endpoint>
> >
> >     <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
> >
> > implementorClass="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl"
> >                     address="/WS_ClaimService.srv">
> >         <jaxws:binding>
> >                  <soap:soapBinding mtomEnabled="true" version="1.2"/>
> >           </jaxws:binding>
> >       </jaxws:endpoint>
> > Then I get on "http://localhost:8080/myWebApp/services/" (looks good,
> > isn't it?):
> >     Available SOAP services:
> >         WSClaimServicePortType
> >             * getClaim
> >             * identify
> >
> >         WSUserServicePortType
> >             * openSession
> >             * identify
> >             * closeSession
> > But when I try to use the Web Services by running the WS consumers, I
> > get this error (in tomcat log):
> >        02 Oct 2009 at 18.06.57,929    WARN
> > (SessionId=,org.apache.cxf.common.logging.LogUtils,345,http-8080-1) []
> > Application has thrown exception, unwinding now
> > org.apache.cxf.interceptor.Fault: object is not an instance of declaring
> > class while invoking public java.lang.String
> > myPackage.ws.WSUserServicePortTypeImpl.openSession(java.lang.String,java.
> >lang.String,java.lang.Short,java.lang.String) throws
> > myPackage.ws.LoginException_Exception with params [login, password, 0,
> > localhost].
> >     at
> > org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoke
> >r.java:152) at
> > org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWS
> >MethodInvoker.java:83) at
> > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
> >a:126) at
> > org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:55
> >) at
> > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
> >a:68) at
> > org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvoker
> >Interceptor.java:58) at
> > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
> >     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> >     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> >     at
> > org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.
> >java:37) at
> > org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(Servic
> >eInvokerInterceptor.java:98) at
> > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorCh
> >ain.java:236) at
> > org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiatio
> >nObserver.java:104) at
> > org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestina
> >tion.java:99) at
> > org.apache.cxf.transport.servlet.ServletController.invokeDestination(Serv
> >letController.java:452) at
> > org.apache.cxf.transport.servlet.ServletController.invoke(ServletControll
> >er.java:196) at
> > org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFSer
> >vlet.java:220) at
> > org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFSer
> >vlet.java:153) at
> > javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at
> > org.apache.cxf.transport.servlet.AbstractCXFServlet.service(AbstractCXFSe
> >rvlet.java:211) at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
> >ionFilterChain.java:290) at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
> >rChain.java:206) at
> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve
> >.java:233) at
> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve
> >.java:191) at
> > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
> >128) at
> > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:
> >102) at
> > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.j
> >ava:109) at
> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:28
> >6) at
> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845
> >) at
> > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(H
> >ttp11Protocol.java:583) at
> > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> >     at java.lang.Thread.run(Thread.java:619)
> > Caused by: java.lang.IllegalArgumentException: object is not an instance
> > of declaring class
> >     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >     at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java
> >:39) at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI
> >mpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597)
> >     at
> > org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(Abstract
> >Invoker.java:166) at
> > org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.jav
> >a:82) ... 29 more
> >
> > I wonder what is wrong in my configuration?
> >
> > I've tested using "jaxws:server" and I have same issue: the web services
> > looks like deployed in the log but access to
> > "http://localhost:8080/myWebApp/services/" results in "No services have
> > been found.".
> >
> > By the way, my tests based on Simple Frontend are working well:
> >
> >    <simple:server id="cxf.wsUserService"
> > serviceClass="myPackage.ws.interfaces.WSUserService"
> > address="/WS_UserService.srv">
> >       <simple:serviceBean>
> >         <bean id="server.wsUserService"
> > class="myPackage.ws.impl.WSUserServiceImpl">
> >             <property name="businessFacade" ref="businessFacade"/>
> >         </bean>
> >       </simple:serviceBean>
> >   </simple:server>
> >
> >   <simple:server id="cxf.wsClaimService"
> > serviceClass="myPackage.ws.interfaces.WSClaimService"
> > address="/WS_ClaimService.srv">
> >       <simple:serviceBean>
> >           <bean id="server.wsClaimService"
> > class="myPackage.ws.impl.WSClaimServiceImpl">
> >             <property name="businessFacade" ref="businessFacade"/>
> >         </bean>
> >       </simple:serviceBean>
> >   </simple:server>
> >
> > Any help would be greatly appreciated.
> >
> > Regards.
> > Johann
> 

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog

Re: CXF - JAX-WS Configuration With Spring

Posted by Spam <sp...@rockhopper.org>.
Hi All,

I answer by myself.

Even if I don't really know why, removing following lines from  my
services configuration is fixing the issue (services are visible and are
running perfectly):

    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />       
     

    <cxf:bus>
        <cxf:features>
            <cxf:logging/>
        </cxf:features>
    </cxf:bus>

Any idea why these lines are preventing web services to be usable while
no error message is issued?

Regards.
Johann

Spam a écrit :
> Hi All,
>
> I've followed the guidelines from
> "http://cwiki.apache.org/CXF20DOC/jax-ws-configuration.html" to
> configure my web services inside Tomcat 6.0.
>
> If I use the following configuration, everything in the cxf (log4j) log
> file looks like the services are deployed successfully, but checking
> with "http://localhost:8080/myWebApp/services/" results in "No services
> have been found.".
>
>     <bean id="WSUserServicePortType"
> class="be.eft.cbkv3.ws.WSUserServicePortTypeImpl">       
>     </bean>      
>     <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
>                     implementor="#WSUserServicePortType"
>                     address="/WS_UserService.srv">                
>         <jaxws:binding>
>                  <soap:soapBinding mtomEnabled="true" version="1.2"/>
>           </jaxws:binding>                          
>     </jaxws:endpoint>
>
>     <bean id="WSClaimServicePortType"
> class="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl">       
>     </bean>                                       
>     <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
>                     implementor="#WSClaimServicePortType"
>                     address="/WS_ClaimService.srv">
>         <jaxws:binding>
>                  <soap:soapBinding mtomEnabled="true" version="1.2"/>
>           </jaxws:binding>   
>       </jaxws:endpoint>
>
> I changed configuration in that way (not using implementor but
> implementorClass only):
>     <jaxws:endpoint id="WSUserServicePortTypeEndpoint"
>                    
> implementorClass="be.eft.cbkv3.ws.WSUserServicePortTypeImpl"
>                     address="/WS_UserService.srv">                
>         <jaxws:binding>
>                  <soap:soapBinding mtomEnabled="true" version="1.2"/>
>           </jaxws:binding>                          
>     </jaxws:endpoint>
>                               
>     <jaxws:endpoint id="WSClaimServicePortTypeEndpoint"
>                    
> implementorClass="be.eft.cbkv3.ws.WSClaimServicePortTypeImpl"
>                     address="/WS_ClaimService.srv">
>         <jaxws:binding>
>                  <soap:soapBinding mtomEnabled="true" version="1.2"/>
>           </jaxws:binding>   
>       </jaxws:endpoint>
> Then I get on "http://localhost:8080/myWebApp/services/" (looks good,
> isn't it?):
>     Available SOAP services:
>         WSClaimServicePortType
>             * getClaim
>             * identify
>
>         WSUserServicePortType
>             * openSession
>             * identify
>             * closeSession
> But when I try to use the Web Services by running the WS consumers, I
> get this error (in tomcat log):
>        02 Oct 2009 at 18.06.57,929    WARN
> (SessionId=,org.apache.cxf.common.logging.LogUtils,345,http-8080-1) [] 
> Application has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: object is not an instance of declaring
> class while invoking public java.lang.String
> myPackage.ws.WSUserServicePortTypeImpl.openSession(java.lang.String,java.lang.String,java.lang.Short,java.lang.String)
> throws myPackage.ws.LoginException_Exception with params [login,
> password, 0, localhost].
>     at
> org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:152)
>     at
> org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:83)
>     at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:126)
>     at
> org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:55)
>     at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:68)
>     at
> org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
>     at
> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>     at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>     at
> org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
>     at
> org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:98)
>     at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:236)
>     at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:104)
>     at
> org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:99)
>     at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:452)
>     at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:196)
>     at
> org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:220)
>     at
> org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:153)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
>     at
> org.apache.cxf.transport.servlet.AbstractCXFServlet.service(AbstractCXFServlet.java:211)
>     at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>     at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>     at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>     at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>     at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>     at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>     at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>     at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>     at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
>     at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>     at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>     at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.IllegalArgumentException: object is not an instance
> of declaring class
>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>     at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>     at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>     at java.lang.reflect.Method.invoke(Method.java:597)
>     at
> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:166)
>     at
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:82)
>     ... 29 more
>
> I wonder what is wrong in my configuration?
>
> I've tested using "jaxws:server" and I have same issue: the web services
> looks like deployed in the log but access to
> "http://localhost:8080/myWebApp/services/" results in "No services have
> been found.".
>
> By the way, my tests based on Simple Frontend are working well:
>
>    <simple:server id="cxf.wsUserService"
> serviceClass="myPackage.ws.interfaces.WSUserService"
> address="/WS_UserService.srv">
>       <simple:serviceBean>
>         <bean id="server.wsUserService"
> class="myPackage.ws.impl.WSUserServiceImpl">
>             <property name="businessFacade" ref="businessFacade"/>
>         </bean>
>       </simple:serviceBean>
>   </simple:server>
>
>   <simple:server id="cxf.wsClaimService"
> serviceClass="myPackage.ws.interfaces.WSClaimService"
> address="/WS_ClaimService.srv">
>       <simple:serviceBean>
>           <bean id="server.wsClaimService"
> class="myPackage.ws.impl.WSClaimServiceImpl">
>             <property name="businessFacade" ref="businessFacade"/>
>         </bean>         
>       </simple:serviceBean>          
>   </simple:server>
>
> Any help would be greatly appreciated.
>
> Regards.
> Johann
>
>
>