I have written a simple hello application in Axis2 JAX-WS and when I run my
client I am getting an error that the service class cannot be found. In this
email I'm including the exact message, my services.xml file, a jar output of
my aar file, my wsdl file, my schema file, a snippet from the available
services webpage and a stacktrace from catalina.out.

I wrote the services.xml, the schema and the wsdl files by hand and
generated all the classes (except HelloClient, my client class) by "wsimport
-keep -verbose hello.wsdl".

I have tried every Google search I can think of and have looked at several
tutorials and dozens of mail archives without finding out the answer. If you
can help, I would really appreciate it.

------------------------------------------------------------------------------------------------------------------------------------------------------

The error message I get when I run the client (java -cp HelloService.jar
com/wb/hello/HelloClient) is:

"Exception in thread "main" javax.xml.ws.soap.SOAPFaultException:
java.lang.RuntimeException: The service class cannot be found for this
AxisService."

------------------------------------------------------------------------------------------------------------------------------------------------------

My services.xml file is simple:

<service name="HelloService">
  <parameter name="ServiceClass">com.wb.hello.HelloService</parameter>
  <operation name="hello">
    <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out";
        class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>
  </operation>
</service>

------------------------------------------------------------------------------------------------------------------------------------------------------

When I go to /cygdrive/c/tomcat-6.0.20/webapps/axis2/WEB-INF/services and
jar the aar file, the service class is there:

$ jar tvf HelloService.aar
     0 Tue Jan 26 14:41:52 PST 2010 META-INF/
    71 Tue Jan 26 14:41:52 PST 2010 META-INF/MANIFEST.MF
  1287 Tue Jan 26 14:41:52 PST 2010 com/wb/hello/HelloClient.class
   886 Tue Jan 26 14:41:52 PST 2010 com/wb/hello/HelloPort.class
   898 Tue Jan 26 14:41:52 PST 2010 com/wb/hello/HelloPortType.class
   752 Tue Jan 26 14:41:52 PST 2010 com/wb/hello/HelloRequestType.class
   758 Tue Jan 26 14:41:52 PST 2010 com/wb/hello/HelloResponseType.class
  2079 Tue Jan 26 14:41:52 PST 2010 com/wb/hello/HelloService.class
  1708 Tue Jan 26 14:41:52 PST 2010 com/wb/hello/ObjectFactory.class
   230 Tue Jan 26 14:41:52 PST 2010 com/wb/hello/package-info.class
  1794 Tue Jan 26 14:41:50 PST 2010 META-INF/hello.wsdl
   805 Tue Jan 26 14:41:50 PST 2010 META-INF/helloSchema.xsd
   301 Tue Jan 26 14:41:36 PST 2010 META-INF/services.xml

------------------------------------------------------------------------------------------------------------------------------------------------------

My wsdl file is:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions targetNamespace="com/wb/hello"
         name="hello"
         xmlns="http://schemas.xmlsoap.org/wsdl/";
         xmlns:tns="com/wb/hello"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema";
         xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/";
         xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"; >

  <!-- define schema elements for helloRequest, helloResponse -->
  <types>
    <xsd:schema>
      <xsd:import namespace="com/wb/hello"
schemaLocation="helloSchema.xsd"/>
    </xsd:schema>
  </types>

  <!-- define messages for helloRequest, helloResponse elements -->
  <message name="helloRequestMessage">
    <part name="name" element="tns:helloRequestElement"/>
  </message>

  <message name="helloResponseMessage">
    <part name="result" element="tns:helloResponseElement"/>
  </message>

  <!-- define port for helloRequest, hello Response messages -->
  <portType name="helloPort">
    <operation name="hello">
      <input message="tns:helloRequestMessage"/>
      <output message="tns:helloResponseMessage"/>
    </operation>
  </portType>

  <!-- define binding for hello operation -->
  <binding name="helloBinding" type="tns:helloPort">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http";
          style="document"/>
    <operation name="hello">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
    </operation>
  </binding>

  <!-- finally, define the service -->
  <service name="HelloService">
    <port name="helloPort" binding="tns:helloBinding">
      <soap:address location="
http://localhost:8080/axis2/services/HelloService"/>
    </port>
  </service>

</definitions>

------------------------------------------------------------------------------------------------------------------------------------------------------

My schema file is:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xsd:schema targetNamespace="com/wb/hello"
            xmlns:tns="com/wb/hello"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema";>

  <!-- define types for helloRequest, helloResponse -->
  <xsd:complexType name="helloRequestType">
    <xsd:sequence>
      <xsd:element name="request" type="xsd:string" minOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="helloResponseType">
    <xsd:sequence>
      <xsd:element name="response" type="xsd:string" minOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>

  <!-- define elements for helloRequest, helloResponse -->
  <xsd:element name="helloRequestElement" type="tns:helloRequestType"/>
  <xsd:element name="helloResponseElement" type="tns:helloResponseType"/>

</xsd:schema>

------------------------------------------------------------------------------------------------------------------------------------------------------

When I point my browser to
http://localhost:8080/axis2/services/listServicesit shows it as
available:

 Back Home <http://localhost:8080/axis2/axis2-web/index.jsp>  |
Refresh<http://localhost:8080/axis2/#>
  Available services
HelloService<http://localhost:8080/axis2/services/HelloService?wsdl>
Service
EPR : http://localhost:8080/axis2/services/HelloService
Service Description : HelloService *Service Status : Active*
*Available Operations*

   - hello

------------------------------------------------------------------------------------------------------------------------------------------------------

And for what it's worth, /cygdrive/c/tomcat-6.0.20/logs/catalina.out
includes:

[ERROR] The service class cannot be found for this AxisService.
java.lang.RuntimeException: The service class cannot be found for this
AxisServi
ce.
        at
org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessa
geReceiver.java:95)
        at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
        at
org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostReq
uest(HTTPTransportUtils.java:167)
        at
org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:1
42)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:290)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:206)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:233)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:128)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:102)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
ve.java:109)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
a:293)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:849)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ss(Http11Protocol.java:583)
        at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:45
4)
        at java.lang.Thread.run(Thread.java:619)

Reply via email to