Hi this is my problem, i hope someone help me...

i'm trying to deploy a simple web service that returns a complex Object.

The class that I want to return is:
package esempio;
  | 
  | public class TestClass {
  |     private String name;
  |     public TestClass() {
  |     }
  | 
  |     public String getName() {
  |             return name;
  |     }
  |     public void setName(String name) {
  |             System.out.println("settato il nome: "+name);
  |             this.name = name;
  |     }
  | }
  | 

and this is the service class I wrote:

package esempio;
  | 
  | import javax.ejb.Stateless;
  | import javax.jws.WebMethod;
  | import javax.jws.WebParam;
  | import javax.jws.WebResult;
  | import javax.jws.WebService;
  | import javax.jws.soap.SOAPBinding;
  | 
  | @WebService(targetNamespace="urn:testws")
  | @SOAPBinding(style= SOAPBinding.Style.DOCUMENT)
  | @Stateless(name="provaServizio")
  | public class ProvaServizioImpl  {
  |     @WebMethod
  |     @WebResult(name="testClassResult")
  |     public TestClass getTestClass(
  |                     @WebParam(name = "nome") String name) {
  |             TestClass ritorno = new TestClass();
  |             ritorno.setName(name);
  |             return ritorno;
  |     }
  | }
  | 
I packaged this two classe in a jar that I named "ws2.jar" and copied this jar 
in jboss 4.05GA server/default/deploy folder.

The service seems deployed, because if put the address 
"localhost:8080/ws2/provaServizio?wsdl" on a browser it returns this WSDL:

<definitions name="ProvaServizioImplService" targetNamespace="urn:testws">
  |     <types>
  |     <schema elementFormDefault="qualified" 
targetNamespace="http://esempio/jaws";>
  | <import namespace="urn:testws"/>
  |     <complexType name="TestClass">
  |     <sequence>
  | <element name="name" nillable="true" type="string"/>
  | </sequence>
  | </complexType>
  | </schema>
  |     <schema elementFormDefault="qualified" targetNamespace="urn:testws">
  | <import namespace="http://esempio/jaws"/>
  |     <complexType name="getTestClass">
  |     <sequence>
  | <element name="nome" nillable="true" type="string"/>
  | </sequence>
  | </complexType>
  |     <complexType name="getTestClassResponse">
  |     <sequence>
  | <element name="testClassResult" nillable="true" type="ns2:TestClass"/>
  | </sequence>
  | </complexType>
  | <element name="getTestClass" type="tns:getTestClass"/>
  | <element name="getTestClassResponse" type="tns:getTestClassResponse"/>
  | </schema>
  | </types>
  |     <message name="ProvaServizioImpl_getTestClass">
  | <part element="tns:getTestClass" name="parameters"/>
  | </message>
  |     <message name="ProvaServizioImpl_getTestClassResponse">
  | <part element="tns:getTestClassResponse" name="result"/>
  | </message>
  |     <portType name="ProvaServizioImpl">
  |     <operation name="getTestClass">
  | <input message="tns:ProvaServizioImpl_getTestClass"/>
  | <output message="tns:ProvaServizioImpl_getTestClassResponse"/>
  | </operation>
  | </portType>
  |     <binding name="ProvaServizioImplBinding" type="tns:ProvaServizioImpl">
  | <soap:binding style="document" 
transport="http://schemas.xmlsoap.org/soap/http"/>
  |     <operation name="getTestClass">
  | <soap:operation soapAction=""/>
  |     <input>
  | <soap:body use="literal"/>
  | </input>
  |     <output>
  | <soap:body use="literal"/>
  | </output>
  | </operation>
  | </binding>
  |     <service name="ProvaServizioImplService">
  |     <port binding="tns:ProvaServizioImplBinding" 
name="ProvaServizioImplPort">
  | <soap:address location="http://sviluppo-012:8080/ws2/provaServizio"/>
  | </port>
  | </service>
  | </definitions>
  | 

So I think the service is working.

Then I wrote this simple Client, including in its classpath the jar containing 
the TestClass file:

import java.net.URL;
  | 
  | import javax.naming.Context;
  | import javax.xml.namespace.QName;
  | import javax.xml.rpc.Service;
  | import javax.xml.rpc.ServiceFactory;
  | import esempio.ProvaServizioImpl;
  | import esempio.TestClass;
  | 
  | public class Client {
  |     public static void main(String[] args) throws Exception {
  | 
  |             System.out.println("Start"); 
  |                     
  |             ServiceFactory factory= ServiceFactory.newInstance();
  |             
  |             Service factoryTest = factory.createService(new 
URL("http://localhost:8080/ws2/provaServizio?wsdl";),
  |                             new QName("http://esempio/jaws";, 
"ProvaServizioImplService"));
  |             ProvaServizioImpl proxyTest  = 
(ProvaServizioImpl)factoryTest.getPort(ProvaServizioImpl.class);
  |     
  |             TestClass ritorno = (TestClass)proxyTest.getTestClass("test");
  |             
  |             System.out.println("ritorno del secondo servizio 
"+ritorno.getName());
  |     }
  | }
  | 

Running the Client it returns this error:
"
Exception in thread "main" org.jboss.ws.WSException: Cannot obtain java type 
mapping for: {urn:testws}getTestClass
        at 
org.jboss.ws.deployment.JSR109MetaDataBuilder.buildParameterMetaDataDoc(JSR109MetaDataBuilder.java:451)
        at 
org.jboss.ws.deployment.JSR109MetaDataBuilder.setupOperationsFromWSDL(JSR109MetaDataBuilder.java:200)
        at 
org.jboss.ws.deployment.JSR109ClientMetaDataBuilder.buildMetaDataInternal(JSR109ClientMetaDataBuilder.java:208)
        at 
org.jboss.ws.deployment.JSR109ClientMetaDataBuilder.buildMetaData(JSR109ClientMetaDataBuilder.java:126)
        at 
org.jboss.ws.deployment.JSR109ClientMetaDataBuilder.buildMetaData(JSR109ClientMetaDataBuilder.java:82)
        at org.jboss.ws.jaxrpc.ServiceImpl.(ServiceImpl.java:96)
        at 
org.jboss.ws.jaxrpc.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:157)
        at 
org.jboss.ws.jaxrpc.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:128)
        at Client.main(Client.java:19)
"

Now i know that there is error in mapping but i dont know if i wrong something 
in client or if i need some kind of configuration file(xml).

I read thousands over thousands of examples about WS and clients, but I'm 
confused... using EJB3 i must generate some mapping file?
In which way?
I read examples that just return primitives types, but never complex Object 
types...

Can u help me pls?

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4059850#4059850

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4059850
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to