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

Reply via email to