Andreas: The annotations generated by wsimport are:
HelloService: @WebServiceClient(name = "HelloService", targetNamespace = "com/wb/hello", wsdlLocation = "file:/C:/axis2-1.5.1/hello2/service/hello.wsdl") HelloPortType: @WebService(name = "helloPortType", targetNamespace = "com/wb/hello") @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) @XmlSeeAlso({ ObjectFactory.class }) HelloPort: @WebService(name = "helloPort", targetNamespace = "com/wb/hello") @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) @XmlSeeAlso({ ObjectFactory.class }) I'm not sure why, but based on timestamps wsimport right now isn't generating HelloPortType. On the other hand, it isn't referenced anywhere in any of the other code, so I don't know if it matters. Dan On Mon, Feb 1, 2010 at 1:51 PM, Andreas Veithen <andreas.veit...@gmail.com>wrote: > Can you show me the annotations on HelloService, HelloPortType and > HelloPort? > > Andreas > > On Mon, Feb 1, 2010 at 21:12, Daniel Walsh <walsh94...@gmail.com> wrote: > > Andreas, > > > > I annotated my service class per your example and I am still getting the > "No > > annotated classes found in the jar" message when I click on the link > > > > Faulty Services > > > > c:\tomcat-6.0.20\webapps\axis2\WEB-INF\servicejars\HelloService.jar > > > > on the list services page at > > "http://localhost:8080/axis2/services/listServices" > > > > My annotated implementation class, HelloPortImpl, is pretty simple: > > > > package com.wb.hello; > > > > import java.io.PrintStream; > > > > import javax.jws.WebMethod; > > import javax.jws.WebParam; > > import javax.jws.WebResult; > > import javax.jws.WebService; > > import javax.jws.soap.SOAPBinding; > > import javax.xml.bind.annotation.XmlSeeAlso; > > > > @WebService(endpointInterface = "com.wb.hello.HelloPort", > > serviceName = "HelloService", > > portName = "HelloPort", > > targetNamespace = "com/wb/hello", > > wsdlLocation = "META-INF/hello.wsdl") > > > > public class HelloPortImpl implements HelloPort { > > > > @WebMethod > > @WebResult(name = "helloResponseElement", targetNamespace = > > "com/wb/hello", partName = "parameters") > > public HelloResponseType hello(HelloRequestType helloRequestType) { > > HelloResponseType helloResponseType = new HelloResponseType(); > > helloResponseType.setResponse("Hello " + > helloRequestType.getRequest()); > > return helloResponseType; > > } > > } > > > > > > And the class shows up in the jar file: > > > > $ jar tvf > > c:/tomcat-6.0.20/webapps/axis2/WEB-INF/servicejars/HelloService.jar > > 0 Mon Feb 01 12:11:02 PST 2010 META-INF/ > > 71 Mon Feb 01 12:11:02 PST 2010 META-INF/MANIFEST.MF > > 890 Mon Feb 01 12:11:02 PST 2010 com/wb/hello/HelloPort.class > > 1095 Mon Feb 01 12:11:02 PST 2010 com/wb/hello/HelloPortImpl.class > > 898 Mon Feb 01 12:11:02 PST 2010 com/wb/hello/HelloPortType.class > > 752 Mon Feb 01 12:11:02 PST 2010 com/wb/hello/HelloRequestType.class > > 758 Mon Feb 01 12:11:02 PST 2010 com/wb/hello/HelloResponseType.class > > 2003 Mon Feb 01 12:11:02 PST 2010 com/wb/hello/HelloService.class > > 1708 Mon Feb 01 12:11:02 PST 2010 com/wb/hello/ObjectFactory.class > > 230 Mon Feb 01 12:11:02 PST 2010 com/wb/hello/package-info.class > > 1804 Mon Feb 01 12:11:00 PST 2010 META-INF/hello.wsdl > > 805 Mon Feb 01 12:11:00 PST 2010 META-INF/helloSchema.xsd > > 296 Sat Jan 30 16:26:00 PST 2010 META-INF/service.xml > > > > If you have any thoughts as to why I can't get this thing to deploy I > would > > sure be happy to hear them. > > > > Dan > > > > > > > > <andreas.veit...@gmail.com> wrote: > >> > >> 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) > >> >> > > >> > > >> > > > > > >