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 Espen Falkevik <sp...@yahoo.com> on 2006/12/07 14:59:59 UTC

java.lang.ClassCastException

Hi.
I have a webservice with that takes a string in and returns a object. When I use my client I get the followin exception:
When I use my client (which uses the stub files generated by WSDL2Java) I get the following exception:

Exception in thread "main" java.lang.ClassCastException: ws.OrderAttributeTO

        at ws.PresentSoapBindingStub.findOrderDetails(PresentSoapBindingStub.java:165)

        at webservice.PresentationClient.main(PresentationClient.java:31)

Any help would be appreciated



I use the Java2WSDL to generate the wsdl file (attached below):
<?xml version="1.0" encoding="UTF-8"?>

<!--WSDL created by Apache Axis version: 1.4
Built on Apr 22, 2006 (06:55:48 PDT)-->
 <wsdl:types>
  
   http://schemas.xmlsoap.org/soap/encoding/"/>
   <complexType name="OrderAttributeTO">
    <sequence>
     <element name="name" nillable="true" type="soapenc:string"/>
     <element name="value" nillable="true" type="soapenc:string"/>
    </sequence>
   </complexType>
  </schema>
 </wsdl:types>

   <wsdl:message name="findOrderDetailsResponse">

      <wsdl:part name="findOrderDetailsReturn" type="tns2:OrderAttributeTO"/>

   </wsdl:message>

   <wsdl:message name="findOrderDetailsRequest">

      <wsdl:part name="in0" type="soapenc:string"/>

   </wsdl:message>

   <wsdl:portType name="IOrderPresentation">

      <wsdl:operation name="findOrderDetails" parameterOrder="in0">

         <wsdl:input message="impl:findOrderDetailsRequest" name="findOrderDetailsRequest"/>

         <wsdl:output message="impl:findOrderDetailsResponse" name="findOrderDetailsResponse"/>

      </wsdl:operation>

   </wsdl:portType>

   <wsdl:binding name="presentSoapBinding" type="impl:IOrderPresentation">

      http://schemas.xmlsoap.org/soap/http"/>

      <wsdl:operation name="findOrderDetails">

         <wsdlsoap:operation soapAction=""/>

         <wsdl:input name="findOrderDetailsRequest">

            

         </wsdl:input>

         <wsdl:output name="findOrderDetailsResponse">

            

         </wsdl:output>

      </wsdl:operation>

   </wsdl:binding>

   <wsdl:service name="IOrderPresentationService">

      <wsdl:port binding="impl:presentSoapBinding" name="present">

         http://localhost:7001/axis/services/present"/>

      </wsdl:port>

   </wsdl:service>

</wsdl:definitions>




My presentation client:
ws.IOrderPresentationService service = new ws.IOrderPresentationServiceLocator();


        // Now use the service to get a stub which implements the SDI.
        ws.IOrderPresentation iOrderPresentation = service.getpresent();

        // Make the actual call       
        OrderAttributeTO ob = iOrderPresentation.findOrderDetails("2"); //GET THE ERROR HERE


The PresentSoapBindingStub.java: (the exception happens when returning the object (in the catch at the bottom of the code)

/**
 * PresentSoapBindingStub.java
 *
 * This file was auto-generated from WSDL
 * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
 */

package presentation;

public class PresentSoapBindingStub extends org.apache.axis.client.Stub implements presentation.IOrderPresentation {
    private java.util.Vector cachedSerClasses = new java.util.Vector();
    private java.util.Vector cachedSerQNames = new java.util.Vector();
    private java.util.Vector cachedSerFactories = new java.util.Vector();
    private java.util.Vector cachedDeserFactories = new java.util.Vector();

    static org.apache.axis.description.OperationDesc [] _operations;

    static {
        _operations = new org.apache.axis.description.OperationDesc[1];
        _initOperationDesc1();
    }

    private static void _initOperationDesc1(){
        org.apache.axis.description.OperationDesc oper;
        org.apache.axis.description.ParameterDesc param;
        oper = new org.apache.axis.description.OperationDesc();
        oper.setName("findOrderDetails");
        param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "in0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false);
        oper.addParameter(param);
        oper.setReturnType(new javax.xml.namespace.QName("http://order.dto.om.edb.com", "OrderAttributeTO"));
        oper.setReturnClass(com.edb.om.dto.order.OrderAttributeTO.class);
        oper.setReturnQName(new javax.xml.namespace.QName("", "findOrderDetailsReturn"));
        oper.setStyle(org.apache.axis.constants.Style.RPC);
        oper.setUse(org.apache.axis.constants.Use.ENCODED);
        _operations[0] = oper;

    }

    public PresentSoapBindingStub() throws org.apache.axis.AxisFault {
         this(null);
    }

    public PresentSoapBindingStub(java.net.URL endpointURL, javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
         this(service);
         super.cachedEndpoint = endpointURL;
    }

    public PresentSoapBindingStub(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
        if (service == null) {
            super.service = new org.apache.axis.client.Service();
        } else {
            super.service = service;
        }
        ((org.apache.axis.client.Service)super.service).setTypeMappingVersion("1.2");
            java.lang.Class cls;
            javax.xml.namespace.QName qName;
            javax.xml.namespace.QName qName2;
            java.lang.Class beansf = org.apache.axis.encoding.ser.BeanSerializerFactory.class;
            java.lang.Class beandf = org.apache.axis.encoding.ser.BeanDeserializerFactory.class;
            java.lang.Class enumsf = org.apache.axis.encoding.ser.EnumSerializerFactory.class;
            java.lang.Class enumdf = org.apache.axis.encoding.ser.EnumDeserializerFactory.class;
            java.lang.Class arraysf = org.apache.axis.encoding.ser.ArraySerializerFactory.class;
            java.lang.Class arraydf = org.apache.axis.encoding.ser.ArrayDeserializerFactory.class;
            java.lang.Class simplesf = org.apache.axis.encoding.ser.SimpleSerializerFactory.class;
            java.lang.Class simpledf = org.apache.axis.encoding.ser.SimpleDeserializerFactory.class;
            java.lang.Class simplelistsf = org.apache.axis.encoding.ser.SimpleListSerializerFactory.class;
            java.lang.Class simplelistdf = org.apache.axis.encoding.ser.SimpleListDeserializerFactory.class;
            qName = new javax.xml.namespace.QName("http://order.dto.om.edb.com", "OrderAttributeTO");
            cachedSerQNames.add(qName);
            cls = com.edb.om.dto.order.OrderAttributeTO.class;
            cachedSerClasses.add(cls);
            cachedSerFactories.add(beansf);
            cachedDeserFactories.add(beandf);

    }

    protected org.apache.axis.client.Call createCall() throws java.rmi.RemoteException {
        try {
            org.apache.axis.client.Call _call = super._createCall();
            if (super.maintainSessionSet) {
                _call.setMaintainSession(super.maintainSession);
            }
            if (super.cachedUsername != null) {
                _call.setUsername(super.cachedUsername);
            }
            if (super.cachedPassword != null) {
                _call.setPassword(super.cachedPassword);
            }
            if (super.cachedEndpoint != null) {
                _call.setTargetEndpointAddress(super.cachedEndpoint);
            }
            if (super.cachedTimeout != null) {
                _call.setTimeout(super.cachedTimeout);
            }
            if (super.cachedPortName != null) {
                _call.setPortName(super.cachedPortName);
            }
            java.util.Enumeration keys = super.cachedProperties.keys();
            while (keys.hasMoreElements()) {
                java.lang.String key = (java.lang.String) keys.nextElement();
                _call.setProperty(key, super.cachedProperties.get(key));
            }
            // All the type mapping information is registered
            // when the first call is made.
            // The type mapping information is actually registered in
            // the TypeMappingRegistry of the service, which
            // is the reason why registration is only needed for the first call.
            synchronized (this) {
                if (firstCall()) {
                    // must set encoding style before registering serializers
                    _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
                    _call.setEncodingStyle(org.apache.axis.Constants.URI_SOAP11_ENC);
                    for (int i = 0; i < cachedSerFactories.size(); ++i) {
                        java.lang.Class cls = (java.lang.Class) cachedSerClasses.get(i);
                        javax.xml.namespace.QName qName =
                                (javax.xml.namespace.QName) cachedSerQNames.get(i);
                        java.lang.Object x = cachedSerFactories.get(i);
                        if (x instanceof Class) {
                            java.lang.Class sf = (java.lang.Class)
                                 cachedSerFactories.get(i);
                            java.lang.Class df = (java.lang.Class)
                                 cachedDeserFactories.get(i);
                            _call.registerTypeMapping(cls, qName, sf, df, false);
                        }
                        else if (x instanceof javax.xml.rpc.encoding.SerializerFactory) {
                            org.apache.axis.encoding.SerializerFactory sf = (org.apache.axis.encoding.SerializerFactory)
                                 cachedSerFactories.get(i);
                            org.apache.axis.encoding.DeserializerFactory df = (org.apache.axis.encoding.DeserializerFactory)
                                 cachedDeserFactories.get(i);
                            _call.registerTypeMapping(cls, qName, sf, df, false);
                        }
                    }
                }
            }
            return _call;
        }
        catch (java.lang.Throwable _t) {
            throw new org.apache.axis.AxisFault("Failure trying to get the Call object", _t);
        }
    }

    public com.edb.om.dto.order.OrderAttributeTO findOrderDetails(java.lang.String in0) throws java.rmi.RemoteException {
        if (super.cachedEndpoint == null) {
            throw new org.apache.axis.NoEndPointException();
        }
        org.apache.axis.client.Call _call = createCall();
        _call.setOperation(_operations[0]);
        _call.setUseSOAPAction(true);
        _call.setSOAPActionURI("");
        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
        _call.setOperationName(new javax.xml.namespace.QName("urn:presentation", "findOrderDetails"));

        setRequestHeaders(_call);
        setAttachments(_call);
 try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {in0});

        if (_resp instanceof java.rmi.RemoteException) {
            throw (java.rmi.RemoteException)_resp;
        }
        else {
            extractAttachments(_call);
            try {
                return (com.edb.om.dto.order.OrderAttributeTO) _resp;
            } catch (java.lang.Exception _exception) {
                return (com.edb.om.dto.order.OrderAttributeTO) org.apache.axis.utils.JavaUtils.convert(_resp, com.edb.om.dto.order.OrderAttributeTO.class);
            }
        }
  } catch (org.apache.axis.AxisFault axisFaultException) {
  throw axisFaultException;
}
    }

}







	
	
		
_________________________________________________________
Alt i én. Få Yahoo! Mail med adressekartotek, kalender og
notisblokk. http://no.mail.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org


Re: java.lang.ClassCastException

Posted by Martin Gainty <mg...@hotmail.com>.
Espen/Philip
I did'nt see ServiceLocator impelemnted in Axis2 ..are you perhaps using Axis-1_3?

if you are using 1.3 and look at the AddressBookServiceLocator from samples your signature would be
    public AddressBookServiceLocator(java.lang.String wsdlLoc, javax.xml.namespace.QName sName) throws javax.xml.rpc.ServiceException {

( the ServiceLocator you are using has no params )

M-
--------------------------------------------------------------------------- 
This e-mail message (including attachments, if any) is intended for the use of the individual or entity to which it is addressed and may contain information that is privileged, proprietary , confidential and exempt from disclosure. If you are not the intended recipient, you are notified that any dissemination, distribution or copying of this communication is strictly prohibited.
--------------------------------------------------------------------------- 
Le présent message électronique (y compris les pièces qui y sont annexées, le cas échéant) s'adresse au destinataire indiqué et peut contenir des renseignements de caractère privé ou confidentiel. Si vous n'êtes pas le destinataire de ce document, nous vous signalons qu'il est strictement interdit de le diffuser, de le distribuer ou de le reproduire.
----- Original Message ----- 
From: "Philipp Perner" <ph...@healthgate.at>
To: <ax...@ws.apache.org>
Sent: Thursday, December 07, 2006 9:18 AM
Subject: Re: java.lang.ClassCastException


> What came first to my mind is:
> 
> Try
> OrderAttributeTO ob = (OrderAttributeTO)iOrderPresentation.findOrderDetails("2");
> instead of
> OrderAttributeTO ob = iOrderPresentation.findOrderDetails("2"); //GET THE ERROR HERE
> 
> I didn't try, but perhaps that's the problem. Which databinding and version of axis2 do you use? 
> 
> Espen Falkevik schrieb:
> 
>> Hi.
>> I have a webservice with that takes a string in and returns a object. When I use my client I get the followin exception:
>> When I use my client (which uses the stub files generated by WSDL2Java) I get the following exception:
>>
>> Exception in thread "main" java.lang.ClassCastException: ws.OrderAttributeTO
>>
>>         at ws.PresentSoapBindingStub.findOrderDetails(PresentSoapBindingStub.java:165)
>>
>>         at webservice.PresentationClient.main(PresentationClient.java:31)
>>
>> Any help would be appreciated
>>
>>
>>
>> I use the Java2WSDL to generate the wsdl file (attached below):
>> <?xml version="1.0" encoding="UTF-8"?>
>>
>> <!--WSDL created by Apache Axis version: 1.4
>> Built on Apr 22, 2006 (06:55:48 PDT)-->
>>  <wsdl:types>
>>   
>>    http://schemas.xmlsoap.org/soap/encoding/"/>
>>    <complexType name="OrderAttributeTO">
>>     <sequence>
>>      <element name="name" nillable="true" type="soapenc:string"/>
>>      <element name="value" nillable="true" type="soapenc:string"/>
>>     </sequence>
>>    </complexType>
>>   </schema>
>>  </wsdl:types>
>>
>>    <wsdl:message name="findOrderDetailsResponse">
>>
>>       <wsdl:part name="findOrderDetailsReturn" type="tns2:OrderAttributeTO"/>
>>
>>    </wsdl:message>
>>
>>    <wsdl:message name="findOrderDetailsRequest">
>>
>>       <wsdl:part name="in0" type="soapenc:string"/>
>>
>>    </wsdl:message>
>>
>>    <wsdl:portType name="IOrderPresentation">
>>
>>       <wsdl:operation name="findOrderDetails" parameterOrder="in0">
>>
>>          <wsdl:input message="impl:findOrderDetailsRequest" name="findOrderDetailsRequest"/>
>>
>>          <wsdl:output message="impl:findOrderDetailsResponse" name="findOrderDetailsResponse"/>
>>
>>       </wsdl:operation>
>>
>>    </wsdl:portType>
>>
>>    <wsdl:binding name="presentSoapBinding" type="impl:IOrderPresentation">
>>
>>       http://schemas.xmlsoap.org/soap/http"/>
>>
>>       <wsdl:operation name="findOrderDetails">
>>
>>          <wsdlsoap:operation soapAction=""/>
>>
>>          <wsdl:input name="findOrderDetailsRequest">
>>
>>             
>>
>>          </wsdl:input>
>>
>>          <wsdl:output name="findOrderDetailsResponse">
>>
>>             
>>
>>          </wsdl:output>
>>
>>       </wsdl:operation>
>>
>>    </wsdl:binding>
>>
>>    <wsdl:service name="IOrderPresentationService">
>>
>>       <wsdl:port binding="impl:presentSoapBinding" name="present">
>>
>>          http://localhost:7001/axis/services/present"/>
>>
>>       </wsdl:port>
>>
>>    </wsdl:service>
>>
>> </wsdl:definitions>
>>
>>
>>
>>
>> My presentation client:
>> ws.IOrderPresentationService service = new ws.IOrderPresentationServiceLocator();
>>
>>
>>         // Now use the service to get a stub which implements the SDI.
>>         ws.IOrderPresentation iOrderPresentation = service.getpresent();
>>
>>         // Make the actual call       
>>         OrderAttributeTO ob = iOrderPresentation.findOrderDetails("2"); //GET THE ERROR HERE
>>
>>
>> The PresentSoapBindingStub.java: (the exception happens when returning the object (in the catch at the bottom of the code)
>>
>> /**
>>  * PresentSoapBindingStub.java
>>  *
>>  * This file was auto-generated from WSDL
>>  * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
>>  */
>>
>> package presentation;
>>
>> public class PresentSoapBindingStub extends org.apache.axis.client.Stub implements presentation.IOrderPresentation {
>>     private java.util.Vector cachedSerClasses = new java.util.Vector();
>>     private java.util.Vector cachedSerQNames = new java.util.Vector();
>>     private java.util.Vector cachedSerFactories = new java.util.Vector();
>>     private java.util.Vector cachedDeserFactories = new java.util.Vector();
>>
>>     static org.apache.axis.description.OperationDesc [] _operations;
>>
>>     static {
>>         _operations = new org.apache.axis.description.OperationDesc[1];
>>         _initOperationDesc1();
>>     }
>>
>>     private static void _initOperationDesc1(){
>>         org.apache.axis.description.OperationDesc oper;
>>         org.apache.axis.description.ParameterDesc param;
>>         oper = new org.apache.axis.description.OperationDesc();
>>         oper.setName("findOrderDetails");
>>         param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "in0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false);
>>         oper.addParameter(param);
>>         oper.setReturnType(new javax.xml.namespace.QName("http://order.dto.om.edb.com", "OrderAttributeTO"));
>>         oper.setReturnClass(com.edb.om.dto.order.OrderAttributeTO.class);
>>         oper.setReturnQName(new javax.xml.namespace.QName("", "findOrderDetailsReturn"));
>>         oper.setStyle(org.apache.axis.constants.Style.RPC);
>>         oper.setUse(org.apache.axis.constants.Use.ENCODED);
>>         _operations[0] = oper;
>>
>>     }
>>
>>     public PresentSoapBindingStub() throws org.apache.axis.AxisFault {
>>          this(null);
>>     }
>>
>>     public PresentSoapBindingStub(java.net.URL endpointURL, javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
>>          this(service);
>>          super.cachedEndpoint = endpointURL;
>>     }
>>
>>     public PresentSoapBindingStub(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
>>         if (service == null) {
>>             super.service = new org.apache.axis.client.Service();
>>         } else {
>>             super.service = service;
>>         }
>>         ((org.apache.axis.client.Service)super.service).setTypeMappingVersion("1.2");
>>             java.lang.Class cls;
>>             javax.xml.namespace.QName qName;
>>             javax.xml.namespace.QName qName2;
>>             java.lang.Class beansf = org.apache.axis.encoding.ser.BeanSerializerFactory.class;
>>             java.lang.Class beandf = org.apache.axis.encoding.ser.BeanDeserializerFactory.class;
>>             java.lang.Class enumsf = org.apache.axis.encoding.ser.EnumSerializerFactory.class;
>>             java.lang.Class enumdf = org.apache.axis.encoding.ser.EnumDeserializerFactory.class;
>>             java.lang.Class arraysf = org.apache.axis.encoding.ser.ArraySerializerFactory.class;
>>             java.lang.Class arraydf = org.apache.axis.encoding.ser.ArrayDeserializerFactory.class;
>>             java.lang.Class simplesf = org.apache.axis.encoding.ser.SimpleSerializerFactory.class;
>>             java.lang.Class simpledf = org.apache.axis.encoding.ser.SimpleDeserializerFactory.class;
>>             java.lang.Class simplelistsf = org.apache.axis.encoding.ser.SimpleListSerializerFactory.class;
>>             java.lang.Class simplelistdf = org.apache.axis.encoding.ser.SimpleListDeserializerFactory.class;
>>             qName = new javax.xml.namespace.QName("http://order.dto.om.edb.com", "OrderAttributeTO");
>>             cachedSerQNames.add(qName);
>>             cls = com.edb.om.dto.order.OrderAttributeTO.class;
>>             cachedSerClasses.add(cls);
>>             cachedSerFactories.add(beansf);
>>             cachedDeserFactories.add(beandf);
>>
>>     }
>>
>>     protected org.apache.axis.client.Call createCall() throws java.rmi.RemoteException {
>>         try {
>>             org.apache.axis.client.Call _call = super._createCall();
>>             if (super.maintainSessionSet) {
>>                 _call.setMaintainSession(super.maintainSession);
>>             }
>>             if (super.cachedUsername != null) {
>>                 _call.setUsername(super.cachedUsername);
>>             }
>>             if (super.cachedPassword != null) {
>>                 _call.setPassword(super.cachedPassword);
>>             }
>>             if (super.cachedEndpoint != null) {
>>                 _call.setTargetEndpointAddress(super.cachedEndpoint);
>>             }
>>             if (super.cachedTimeout != null) {
>>                 _call.setTimeout(super.cachedTimeout);
>>             }
>>             if (super.cachedPortName != null) {
>>                 _call.setPortName(super.cachedPortName);
>>             }
>>             java.util.Enumeration keys = super.cachedProperties.keys();
>>             while (keys.hasMoreElements()) {
>>                 java.lang.String key = (java.lang.String) keys.nextElement();
>>                 _call.setProperty(key, super.cachedProperties.get(key));
>>             }
>>             // All the type mapping information is registered
>>             // when the first call is made.
>>             // The type mapping information is actually registered in
>>             // the TypeMappingRegistry of the service, which
>>             // is the reason why registration is only needed for the first call.
>>             synchronized (this) {
>>                 if (firstCall()) {
>>                     // must set encoding style before registering serializers
>>                     _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
>>                     _call.setEncodingStyle(org.apache.axis.Constants.URI_SOAP11_ENC);
>>                     for (int i = 0; i < cachedSerFactories.size(); ++i) {
>>                         java.lang.Class cls = (java.lang.Class) cachedSerClasses.get(i);
>>                         javax.xml.namespace.QName qName =
>>                                 (javax.xml.namespace.QName) cachedSerQNames.get(i);
>>                         java.lang.Object x = cachedSerFactories.get(i);
>>                         if (x instanceof Class) {
>>                             java.lang.Class sf = (java.lang.Class)
>>                                  cachedSerFactories.get(i);
>>                             java.lang.Class df = (java.lang.Class)
>>                                  cachedDeserFactories.get(i);
>>                             _call.registerTypeMapping(cls, qName, sf, df, false);
>>                         }
>>                         else if (x instanceof javax.xml.rpc.encoding.SerializerFactory) {
>>                             org.apache.axis.encoding.SerializerFactory sf = (org.apache.axis.encoding.SerializerFactory)
>>                                  cachedSerFactories.get(i);
>>                             org.apache.axis.encoding.DeserializerFactory df = (org.apache.axis.encoding.DeserializerFactory)
>>                                  cachedDeserFactories.get(i);
>>                             _call.registerTypeMapping(cls, qName, sf, df, false);
>>                         }
>>                     }
>>                 }
>>             }
>>             return _call;
>>         }
>>         catch (java.lang.Throwable _t) {
>>             throw new org.apache.axis.AxisFault("Failure trying to get the Call object", _t);
>>         }
>>     }
>>
>>     public com.edb.om.dto.order.OrderAttributeTO findOrderDetails(java.lang.String in0) throws java.rmi.RemoteException {
>>         if (super.cachedEndpoint == null) {
>>             throw new org.apache.axis.NoEndPointException();
>>         }
>>         org.apache.axis.client.Call _call = createCall();
>>         _call.setOperation(_operations[0]);
>>         _call.setUseSOAPAction(true);
>>         _call.setSOAPActionURI("");
>>         _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
>>         _call.setOperationName(new javax.xml.namespace.QName("urn:presentation", "findOrderDetails"));
>>
>>         setRequestHeaders(_call);
>>         setAttachments(_call);
>>  try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {in0});
>>
>>         if (_resp instanceof java.rmi.RemoteException) {
>>             throw (java.rmi.RemoteException)_resp;
>>         }
>>         else {
>>             extractAttachments(_call);
>>             try {
>>                 return (com.edb.om.dto.order.OrderAttributeTO) _resp;
>>             } catch (java.lang.Exception _exception) {
>>                 return (com.edb.om.dto.order.OrderAttributeTO) org.apache.axis.utils.JavaUtils.convert(_resp, com.edb.om.dto.order.OrderAttributeTO.class);
>>             }
>>         }
>>   } catch (org.apache.axis.AxisFault axisFaultException) {
>>   throw axisFaultException;
>> }
>>     }
>>
>> }
>>
>>
>>
>>
>>
>>
>>
>> 
>> 
>> 
>> _________________________________________________________
>> Alt i én. Få Yahoo! Mail med adressekartotek, kalender og
>> notisblokk. http://no.mail.yahoo.com
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
>> For additional commands, e-mail: axis-user-help@ws.apache.org
>>
>>
>>   
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
> 
>

Re: java.lang.ClassCastException

Posted by Philipp Perner <ph...@healthgate.at>.
What came first to my mind is:

Try
OrderAttributeTO ob = (OrderAttributeTO)iOrderPresentation.findOrderDetails("2");
instead of
OrderAttributeTO ob = iOrderPresentation.findOrderDetails("2"); //GET THE ERROR HERE

I didn't try, but perhaps that's the problem. Which databinding and version of axis2 do you use? 

Espen Falkevik schrieb:

> Hi.
> I have a webservice with that takes a string in and returns a object. When I use my client I get the followin exception:
> When I use my client (which uses the stub files generated by WSDL2Java) I get the following exception:
>
> Exception in thread "main" java.lang.ClassCastException: ws.OrderAttributeTO
>
>         at ws.PresentSoapBindingStub.findOrderDetails(PresentSoapBindingStub.java:165)
>
>         at webservice.PresentationClient.main(PresentationClient.java:31)
>
> Any help would be appreciated
>
>
>
> I use the Java2WSDL to generate the wsdl file (attached below):
> <?xml version="1.0" encoding="UTF-8"?>
>
> <!--WSDL created by Apache Axis version: 1.4
> Built on Apr 22, 2006 (06:55:48 PDT)-->
>  <wsdl:types>
>   
>    http://schemas.xmlsoap.org/soap/encoding/"/>
>    <complexType name="OrderAttributeTO">
>     <sequence>
>      <element name="name" nillable="true" type="soapenc:string"/>
>      <element name="value" nillable="true" type="soapenc:string"/>
>     </sequence>
>    </complexType>
>   </schema>
>  </wsdl:types>
>
>    <wsdl:message name="findOrderDetailsResponse">
>
>       <wsdl:part name="findOrderDetailsReturn" type="tns2:OrderAttributeTO"/>
>
>    </wsdl:message>
>
>    <wsdl:message name="findOrderDetailsRequest">
>
>       <wsdl:part name="in0" type="soapenc:string"/>
>
>    </wsdl:message>
>
>    <wsdl:portType name="IOrderPresentation">
>
>       <wsdl:operation name="findOrderDetails" parameterOrder="in0">
>
>          <wsdl:input message="impl:findOrderDetailsRequest" name="findOrderDetailsRequest"/>
>
>          <wsdl:output message="impl:findOrderDetailsResponse" name="findOrderDetailsResponse"/>
>
>       </wsdl:operation>
>
>    </wsdl:portType>
>
>    <wsdl:binding name="presentSoapBinding" type="impl:IOrderPresentation">
>
>       http://schemas.xmlsoap.org/soap/http"/>
>
>       <wsdl:operation name="findOrderDetails">
>
>          <wsdlsoap:operation soapAction=""/>
>
>          <wsdl:input name="findOrderDetailsRequest">
>
>             
>
>          </wsdl:input>
>
>          <wsdl:output name="findOrderDetailsResponse">
>
>             
>
>          </wsdl:output>
>
>       </wsdl:operation>
>
>    </wsdl:binding>
>
>    <wsdl:service name="IOrderPresentationService">
>
>       <wsdl:port binding="impl:presentSoapBinding" name="present">
>
>          http://localhost:7001/axis/services/present"/>
>
>       </wsdl:port>
>
>    </wsdl:service>
>
> </wsdl:definitions>
>
>
>
>
> My presentation client:
> ws.IOrderPresentationService service = new ws.IOrderPresentationServiceLocator();
>
>
>         // Now use the service to get a stub which implements the SDI.
>         ws.IOrderPresentation iOrderPresentation = service.getpresent();
>
>         // Make the actual call       
>         OrderAttributeTO ob = iOrderPresentation.findOrderDetails("2"); //GET THE ERROR HERE
>
>
> The PresentSoapBindingStub.java: (the exception happens when returning the object (in the catch at the bottom of the code)
>
> /**
>  * PresentSoapBindingStub.java
>  *
>  * This file was auto-generated from WSDL
>  * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
>  */
>
> package presentation;
>
> public class PresentSoapBindingStub extends org.apache.axis.client.Stub implements presentation.IOrderPresentation {
>     private java.util.Vector cachedSerClasses = new java.util.Vector();
>     private java.util.Vector cachedSerQNames = new java.util.Vector();
>     private java.util.Vector cachedSerFactories = new java.util.Vector();
>     private java.util.Vector cachedDeserFactories = new java.util.Vector();
>
>     static org.apache.axis.description.OperationDesc [] _operations;
>
>     static {
>         _operations = new org.apache.axis.description.OperationDesc[1];
>         _initOperationDesc1();
>     }
>
>     private static void _initOperationDesc1(){
>         org.apache.axis.description.OperationDesc oper;
>         org.apache.axis.description.ParameterDesc param;
>         oper = new org.apache.axis.description.OperationDesc();
>         oper.setName("findOrderDetails");
>         param = new org.apache.axis.description.ParameterDesc(new javax.xml.namespace.QName("", "in0"), org.apache.axis.description.ParameterDesc.IN, new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"), java.lang.String.class, false, false);
>         oper.addParameter(param);
>         oper.setReturnType(new javax.xml.namespace.QName("http://order.dto.om.edb.com", "OrderAttributeTO"));
>         oper.setReturnClass(com.edb.om.dto.order.OrderAttributeTO.class);
>         oper.setReturnQName(new javax.xml.namespace.QName("", "findOrderDetailsReturn"));
>         oper.setStyle(org.apache.axis.constants.Style.RPC);
>         oper.setUse(org.apache.axis.constants.Use.ENCODED);
>         _operations[0] = oper;
>
>     }
>
>     public PresentSoapBindingStub() throws org.apache.axis.AxisFault {
>          this(null);
>     }
>
>     public PresentSoapBindingStub(java.net.URL endpointURL, javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
>          this(service);
>          super.cachedEndpoint = endpointURL;
>     }
>
>     public PresentSoapBindingStub(javax.xml.rpc.Service service) throws org.apache.axis.AxisFault {
>         if (service == null) {
>             super.service = new org.apache.axis.client.Service();
>         } else {
>             super.service = service;
>         }
>         ((org.apache.axis.client.Service)super.service).setTypeMappingVersion("1.2");
>             java.lang.Class cls;
>             javax.xml.namespace.QName qName;
>             javax.xml.namespace.QName qName2;
>             java.lang.Class beansf = org.apache.axis.encoding.ser.BeanSerializerFactory.class;
>             java.lang.Class beandf = org.apache.axis.encoding.ser.BeanDeserializerFactory.class;
>             java.lang.Class enumsf = org.apache.axis.encoding.ser.EnumSerializerFactory.class;
>             java.lang.Class enumdf = org.apache.axis.encoding.ser.EnumDeserializerFactory.class;
>             java.lang.Class arraysf = org.apache.axis.encoding.ser.ArraySerializerFactory.class;
>             java.lang.Class arraydf = org.apache.axis.encoding.ser.ArrayDeserializerFactory.class;
>             java.lang.Class simplesf = org.apache.axis.encoding.ser.SimpleSerializerFactory.class;
>             java.lang.Class simpledf = org.apache.axis.encoding.ser.SimpleDeserializerFactory.class;
>             java.lang.Class simplelistsf = org.apache.axis.encoding.ser.SimpleListSerializerFactory.class;
>             java.lang.Class simplelistdf = org.apache.axis.encoding.ser.SimpleListDeserializerFactory.class;
>             qName = new javax.xml.namespace.QName("http://order.dto.om.edb.com", "OrderAttributeTO");
>             cachedSerQNames.add(qName);
>             cls = com.edb.om.dto.order.OrderAttributeTO.class;
>             cachedSerClasses.add(cls);
>             cachedSerFactories.add(beansf);
>             cachedDeserFactories.add(beandf);
>
>     }
>
>     protected org.apache.axis.client.Call createCall() throws java.rmi.RemoteException {
>         try {
>             org.apache.axis.client.Call _call = super._createCall();
>             if (super.maintainSessionSet) {
>                 _call.setMaintainSession(super.maintainSession);
>             }
>             if (super.cachedUsername != null) {
>                 _call.setUsername(super.cachedUsername);
>             }
>             if (super.cachedPassword != null) {
>                 _call.setPassword(super.cachedPassword);
>             }
>             if (super.cachedEndpoint != null) {
>                 _call.setTargetEndpointAddress(super.cachedEndpoint);
>             }
>             if (super.cachedTimeout != null) {
>                 _call.setTimeout(super.cachedTimeout);
>             }
>             if (super.cachedPortName != null) {
>                 _call.setPortName(super.cachedPortName);
>             }
>             java.util.Enumeration keys = super.cachedProperties.keys();
>             while (keys.hasMoreElements()) {
>                 java.lang.String key = (java.lang.String) keys.nextElement();
>                 _call.setProperty(key, super.cachedProperties.get(key));
>             }
>             // All the type mapping information is registered
>             // when the first call is made.
>             // The type mapping information is actually registered in
>             // the TypeMappingRegistry of the service, which
>             // is the reason why registration is only needed for the first call.
>             synchronized (this) {
>                 if (firstCall()) {
>                     // must set encoding style before registering serializers
>                     _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
>                     _call.setEncodingStyle(org.apache.axis.Constants.URI_SOAP11_ENC);
>                     for (int i = 0; i < cachedSerFactories.size(); ++i) {
>                         java.lang.Class cls = (java.lang.Class) cachedSerClasses.get(i);
>                         javax.xml.namespace.QName qName =
>                                 (javax.xml.namespace.QName) cachedSerQNames.get(i);
>                         java.lang.Object x = cachedSerFactories.get(i);
>                         if (x instanceof Class) {
>                             java.lang.Class sf = (java.lang.Class)
>                                  cachedSerFactories.get(i);
>                             java.lang.Class df = (java.lang.Class)
>                                  cachedDeserFactories.get(i);
>                             _call.registerTypeMapping(cls, qName, sf, df, false);
>                         }
>                         else if (x instanceof javax.xml.rpc.encoding.SerializerFactory) {
>                             org.apache.axis.encoding.SerializerFactory sf = (org.apache.axis.encoding.SerializerFactory)
>                                  cachedSerFactories.get(i);
>                             org.apache.axis.encoding.DeserializerFactory df = (org.apache.axis.encoding.DeserializerFactory)
>                                  cachedDeserFactories.get(i);
>                             _call.registerTypeMapping(cls, qName, sf, df, false);
>                         }
>                     }
>                 }
>             }
>             return _call;
>         }
>         catch (java.lang.Throwable _t) {
>             throw new org.apache.axis.AxisFault("Failure trying to get the Call object", _t);
>         }
>     }
>
>     public com.edb.om.dto.order.OrderAttributeTO findOrderDetails(java.lang.String in0) throws java.rmi.RemoteException {
>         if (super.cachedEndpoint == null) {
>             throw new org.apache.axis.NoEndPointException();
>         }
>         org.apache.axis.client.Call _call = createCall();
>         _call.setOperation(_operations[0]);
>         _call.setUseSOAPAction(true);
>         _call.setSOAPActionURI("");
>         _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
>         _call.setOperationName(new javax.xml.namespace.QName("urn:presentation", "findOrderDetails"));
>
>         setRequestHeaders(_call);
>         setAttachments(_call);
>  try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {in0});
>
>         if (_resp instanceof java.rmi.RemoteException) {
>             throw (java.rmi.RemoteException)_resp;
>         }
>         else {
>             extractAttachments(_call);
>             try {
>                 return (com.edb.om.dto.order.OrderAttributeTO) _resp;
>             } catch (java.lang.Exception _exception) {
>                 return (com.edb.om.dto.order.OrderAttributeTO) org.apache.axis.utils.JavaUtils.convert(_resp, com.edb.om.dto.order.OrderAttributeTO.class);
>             }
>         }
>   } catch (org.apache.axis.AxisFault axisFaultException) {
>   throw axisFaultException;
> }
>     }
>
> }
>
>
>
>
>
>
>
> 	
> 	
> 		
> _________________________________________________________
> Alt i én. Få Yahoo! Mail med adressekartotek, kalender og
> notisblokk. http://no.mail.yahoo.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: axis-user-help@ws.apache.org
>
>
>   

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org