Hi Folks I am trying to resolve a problem a few days and I am stuck here. I am relatively new to webservices and trying to figure out what is the problem. I am using JBoss 4.0.5 GA which has bundled JBossWS 1.4. When I run a webservice client I get an error. Note: I have used "+++" to seperate peices of Source Code
Will appreciate if some one could point me to the problem. I am assuming that there is a problem is with some mapping file ,because I am able to invoke the sayHello method via the second method . Also I read same kind of problem faced by another person,but had no reply posted http://lists.jboss.org/pipermail/jbossws-users/2007-January/001196.html Note - I picked up the server code from example stated in the URL below http://www.soapui.org/jbossws/topdown_example.html Thanks a ton in advance +++++++++++++++++++++++++++++++++++ ERROR +++++++++++++++++++++++++++++++++++ Contacting webservice at http://localhost:8080/HelloWorld output:Hello How are you, Kapilesh! Exception in thread "main" javax.xml.rpc.JAXRPCException: Cannot obtain operation meta data for: {http://localhost:8080/HelloWorld}sayHello at org.jboss.ws.jaxrpc.CallImpl.getOperationMetaData(CallImpl.java:840) at org.jboss.ws.jaxrpc.CallImpl.getOperationMetaData(CallImpl.java:820) at org.jboss.ws.jaxrpc.CallImpl.invokeInternal(CallImpl.java:618) at org.jboss.ws.jaxrpc.CallImpl.invoke(CallImpl.java:404) at helloworld.client.HelloClient.main(HelloClient.java:50) +++++++++++++++++++++++++++++++++++++++++++++ I am invoking the webservice in 2 ways . One fetching the remote interface and one use a CallImpl My client code is as follows :- +++++++++++++++++++++++++++++++++++++++++++++++ package helloworld.client; import helloworld.*; import javax.xml.rpc.Service; import javax.xml.rpc.Call; import javax.xml.rpc.ServiceFactory; import org.jboss.ws.jaxrpc.ServiceImpl; import org.jboss.ws.jaxrpc.CallImpl; import org.jboss.ws.jaxrpc.encoding.*; import javax.xml.namespace.QName; import java.net.URL; public class HelloClient { public static void main(String[] args) throws Exception { String TARGET_NAMESPACE = "http://localhost:8080/HelloWorld"; String argument = "Kapilesh"; System.out.println("Contacting webservice at " + TARGET_NAMESPACE ); ServiceFactory factory = ServiceFactory.newInstance(); URL wsdlLoction = new URL(TARGET_NAMESPACE+"?wsdl"); QName serviceName = new QName(TARGET_NAMESPACE, "HelloWorldService"); ServiceImpl service = (ServiceImpl)factory.createService(wsdlLoction, serviceName); QName operationName = new QName(TARGET_NAMESPACE, "sayHello"); //first method IHelloWorld hello = (IHelloWorld) service.getPort(IHelloWorld.class); // System.out.println("hello.hello(" + argument + ")"); System.out.println("output:" + hello.sayHello(argument)); CallImpl call = (CallImpl)service.createCall(); call.setOperationName(operationName); // System.out.println(call.isParameterAndReturnSpecRequired(operationName)); // second method Object retObj = call.invoke(new Object[]{argument}); } } +++++++++++++++++++++++++++++++++++++++++++++++ I have deployed a webservice on a server and I am able to deploy it sucessfully... 15:08:30,968 WARN [PortComponentMetaData] <wsdl-port> element in webservices.xml not namespace qualified: HelloWorldPort 15:08:31,437 WARN [JSR109ServerMetaDataBuilder] Adding wsdl targetNamespace to: {http://localhost:8080/HelloWorld/}HelloWorldPort 15:08:31,812 INFO [TomcatDeployer] deploy, ctxPath=/HelloWorld, warUrl=.../tmp/deploy/tmp52320HelloWorld-exp.war/ 15:08:32,062 INFO [WSDLFilePublisher] WSDL published to: file:/C:/jboss-4.0.5.GA/server/default/data/wsdl/HelloWorld.war/HelloWorld.wsdl 15:08:32,093 INFO [ServiceEndpointManager] WebService started: http://localhost:8080/HelloWorld ++++++++++++++++++++++++++++++++++++++++++++++++ On the server side I have the following files deployed WEB-INF/classes/helloworld/HelloWorldService.class WEB-INF/classes/helloworld/IHelloWorld.class WEB-INF/classes/helloworld/impl/HelloWorld.class WEB-INF/classes/HelloWorld-mapping.xml WEB-INF/HelloWorld-mapping.xml WEB-INF/jaxrpc-mapping.xml WEB-INF/web.xml WEB-INF/webservices.xml WEB-INF/wsdl/HelloWorld.wsdl ++++++++++++++++++++++++++++++++++++++++++++++ webservices.xml ++++++++++++++++++++++++++++++++++++++++++++++ <?xml version="1.0" encoding="UTF-8"?> <webservices version="1.1" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:impl="http://localhost:8080/HelloWorld/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <webservice-description> <webservice-description-name>HelloWorld</webservice-description-name> <wsdl-file>WEB-INF/wsdl/HelloWorld.wsdl</wsdl-file> <jaxrpc-mapping-file>WEB-INF/HelloWorld-mapping.xml</jaxrpc-mapping-file> <port-component> <port-component-name>IHelloWorldPort</port-component-name> <wsdl-port>HelloWorldPort</wsdl-port> <service-endpoint-interface>helloworld.IHelloWorld</service-endpoint-interface> <service-impl-bean> <servlet-link>HelloWorld</servlet-link> </service-impl-bean> </port-component> </webservice-description> ++++++++++++++++++++++++++++++++++++++++++++++++ web.xml ++++++++++++++++++++++++++++++++++++++++++++++++ <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"> <servlet-name>HelloWorld</servlet-name> <servlet-class>helloworld.impl.HelloWorld</servlet-class> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> </web-app> ++++++++++++++++++++++++++++++++++++++++++++++++ jax-rpc-mapping.xml ++++++++++++++++++++++++++++++++++++++++++++++++ <?xml version="1.0" encoding="UTF-8"?> <java-wsdl-mapping version="1.1" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <package-mapping> <package-type>helloworld</package-type> http://localhost:8080/HelloWorld/ </package-mapping><service-interface-mapping> <service-interface>helloworld.HelloWorld</service-interface> <wsdl-service-name xmlns:serviceNS="http://localhost:8080/HelloWorld/">serviceNS:HelloWorld</wsdl-service-name> <port-mapping> <port-name>IHelloWorldPort</port-name> <java-port-name>IHelloWorldPort</java-port-name> </port-mapping> </service-interface-mapping><service-endpoint-interface-mapping> <service-endpoint-interface>helloworld.IHelloWorld</service-endpoint-interface> <wsdl-port-type xmlns:portTypeNS="http://localhost:8080/HelloWorld/">portTypeNS:IHelloWorld</wsdl-port-type> <wsdl-binding xmlns:bindingNS="http://localhost:8080/HelloWorld/">bindingNS:IHelloWorldBinding</wsdl-binding> <service-endpoint-method-mapping> <java-method-name>sayHello</java-method-name> <wsdl-operation>sayHello</wsdl-operation> <method-param-parts-mapping> <param-position>0</param-position> <param-type>java.lang.String</param-type> <wsdl-message-mapping> <wsdl-message xmlns:wsdlMsgNS="http://localhost:8080/HelloWorld/">wsdlMsgNS:IHelloWorld_sayHello</wsdl-message> <wsdl-message-part-name>String_1</wsdl-message-part-name> <parameter-mode>IN</parameter-mode> </wsdl-message-mapping> </method-param-parts-mapping> <wsdl-return-value-mapping> <method-return-value>java.lang.String</method-return-value> <wsdl-message xmlns:wsdlMsgNS="http://localhost:8080/HelloWorld/">wsdlMsgNS:IHelloWorld_sayHelloResponse</wsdl-message> <wsdl-message-part-name>result</wsdl-message-part-name> </wsdl-return-value-mapping> </service-endpoint-method-mapping> </service-endpoint-interface-mapping></java-wsdl-mapping> ++++++++++++++++++++++++++++++++++++++++++++++++ HelloWorld-mapping.xml ++++++++++++++++++++++++++++++++++++++++++++++++ <?xml version='1.0' encoding='UTF-8'?><java-wsdl-mapping version='1.1' 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 '> <package-mapping> <package-type>helloworld</package-type> http://localhost:8080/HelloWorld/ </package-mapping> <service-interface-mapping> <service-interface>helloworld.HelloWorldService</service-interface> <wsdl-service-name xmlns:serviceNS='http://localhost:8080/HelloWorld/'>serviceNS:HelloWorldService</wsdl-service-name> <port-mapping> <port-name>HelloWorldPort</port-name> <java-port-name>HelloWorldPort</java-port-name> </port-mapping> </service-interface-mapping> <service-endpoint-interface-mapping> <service-endpoint-interface>helloworld.IHelloWorld</service-endpoint-interface> <wsdl-port-type xmlns:portTypeNS='http://localhost:8080/HelloWorld/'>portTypeNS:IHelloWorld</wsdl-port-type> <wsdl-binding xmlns:bindingNS='http://localhost:8080/HelloWorld/'>bindingNS:HelloWorld</wsdl-binding> <service-endpoint-method-mapping> <java-method-name>sayHello</java-method-name> <wsdl-operation>sayHello</wsdl-operation> <method-param-parts-mapping> <param-position>0</param-position> <param-type>java.lang.String</param-type> <wsdl-message-mapping> <wsdl-message xmlns:wsdlMsgNS='http://localhost:8080/HelloWorld/'>wsdlMsgNS:sayHelloRequest</wsdl-message> <wsdl-message-part-name>sayHelloRequest</wsdl-message-part-name> <parameter-mode>IN</parameter-mode> </wsdl-message-mapping> </method-param-parts-mapping> <wsdl-return-value-mapping> <method-return-value>java.lang.String</method-return-value> <wsdl-message xmlns:wsdlMsgNS='http://localhost:8080/HelloWorld/'>wsdlMsgNS:sayHelloResponse</wsdl-message> <wsdl-message-part-name>sayHelloResponse</wsdl-message-part-name> </wsdl-return-value-mapping> </service-endpoint-method-mapping> </service-endpoint-interface-mapping> </java-wsdl-mapping> ++++++++++++++++++++++++++++++++++++++++++++++++ HelloWorld.wsdl ++++++++++++++++++++++++++++++++++++++++++++++++ <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions name="HelloWorld" targetNamespace="http://localhost:8080/HelloWorld/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://localhost:8080/HelloWorld/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"> <wsdl:types/> <wsdl:message name="sayHelloRequest"> <wsdl:part name="sayHelloRequest" type="xsd:string"></wsdl:part> </wsdl:message> <wsdl:message name="sayHelloResponse"> <wsdl:part name="sayHelloResponse" type="xsd:string"></wsdl:part> </wsdl:message> <wsdl:portType name="IHelloWorld"> <wsdl:operation name="sayHello"> <wsdl:input message="tns:sayHelloRequest"></wsdl:input> <wsdl:output message="tns:sayHelloResponse"></wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="HelloWorld" type="tns:IHelloWorld"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="sayHello"> <soap:operation soapAction="http://localhost:8080/HelloWorld/sayHello" /> <wsdl:input> <soap:body use="literal" namespace="http://localhost:8080/HelloWorld/" /> </wsdl:input> <wsdl:output> <soap:body use="literal" namespace="http://localhost:8080/HelloWorld/" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="HelloWorldService"> <wsdl:port name="HelloWorldPort" binding="tns:HelloWorld"> <soap:address location="http://localhost:8080/HelloWorld" /> </wsdl:port> </wsdl:service> </wsdl:definitions> +++++++++++++++++++++++++++++++++++++++++++++++ My Java Class Files are as follows :- /* * JBoss, the OpenSource EJB server * Distributable under LGPL license. See terms of license at gnu.org. */ //Auto Generated by jbossws - Please do not edit!!! package helloworld; import javax.xml.rpc.*; public interface HelloWorldService extends javax.xml.rpc.Service { public helloworld.IHelloWorld getHelloWorldPort() throws ServiceException; } +++++++++++++++++++++++++++++++++++ /* * JBossWS WS-Tools Generated Source * * Generation Date: Mon Jun 04 14:47:16 IST 2007 * * This generated source code represents a derivative work of the input to * the generator that produced it. Consult the input for the copyright and * terms of use that apply to this source code. */ package helloworld; public interface IHelloWorld extends java.rmi.Remote { public java.lang.String sayHello(java.lang.String sayHelloRequest) throws java.rmi.RemoteException; } +++++++++++++++++++++++++++++++++++++++++++++ HelloWorld.java ++++++++++++++++++++++++++++++++++ package helloworld.impl; import helloworld.IHelloWorld; public class HelloWorld implements IHelloWorld { public String sayHello(String sayHelloRequest) { return "Hello How are you, " + sayHelloRequest + "!"; } } View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4050878#4050878 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4050878 _______________________________________________ jboss-user mailing list [email protected] https://lists.jboss.org/mailman/listinfo/jboss-user
