2 Replies Latest reply on Aug 8, 2007 4:44 PM by freak hagga

    A problem with complexType

    David Edery Newbie

      Hello
      I'v created a webservice using the following technologies:
      jboss-4.0.5.GA
      jbossws-native-2.0.0.GA
      jdk1.5.0_09


      At first, the webservice had only simple-type-parameter functions and everything worked well (deployment and usage of the webservice)
      When i tried (for stress purposes) to add a complex (a class) as a parameter to the stress function, the client i'v created did not succeed in creating the webservice anymore telling me that it can't find the class i'm using.

      I'v taken a step back, and created (using the wsconsume tool) the relevant code for my application, and used the generated code in the server and client side. It didn't help.

      Below you can find the exception thrown at the client side and the .wsdl file which is loaded directly from JBoss (using the http://localhost:8080/myTest/Topology?wsdl address).

      If more information is needed, i'd be happy to supply it.

      I can really use some help about that.
      Thanks allot
      David Edery.

      The exception from the client:

      org.jboss.ws.WSException: Cannot obtain java type mapping for: {http://myTest/}myType
       at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCMetaDataBuilder.buildInputParameter(JAXRPCMetaDataBuilder.java:266)
       at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCMetaDataBuilder.buildParameterMetaDataRpc(JAXRPCMetaDataBuilder.java:566)
       at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCMetaDataBuilder.setupOperationsFromWSDL(JAXRPCMetaDataBuilder.java:210)
       at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCClientMetaDataBuilder.buildMetaDataInternal(JAXRPCClientMetaDataBuilder.java:217)
       at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCClientMetaDataBuilder.buildMetaData(JAXRPCClientMetaDataBuilder.java:134)
       at org.jboss.ws.metadata.builder.jaxrpc.JAXRPCClientMetaDataBuilder.buildMetaData(JAXRPCClientMetaDataBuilder.java:86)
       at org.jboss.ws.core.jaxrpc.client.ServiceImpl.<init>(ServiceImpl.java:111)
       at org.jboss.ws.core.jaxrpc.client.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:157)
       at org.jboss.ws.core.jaxrpc.client.ServiceFactoryImpl.createService(ServiceFactoryImpl.java:128)
       at topologyClient.Client.createWebServiceInterface(Client.java:24)
       at topologyClient.Client.checkWebServiceInterface(Client.java:130)
      

      The wsdl file:
      <definitions name='TopologyService' targetNamespace='http://myTest/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://myTest/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
       <types>
       <xs:schema targetNamespace='http://myTest/' version='1.0' xmlns:tns='http://myTest/' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
       <xs:complexType name='MyType'>
       <xs:sequence>
       <xs:element minOccurs='0' name='_str' type='xs:string'/>
       <xs:element name='_lng' type='xs:long'/>
       <xs:element name='_bool' type='xs:boolean'/>
       <xs:element minOccurs='0' name='_myType' type='tns:MyType'/>
       </xs:sequence>
       </xs:complexType>
       </xs:schema>
       </types>
      
       <message name='ITopologyWebservice_stressCheckComplexResponse'>
       <part name='return' type='tns:MyType'></part>
       </message>
      
       <message name='ITopologyWebservice_stressCheckComplex'>
       <part name='my_type' type='tns:MyType'></part>
       </message>
      
       <message name='ITopologyWebservice_stressCheck'>
       <part name='initiator' type='xsd:string'></part>
       </message>
      
       <message name='ITopologyWebservice_stressCheckResponse'>
       <part name='return' type='xsd:long'></part>
       </message>
      
       <portType name='ITopologyWebservice'>
       <operation name='stressCheck' parameterOrder='initiator'>
       <input message='tns:ITopologyWebservice_stressCheck'></input>
       <output message='tns:ITopologyWebservice_stressCheckResponse'></output>
       </operation>
      
       <operation name='stressCheckComplex' parameterOrder='my_type'>
       <input message='tns:ITopologyWebservice_stressCheckComplex'></input>
       <output message='tns:ITopologyWebservice_stressCheckComplexResponse'></output>
       </operation>
       </portType>
      
       <binding name='ITopologyWebserviceBinding' type='tns:ITopologyWebservice'>
       <soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/>
       <operation name='stressCheck'>
       <soap:operation soapAction=''/>
       <input>
       <soap:body namespace='http://myTest/' use='literal'/>
       </input>
       <output>
       <soap:body namespace='http://myTest/' use='literal'/>
       </output>
       </operation>
       <operation name='stressCheckComplex'>
       <soap:operation soapAction=''/>
       <input>
       <soap:body namespace='http://myTest/' use='literal'/>
       </input>
       <output>
       <soap:body namespace='http://myTest/' use='literal'/>
       </output>
       </operation>
       </binding>
      
       <service name='TopologyService'>
       <port binding='tns:ITopologyWebserviceBinding' name='TopologyPort'>
       <soap:address location='http://localhost:8080/myTest/Topology'/>
       </port>
       </service>
      
      </definitions>