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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]