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)
>> >
>
>

Reply via email to