JBoss Webservice: Endpoint does not contain operation meta data
mark_raa May 12, 2010 4:05 AMHey Guys,
I have deployed a webservice from Eclipse in Java and once it has been successfully deployed, I can browse the WSDL and see the XML in my browser.
However, when I try invoke this service sending it a string parameter, i get the following error:
08:52:09,301 ERROR [SOAPFaultHelperJAXRPC] SOAP request exception javax.xml.rpc.soap.SOAPFaultException: Endpoint {http://127.0.0.1:8080/Tws/TestW s}TestWsPort does not contain operation meta data for: {http://dhanago.test.com/ }greet at org.jboss.ws.core.jaxrpc.SOAPFaultHelperJAXRPC.exceptionToFaultMessag e(SOAPFaultHelperJAXRPC.java:189) at org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS.exceptionToFaultMessage( SOAPFaultHelperJAXWS.java:183) at org.jboss.ws.core.jaxws.binding.SOAP11BindingJAXWS.createFaultMessage FromException(SOAP11BindingJAXWS.java:102) at org.jboss.ws.core.CommonSOAPBinding.bindFaultMessage(CommonSOAPBindin g.java:650) at org.jboss.ws.core.server.ServiceEndpointInvoker.invoke(ServiceEndpoin tInvoker.java:283) at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHan dlerImpl.java:468) at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHand lerImpl.java:293) at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl .java:203) at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(Request HandlerImpl.java:129) at org.jboss.wsf.common.servlet.AbstractEndpointServlet.service(Abstract EndpointServlet.java:85) 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.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFi lter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl icationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF ilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV alve.java:235) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV alve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Securit yAssociationValve.java:190) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv e.java:92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.proce ss(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invok e(SecurityContextEstablishmentValve.java:70) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j ava:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j ava:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedC onnectionValve.java:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal ve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav a:330) at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcesso r.java:905) at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.pr ocess(Http11AprProtocol.java:592) at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:20 36) at java.lang.Thread.run(Thread.java:619)
the code im using to perform the invokation is:
import javax.xml.namespace.QName; import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class webservice { public static void main(String[] args) { try { String endpoint = "http://localhost:8080/Tws/TestWs?wsdl"; Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(endpoint)); call.setOperationName(new QName("http://schemas.xmlsoap.org", "greet")); Object ret[] = (Object[]) call.invoke(new Object[] { "Joe" } ); for (int i = 0; i < ret.length; i ++) { System.out.println("RESPONSE " + (i + 1) + ": " + ret[i]); } } catch (Exception e) { e.printStackTrace(); System.err.println(e.toString()); } } }
and the WSDL when opened in my browser looks as follows:
<definitions name='TestWsService' targetNamespace='http://127.0.0.1:8080/Tws/TestWs' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://127.0.0.1:8080/Tws/TestWs' xmlns:xsd='http://www.w3.org/2001/XMLSchema'> <types> <xs:schema targetNamespace='http://127.0.0.1:8080/Tws/TestWs' version='1.0' xmlns:tns='http://127.0.0.1:8080/Tws/TestWs' xmlns:xs='http://www.w3.org/2001/XMLSchema'> <xs:element name='greet' type='tns:greet'/> <xs:element name='greetResponse' type='tns:greetResponse'/> <xs:complexType name='greet'> <xs:sequence> <xs:element minOccurs='0' name='name' type='xs:string'/> </xs:sequence> </xs:complexType> <xs:complexType name='greetResponse'> <xs:sequence> <xs:element minOccurs='0' name='return' type='xs:string'/> </xs:sequence> </xs:complexType> </xs:schema> </types> <message name='TestWs_greet'> <part element='tns:greet' name='greet'></part> </message> <message name='TestWs_greetResponse'> <part element='tns:greetResponse' name='greetResponse'></part> </message> <portType name='TestWs'> <operation name='greet' parameterOrder='greet'> <input message='tns:TestWs_greet'></input> <output message='tns:TestWs_greetResponse'></output> </operation> </portType> <binding name='TestWsBinding' type='tns:TestWs'> <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/> <operation name='greet'> <soap:operation soapAction=' '/> <input> <soap:body use='literal'/> </input> <output> <soap:body use='literal'/> </output> </operation> </binding> <service name='TestWsService'> <port binding='tns:TestWsBinding' name='TestWsPort'> <soap:address location='http://127.0.0.1:8080/Tws/TestWs'/> </port> </service> </definitions>
Has anyone experienced an issue like this before? and if so how did you resolve it?
From my understanding, everything in my WSDL is fine, but for some reason, I cannot invoke it.
Many thanks
Mark