You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by ra...@jpmchase.com on 2005/08/18 11:09:58 UTC

Error : could not find deserializer while running a client

Hello,

I created a web service and when I try to test it with a test client I am 
getting the following errr 

org.xml.sax.SAXException: Deserializing parameter 'inquiryResponse': could 
not find deserializer for type {urn:DataInquiry2}inquiryResponse

here is my WSDL ..IO ran WSDl2Java to create my web service



<?xml version="1.0" ?>

<definitions name="urn:DataInquiry"
             targetNamespace="urn:DataInquiry2"
             xmlns:tns="urn:DataInquiry2"
             xmlns:typens="urn:DataInquiry2"
             xmlns:xsd="http://www.w3.org/1999/XMLSchema"
             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
             xmlns="http://schemas.xmlsoap.org/wsdl/">

  <!-- type defs -->
  <types>
    <xsd:schema targetNamespace="urn:DataInquiry2"
                xmlns:xsd="http://www.w3.org/1999/XMLSchema">

 
      <xsd:complexType name="inquiryRequest">
        <xsd:all>
            <xsd:element name="sor" type="xsd:string"/>
            <xsd:element name="loanNumber" type="xsd:string"/>
        </xsd:all>
      </xsd:complexType>

      <xsd:complexType name="inquiryResponse">
        <xsd:all>
            <xsd:element name="minNumber" type="xsd:string"/>
            <xsd:element name="momFlag" type="xsd:string"/>
            <xsd:element name="mersQAFlag" type="xsd:string"/>
            <xsd:element name="mersQAFlag" type="xsd:string"/>
        </xsd:all>
      </xsd:complexType>
    </xsd:schema>
  </types>

  <!-- message declns -->
  <message name="empty"/>

 
 

 
   <message name="GetInquiryDataRequest">
    <part name="inquiryRequest" type="typens:inquiryRequest"/>
  </message>

   <message name="GetInquiryDataResponse">
    <part name="inquiryResponse" type="typens:inquiryResponse"/>
  </message>
 
  <!-- port type declns -->
  <portType name="DataInquiry">
 
    <operation name="getInquiryData">
      <input message="tns:GetInquiryDataRequest"/>
      <output message="tns:GetInquiryDataResponse"/>
    </operation>
  </portType>

  <!-- binding declns -->
  <binding name="DataInquirySOAPBinding" type="tns:DataInquiry">
    <soap:binding style="rpc"
                  transport="http://schemas.xmlsoap.org/soap/http"/>
 
    <operation name="getInquiryData">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="encoded"
                   namespace="urn:DataInquiry2"
 encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </input>
      <output>
        <soap:body use="encoded"
                   namespace="urn:DataInquiry2"
 encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
      </output>
    </operation>
  </binding>

  <!-- service decln -->
  <service name="DataInquiryService">
    <port name="DataInquiry" binding="tns:DataInquirySOAPBinding">
      <soap:address 
location="http://localhost:8080/TestInquiryServiceWAR/services/DataInquiry"/>
    </port>
  </service>

</definitions>


Here is my  test Client 



/*
 * Created on Aug 17, 2005
 *
 * To change the template for this generated file go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
package samples.addr;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import com.webservice.datainquiry.*;

public class InquiryServiceTestClient {
 public static void main(String [] args) {
 try {
 //String endpoint = "http://ws.apache.org:5049/axis/services/echo";
   String endpoint = "http://localhost:8080/TestInquiryServiceWAR/services/DataInquiry";

 Service service = new Service();
 Call call = (Call) service.createCall();

 call.setTargetEndpointAddress( new java.net.URL(endpoint) );
 call.setOperationName(new QName("urn:DataInquiry2", "getInquiryData"));

 InquiryRequest inquiryRequest =  new InquiryRequest(); 
 inquiryRequest.setSor("12345"); 
 inquiryRequest.setLoanNumber("123456789");
 InquiryResponse ret = (InquiryResponse) call.invoke(  new Object[] {inquiryRequest}  );

 System.out.println("Sent 'Hello!', got '" + ret + "'");
 } catch (Exception e) {
 System.err.println(e.toString());
 }
 }
 }


Here is my  server config ...


<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns="http://xml.apache.org/axis/wsdd/" 
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
 <globalConfiguration>
  <parameter name="sendMultiRefs" value="true"/>
  <parameter name="disablePrettyXML" value="true"/>
  <parameter name="adminPassword" value="admin"/>
  <parameter name="attachments.Directory" 
value="C:\localWS\workspace_MERS\TestInquiryServiceWAR\WebContent\WEB-INF\attachments"/>
  <parameter name="dotNetSoapEncFix" value="true"/>
  <parameter name="enableNamespacePrefixOptimization" value="true"/>
  <parameter name="sendXMLDeclaration" value="true"/>
  <parameter name="attachments.implementation" 
value="org.apache.axis.attachments.AttachmentsImpl"/>
  <parameter name="sendXsiTypes" value="true"/>
  <requestFlow>
   <handler type="java:org.apache.axis.handlers.JWSHandler">
    <parameter name="scope" value="session"/>
   </handler>
   <handler type="java:org.apache.axis.handlers.JWSHandler">
    <parameter name="scope" value="request"/>
    <parameter name="extension" value=".jwr"/>
   </handler>
  </requestFlow>
 </globalConfiguration>
 <handler name="LocalResponder" 
type="java:org.apache.axis.transport.local.LocalResponder"/>
 <handler name="URLMapper" 
type="java:org.apache.axis.handlers.http.URLMapper"/>
 <handler name="Authenticate" 
type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
 <service name="AdminService" provider="java:MSG">
  <parameter name="allowedMethods" value="AdminService"/>
  <parameter name="enableRemoteAdmin" value="false"/>
  <parameter name="className" value="org.apache.axis.utils.Admin"/>
  <namespace>http://xml.apache.org/axis/wsdd/</namespace>
  <namespace>http://xml.apache.org/axis/wsdd/</namespace>
 </service>
 <service name="Version" provider="java:RPC">
  <parameter name="allowedMethods" value="getVersion"/>
  <parameter name="className" value="org.apache.axis.Version"/>
 </service>
 <service name="DataInquiry" provider="java:RPC">
  <parameter name="wsdlServicePort" value="DataInquiry"/>
  <parameter name="className" 
value="com.webservice.datainquiry.DataInquirySOAPBindingSkeleton"/>
  <parameter name="typeMappingVersion" value="1.2"/>
  <parameter name="allowedMethods" value="*"/>
  <parameter name="wsdlServiceElement" value="DataInquiryService"/>
  <parameter name="wsdlTargetNamespace" value="urn:DataInquiry2"/>
  <parameter name="wsdlPortType" value="DataInquiry"/>
  <parameter name="scope" value="Session"/>
  <parameter name="schemaUnqualified" value="urn:DataInquiry2"/>
  <typeMapping 
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
qname="ns1:inquiryResponse" 
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" 
type="java:com.webservice.datainquiry.InquiryResponse" 
xmlns:ns1="urn:DataInquiry2"/>
  <typeMapping 
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
qname="ns2:inquiryRequest" 
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory" 
type="java:com.webservice.datainquiry.InquiryRequest" 
xmlns:ns2="urn:DataInquiry2"/>
 </service>
 <transport name="http">
  <requestFlow>
   <handler type="URLMapper"/>
   <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
  </requestFlow>
  <parameter name="qs:list" 
value="org.apache.axis.transport.http.QSListHandler"/>
  <parameter name="qs:wsdl" 
value="org.apache.axis.transport.http.QSWSDLHandler"/>
  <parameter name="qs.list" 
value="org.apache.axis.transport.http.QSListHandler"/>
  <parameter name="qs.method" 
value="org.apache.axis.transport.http.QSMethodHandler"/>
  <parameter name="qs:method" 
value="org.apache.axis.transport.http.QSMethodHandler"/>
  <parameter name="qs.wsdl" 
value="org.apache.axis.transport.http.QSWSDLHandler"/>
 </transport>
 <transport name="local">
  <responseFlow>
   <handler type="LocalResponder"/>
  </responseFlow>
 </transport>
</deployment>

Please help me out.

Thanks in advance

Raj

Re: Error : could not find deserializer while running a client

Posted by Anne Thomas Manes <at...@gmail.com>.
Two problems with your WSDL:

#1 - you're using an older version of XML Schema, which Axis doesn't support.
#2 - "name" is a required attribute on all <input> and <output>
definitions (in both portType and binding definitions).

Fix your WSDL and try it again.

(I also suggest that you switch from rpc/encoded to wrapped document/literal)

Anne

ps -- here's your WSDL using wrapped document/literal:

<?xml version="1.0" ?> 

<definitions name="urn:DataInquiry" 
             targetNamespace="urn:DataInquiry2" 
             xmlns:tns="urn:DataInquiry2" 
             xmlns:typens="urn:DataInquiry2" 
             xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
             xmlns="http://schemas.xmlsoap.org/wsdl/"> 

  <!-- type defs --> 
  <types> 
    <xsd:schema targetNamespace="urn:DataInquiry2"> 

      <xsd:element name="getInquiryData" type="typens:inquiryRequest"/>
      <xsd:complexType name="inquiryRequest"> 
        <xsd:sequence> 
            <xsd:element name="sor" type="xsd:string"/> 
            <xsd:element name="loanNumber" type="xsd:string"/> 
        </xsd:sequence> 
      </xsd:complexType> 

      <xsd:element name="getInquiryDataResponse" type="typens:inquiryResponse"/>
      <xsd:complexType name="inquiryResponse"> 
        <xsd:sequence> 
            <xsd:element name="minNumber" type="xsd:string"/> 
            <xsd:element name="momFlag" type="xsd:string"/> 
            <xsd:element name="mersQAFlag" type="xsd:string"/> 
            <xsd:element name="mersQAFlag" type="xsd:string"/> 
        </xsd:sequence> 
      </xsd:complexType> 
    </xsd:schema> 
  </types> 

  <!-- message declns --> 
  <message name="empty"/> 

  
  

  
   <message name="GetInquiryDataRequest"> 
    <part name="parameters" element="typens:getInquiryData"/> 
  </message> 

   <message name="GetInquiryDataResponse"> 
    <part name="parameters" element="typens:getInquiryDataResponse"/> 
  </message> 
  
  <!-- port type declns --> 
  <portType name="DataInquiry"> 
    
    <operation name="getInquiryData"> 
      <input name="input" message="tns:GetInquiryDataRequest"/> 
      <output name="output" message="tns:GetInquiryDataResponse"/> 
    </operation> 
  </portType> 

  <!-- binding declns --> 
  <binding name="DataInquirySOAPBinding" type="tns:DataInquiry"> 
    <soap:binding style="document" 
                  transport="http://schemas.xmlsoap.org/soap/http"/> 
    
    <operation name="getInquiryData"> 
      <soap:operation soapAction=""/> 
      <input name="input"> 
        <soap:body use="literal"/> 
      </input> 
      <output name="output"> 
        <soap:body use="literal"/> 
      </output> 
    </operation> 
  </binding> 

  <!-- service decln --> 
  <service name="DataInquiryService"> 
    <port name="DataInquiry" binding="tns:DataInquirySOAPBinding"> 
      <soap:address
location="http://localhost:8080/TestInquiryServiceWAR/services/DataInquiry"/>
    </port> 
  </service> 

</definitions> 


On 8/18/05, raj.x.arunmugan@jpmchase.com <ra...@jpmchase.com> wrote:
> 
> Hello, 
> 
> I created a web service and when I try to test it with a test client I am
> getting the following errr 
> 
> org.xml.sax.SAXException: Deserializing parameter 'inquiryResponse':  could
> not find deserializer for type
> {urn:DataInquiry2}inquiryResponse 
> 
> here is my WSDL ..IO ran WSDl2Java to create my web service 
> 
> 
> 
> <?xml version="1.0" ?> 
> 
> <definitions name="urn:DataInquiry" 
>              targetNamespace="urn:DataInquiry2" 
>              xmlns:tns="urn:DataInquiry2" 
>              xmlns:typens="urn:DataInquiry2" 
>              xmlns:xsd="http://www.w3.org/1999/XMLSchema" 
>             
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
>              xmlns="http://schemas.xmlsoap.org/wsdl/"> 
> 
>   <!-- type defs --> 
>   <types> 
>     <xsd:schema targetNamespace="urn:DataInquiry2" 
>                
> xmlns:xsd="http://www.w3.org/1999/XMLSchema"> 
> 
>       
>       <xsd:complexType name="inquiryRequest"> 
>         <xsd:all> 
>             <xsd:element name="sor" type="xsd:string"/> 
>             <xsd:element name="loanNumber" type="xsd:string"/> 
>         </xsd:all> 
>       </xsd:complexType> 
> 
>       <xsd:complexType name="inquiryResponse"> 
>         <xsd:all> 
>             <xsd:element name="minNumber" type="xsd:string"/> 
>             <xsd:element name="momFlag" type="xsd:string"/> 
>             <xsd:element name="mersQAFlag" type="xsd:string"/> 
>             <xsd:element name="mersQAFlag" type="xsd:string"/> 
>         </xsd:all> 
>       </xsd:complexType> 
>     </xsd:schema> 
>   </types> 
> 
>   <!-- message declns --> 
>   <message name="empty"/> 
> 
>   
>   
> 
>   
>    <message name="GetInquiryDataRequest"> 
>     <part name="inquiryRequest" type="typens:inquiryRequest"/> 
>   </message> 
> 
>    <message name="GetInquiryDataResponse"> 
>     <part name="inquiryResponse" type="typens:inquiryResponse"/> 
>   </message> 
>   
>   <!-- port type declns --> 
>   <portType name="DataInquiry"> 
>     
>     <operation name="getInquiryData"> 
>       <input message="tns:GetInquiryDataRequest"/> 
>       <output message="tns:GetInquiryDataResponse"/> 
>     </operation> 
>   </portType> 
> 
>   <!-- binding declns --> 
>   <binding name="DataInquirySOAPBinding" type="tns:DataInquiry"> 
>     <soap:binding style="rpc" 
>                  
> transport="http://schemas.xmlsoap.org/soap/http"/> 
>     
>     <operation name="getInquiryData"> 
>       <soap:operation soapAction=""/> 
>       <input> 
>         <soap:body use="encoded" 
>                    namespace="urn:DataInquiry2" 
>                   
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
>       </input> 
>       <output> 
>         <soap:body use="encoded" 
>                    namespace="urn:DataInquiry2" 
>                   
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
>       </output> 
>     </operation> 
>   </binding> 
> 
>   <!-- service decln --> 
>   <service name="DataInquiryService"> 
>     <port name="DataInquiry"
> binding="tns:DataInquirySOAPBinding"> 
>       <soap:address
> location="http://localhost:8080/TestInquiryServiceWAR/services/DataInquiry"/>
>     </port> 
>   </service> 
> 
> </definitions> 
> 
> 
> Here is my  test Client 
> 
> 
> 
> /* 
>  * Created on Aug 17, 2005 
>  * 
>  * To change the template for this generated file go to 
>  * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code
> and Comments 
>  */ 
> package samples.addr; 
> 
> import org.apache.axis.client.Call; 
> import org.apache.axis.client.Service; 
> import javax.xml.namespace.QName; 
> import com.webservice.datainquiry.*; 
> 
> public class InquiryServiceTestClient { 
>  public static void main(String [] args) { 
>  try { 
>  //String endpoint =
> "http://ws.apache.org:5049/axis/services/echo"; 
>    String endpoint =
> "http://localhost:8080/TestInquiryServiceWAR/services/DataInquiry";
> 
>  Service service = new Service(); 
>  Call call = (Call) service.createCall(); 
> 
>  call.setTargetEndpointAddress( new java.net.URL(endpoint) ); 
>  call.setOperationName(new QName("urn:DataInquiry2", "getInquiryData")); 
> 
>  InquiryRequest inquiryRequest =  new InquiryRequest();   
>  inquiryRequest.setSor("12345"); 
>  inquiryRequest.setLoanNumber("123456789"); 
>  InquiryResponse ret = (InquiryResponse) call.invoke(  new Object[]
> {inquiryRequest}  ); 
> 
>  System.out.println("Sent 'Hello!', got '" + ret + "'"); 
>  } catch (Exception e) { 
>  System.err.println(e.toString()); 
>  } 
>  } 
>  } 
> 
> 
> Here is my  server config ... 
> 
> 
> <?xml version="1.0" encoding="UTF-8"?> 
> <deployment xmlns="http://xml.apache.org/axis/wsdd/"
> xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
>  <globalConfiguration> 
>   <parameter name="sendMultiRefs" value="true"/> 
>   <parameter name="disablePrettyXML" value="true"/> 
>   <parameter name="adminPassword" value="admin"/> 
>   <parameter name="attachments.Directory"
> value="C:\localWS\workspace_MERS\TestInquiryServiceWAR\WebContent\WEB-INF\attachments"/>
>   <parameter name="dotNetSoapEncFix" value="true"/> 
>   <parameter name="enableNamespacePrefixOptimization"
> value="true"/> 
>   <parameter name="sendXMLDeclaration" value="true"/> 
>   <parameter name="attachments.implementation"
> value="org.apache.axis.attachments.AttachmentsImpl"/> 
>   <parameter name="sendXsiTypes" value="true"/> 
>   <requestFlow> 
>    <handler
> type="java:org.apache.axis.handlers.JWSHandler"> 
>     <parameter name="scope" value="session"/> 
>    </handler> 
>    <handler
> type="java:org.apache.axis.handlers.JWSHandler"> 
>     <parameter name="scope" value="request"/> 
>     <parameter name="extension" value=".jwr"/> 
>    </handler> 
>   </requestFlow> 
>  </globalConfiguration> 
>  <handler name="LocalResponder"
> type="java:org.apache.axis.transport.local.LocalResponder"/>
>  <handler name="URLMapper"
> type="java:org.apache.axis.handlers.http.URLMapper"/> 
>  <handler name="Authenticate"
> type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
>  <service name="AdminService" provider="java:MSG"> 
>   <parameter name="allowedMethods" value="AdminService"/> 
>   <parameter name="enableRemoteAdmin" value="false"/> 
>   <parameter name="className" value="org.apache.axis.utils.Admin"/> 
>   <namespace>http://xml.apache.org/axis/wsdd/</namespace> 
>   <namespace>http://xml.apache.org/axis/wsdd/</namespace> 
>  </service> 
>  <service name="Version" provider="java:RPC"> 
>   <parameter name="allowedMethods" value="getVersion"/> 
>   <parameter name="className" value="org.apache.axis.Version"/> 
>  </service> 
>  <service name="DataInquiry" provider="java:RPC"> 
>   <parameter name="wsdlServicePort" value="DataInquiry"/> 
>   <parameter name="className"
> value="com.webservice.datainquiry.DataInquirySOAPBindingSkeleton"/>
>   <parameter name="typeMappingVersion" value="1.2"/> 
>   <parameter name="allowedMethods" value="*"/> 
>   <parameter name="wsdlServiceElement" value="DataInquiryService"/> 
>   <parameter name="wsdlTargetNamespace" value="urn:DataInquiry2"/> 
>   <parameter name="wsdlPortType" value="DataInquiry"/> 
>   <parameter name="scope" value="Session"/> 
>   <parameter name="schemaUnqualified" value="urn:DataInquiry2"/> 
>   <typeMapping
> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> qname="ns1:inquiryResponse"
> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
> type="java:com.webservice.datainquiry.InquiryResponse"
> xmlns:ns1="urn:DataInquiry2"/> 
>   <typeMapping
> deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
> encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
> qname="ns2:inquiryRequest"
> serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
> type="java:com.webservice.datainquiry.InquiryRequest"
> xmlns:ns2="urn:DataInquiry2"/> 
>  </service> 
>  <transport name="http"> 
>   <requestFlow> 
>    <handler type="URLMapper"/> 
>    <handler
> type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
>   </requestFlow> 
>   <parameter name="qs:list"
> value="org.apache.axis.transport.http.QSListHandler"/> 
>   <parameter name="qs:wsdl"
> value="org.apache.axis.transport.http.QSWSDLHandler"/> 
>   <parameter name="qs.list"
> value="org.apache.axis.transport.http.QSListHandler"/> 
>   <parameter name="qs.method"
> value="org.apache.axis.transport.http.QSMethodHandler"/> 
>   <parameter name="qs:method"
> value="org.apache.axis.transport.http.QSMethodHandler"/> 
>   <parameter name="qs.wsdl"
> value="org.apache.axis.transport.http.QSWSDLHandler"/> 
>  </transport> 
>  <transport name="local"> 
>   <responseFlow> 
>    <handler type="LocalResponder"/> 
>   </responseFlow> 
>  </transport> 
> </deployment> 
> 
> Please help me out. 
> 
> Thanks in advance 
> 
> Raj