Dan, Actually the error message should read "No @WebService annotated service implementations found" or something like that :-)
In fact, you also need to annotate your service implementation with @WebService. Note that while this is the same annotation type than on the service interface (generated by wsimport), the attributes have a different meaning. There is an example here [1]. Note that this requirement is not specific to Axis2, but comes from JSR-109/181. Andreas [1] https://svn.apache.org/repos/asf/webservices/axis2/scratch/java/veithen/AXIS2-4611/jaxws-calculator-aar/src/main/java/org/apache/axis2/jaxws/calculator/impl/CalculatorImpl.java On Thu, Jan 28, 2010 at 19:46, Daniel Walsh <walsh94...@gmail.com> wrote: > Andreas, > > Thanks for the tip. I would never have figured that out by myself. > > Unfortunately, simply moving the "services/HelloService.aar" file to > "servicejars/HelloServices.jar" seems to have made things worse. Whereas > before I saw the service listed as deployed on the listServices page (but > got the exception when trying to run the client), now the service doesn't > even deploy. Clicking through the faulty services link on the listServices > page gives me this: > > Error: No annotated classes found in the jar: > file:/c:/tomcat-6.0.20/webapps/axis2/WEB-INF/servicejars/HelloService.jar. > Service deployment failed. > > Looking for annotations in just the .java files generated by "wsimport -keep > -verbose hello.wsdl" (the .class files of which are in the jar file) I find > the following (I used grep "^@" | sort) > > @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) > @WebService(name = "helloPort", targetNamespace = "com/wb/hello") > @WebServiceClient(name = "HelloService", targetNamespace = "com/wb/hello", > wsdlL > ocation = > "file:/C:/Documents%20and%20Settings/dan/My%20Documents/tmp/hello2/ser > vice/hello.wsdl") > @XmlAccessorType(XmlAccessType.FIELD) > @XmlAccessorType(XmlAccessType.FIELD) > @XmlRegistry > @XmlSeeAlso({ > @XmlType(name = "helloRequestType", propOrder = { > @XmlType(name = "helloResponseType", propOrder = { > @javax.xml.bind.annotation.XmlSchema(namespace = "com/wb/hello") > > Clearly, there are lots of annotations, so the error message is incorrect. > > I'm not sure what to do at this point. > > Dan > > > On Wed, Jan 27, 2010 at 12:46 PM, Andreas Veithen > <andreas.veit...@gmail.com> wrote: >> >> Daniel, >> >> Please have a look at AXIS2-4611 [1]. If deploying as a servicejar is >> not an option for you, feel free to vote for the issue and leave a >> comment. >> >> Andreas >> >> [1] https://issues.apache.org/jira/browse/AXIS2-4611 >> >> On Wed, Jan 27, 2010 at 21:32, Daniel Walsh <walsh94...@gmail.com> wrote: >> > >> > 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/listServices it shows it as available: >> > >> > Back Home | Refresh >> > >> > >> > Available services >> > >> > HelloService >> > >> > 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) >> > > >