javax.xml.rpc.soap.SOAPFaultException: does not contain oper
gowri Nov 2, 2009 6:19 AMHi,
I am using JBOSS 5.1.0 GA as JBOSS App. server. I have created a simple webservice for getting string say "Hello". I could able to deploy the project as a war file and the generation of wsdl file is also fine.
When I run the client, I am getting this exception in the server side.
Pls. help me on this to find out where I am going wrong.
"javax.xml.rpc.soap.SOAPFaultException: Endpoint {http://com.apr/helloworld}HelloWorldWSPort does not contain operation meta data for: {http://apr.com/}sayHello"
jboss-esb.xml
<?xml version = "1.0" encoding = "UTF-8"?> <jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.1.0.xsd"> <providers> <jms-provider name="JBossMQ" connection-factory="ConnectionFactory"> <jms-bus busid="myChannel"> <jms-message-filter dest-type="QUEUE" dest-name="queue/ESBTestQueue" /> </jms-bus> <jms-bus busid="MyEsbAwareChannel"> <jms-message-filter dest-type="QUEUE" dest-name="queue/ESBTestQueue_ESBAware" /> </jms-bus> </jms-provider> <jbr-provider name="JBR-Http" protocol="http" host="localhost"> <jbr-bus busid="Http-1" port="9001" /> </jbr-provider> </providers> <services> <service category="MyCateg" name="wsservice" description="Webservice"> <listeners> <jms-listener name="helloWorld" busidref="MyEsbAwareChannel" /> <jbr-listener name="Http-Gateway" busidref="Http-1" is-gateway="true" /> </listeners> <actions> <action name="JBossWSAdapter" class="org.jboss.soa.esb.actions.soap.SOAPProcessor"> <property name="jbossws-endpoint" value="HelloWorldWS" /> </action> </actions> </service> </services> </jbossesb>
HelloInterface.java
package com.apr; import javax.jws.WebParam; import javax.jws.WebService; @WebService public interface HelloInterface { public String sayHello(@WebParam(name="message")String name); }
The implementation class
package com.apr; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; @WebService(name = "HelloWorldWS", targetNamespace="http://com.apr/helloworld") public class HelloWorldWS implements HelloInterface { @WebMethod public String sayHello(@WebParam(name="message") String message) { System.out.println("Hello World. Message=" + message); return "Hello World - " + message; } }
wsdl file
<?xml version="1.0" encoding="UTF-8"?> <definitions name="HelloWorldWSService" targetNamespace="http://com.apr/helloworld" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://com.apr/helloworld" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <types> <xs:schema targetNamespace="http://com.apr/helloworld" version="1.0" xmlns:tns="http://com.apr/helloworld" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="sayHello" type="tns:sayHello"/> <xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/> <xs:complexType name="sayHello"> <xs:sequence> <xs:element minOccurs="0" name="message" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="sayHelloResponse"> <xs:sequence> <xs:element minOccurs="0" name="return" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema> </types> <message name="HelloWorldWS_sayHello"> <part name="sayHello" element="tns:sayHello"> </part> </message> <message name="HelloWorldWS_sayHelloResponse"> <part name="sayHelloResponse" element="tns:sayHelloResponse"> </part> </message> <portType name="HelloWorldWS"> <operation name="sayHello" parameterOrder="sayHello"> <input message="tns:HelloWorldWS_sayHello"> </input> <output message="tns:HelloWorldWS_sayHelloResponse"> </output> </operation> </portType> <binding name="HelloWorldWSBinding" type="tns:HelloWorldWS"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="sayHello"> <soap:operation soapAction=""/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="HelloWorldWSService"> <port name="HelloWorldWSPort" binding="tns:HelloWorldWSBinding"> <soap:address location="http://127.0.0.1:8080/MyWS/HelloWorldWS"/> </port> </service> </definitions>
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name> MyWS</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>HelloWorldWS</servlet-name> <servlet-class>com.apr.HelloWorldWS</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorldWS</servlet-name> <url-pattern>/HelloWorldWS</url-pattern> </servlet-mapping> </web-app>
Client Code:
package com.apr; import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; public class Client { public static void main(String[] args) { JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.getInInterceptors().add(new LoggingInInterceptor()); factory.getOutInterceptors().add(new LoggingOutInterceptor()); factory.setServiceClass(HelloInterface.class); factory.setAddress("http://127.0.0.1:8080/MyWS/HelloWorldWS"); HelloInterface client = (HelloInterface) factory.create(); String reply = client.sayHello("Krishna"); System.out.println("Server said: " + reply); } }
Exception from server log:
2009-11-02 11:10:49,052 INFO [org.jboss.wsf.framework.management.DefaultEndpointRegistry] (HDScanner) register: jboss.ws:context=MyWS,endpoint=HelloWorldWS 2009-11-02 11:10:49,161 INFO [org.jboss.web.tomcat.service.deployers.TomcatDeployment] (HDScanner) deploy, ctxPath=/MyWS 2009-11-02 11:10:49,427 INFO [org.jboss.wsf.stack.jbws.WSDLFilePublisher] (HDScanner) WSDL published to: file:/D:/software/jboss-5.1.0.GA-jdk6/jboss-5.1.0.GA/server/default/data/wsdl/MyWS.war/HelloWorldWSService8985776581610665970.wsdl 2009-11-02 11:13:03,836 ERROR [org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS] (http-127.0.0.1-8080-1) SOAP request exception org.jboss.ws.core.CommonSOAPFaultException: Endpoint {http://com.apr/helloworld}HelloWorldWSPort does not contain operation meta data for: {http://apr.com/}sayHello at org.jboss.ws.core.server.ServiceEndpointInvoker.getDispatchDestination(ServiceEndpointInvoker.java:476) at org.jboss.ws.core.server.ServiceEndpointInvoker.invoke(ServiceEndpointInvoker.java:178) at org.jboss.wsf.stack.jbws.RequestHandlerImpl.processRequest(RequestHandlerImpl.java:474) at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleRequest(RequestHandlerImpl.java:295) at org.jboss.wsf.stack.jbws.RequestHandlerImpl.doPost(RequestHandlerImpl.java:205) at org.jboss.wsf.stack.jbws.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:131) at org.jboss.wsf.common.servlet.AbstractEndpointServlet.service(AbstractEndpointServlet.java:85) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)
Thanks