Hallo liebe Community,
Ich beschäftige mich derzeit mit den Grundlagen zu Webservices, dazu nutze ich den aktuellen Axis2 unter Tomcat 6.0.18.
Ich habe mir zu Testzwecken 3 simple Java Klassen geschrieben,
1. die eigentliche Webservice Klasse, sie hat die Methoden:
- public boolean setCustomObject(CustomObject co)
- public CustomObject getCustomObject()
2. die Klasse "CustomObject", eine eifnache Bean mit einem byte als Datenelement, sowie einem Getter und einem Setter.
3. die Client Klasse, hier versuche ich nun ein CustomObject an den Webservice zu senden und ein CustomObject vom Webservice zu erhalten, diese sieht wie folgt aus:
setCustomObject() funktioniert einwandfrei, aber beim Versuch getCustomObject aufzurufen erhalte ich folgende Exception:
Scheinbar funktioniert der BeanDeserializer also nicht mit meiner CustomObject Klasse, nur irritiert mich warum er beim Aufruf von setCustomObject nicht meckert. Trotz längerer Suche im Netz habe ich keine Antwort auf dieses Problem gefunden. Ich würde mich sehr freuen wenn mir hier jemand helfen könnte.
mfg Unic
Ich beschäftige mich derzeit mit den Grundlagen zu Webservices, dazu nutze ich den aktuellen Axis2 unter Tomcat 6.0.18.
Ich habe mir zu Testzwecken 3 simple Java Klassen geschrieben,
1. die eigentliche Webservice Klasse, sie hat die Methoden:
- public boolean setCustomObject(CustomObject co)
- public CustomObject getCustomObject()
2. die Klasse "CustomObject", eine eifnache Bean mit einem byte als Datenelement, sowie einem Getter und einem Setter.
3. die Client Klasse, hier versuche ich nun ein CustomObject an den Webservice zu senden und ein CustomObject vom Webservice zu erhalten, diese sieht wie folgt aus:
Code:
public class ObjectServiceClient { public static void main(String[] args) { try { Service service = new Service(); Call call = (Call)service.createCall(); String endpoint = "http://localhost:8080/axis2/services/ObjectService"; call.setTargetEndpointAddress(new URL(endpoint)); //SETTER CustomObject co = new CustomObject(); co.customData = 4; QName qn = new QName("http://webservice.fhsit.de", "setCustomObject"); call.registerTypeMapping(CustomObject.class, qn, org.apache.axis.encoding.ser.BeanSerializerFactory.class, org.apache.axis.encoding.ser.BeanDeserializerFactory.class); call.setOperationName(qn); boolean result = Boolean.parseBoolean(call.invoke(new Object[] {co}).toString()); System.out.println("setCustomObject(): " + result); // --- //GETTER call = (Call)service.createCall(); endpoint = "http://localhost:8080/axis2/services/ObjectService"; call.setTargetEndpointAddress(new URL(endpoint)); //getCustomObject QName qnget = new QName("http://premiumservices.sit.fhg.de", "getCustomObject"); call.setReturnType(new QName("de.fhg.sit.premiumservices.CustomObject")); call.registerTypeMapping(CustomObject.class, qnget, org.apache.axis.encoding.ser.BeanSerializerFactory.class, org.apache.axis.encoding.ser.BeanDeserializerFactory.class); call.setOperationName(qnget); CustomObject customObjectResult = (CustomObject)call.invoke(new Object[] {}); System.out.println("getCustomObject(): " + customObjectResult); } catch(Exception e) { e.printStackTrace(); } } }
Code:
AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: org.xml.sax.SAXException: Deserializing parameter 'return': could not find deserializer for type de.fhg.sit.premiumservices.CustomObject faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}stackTrace:org.xml.sax.SAXException: Deserializing parameter 'return': could not find deserializer for type de.fhg.sit.premiumservices.CustomObject at org.apache.axis.message.RPCHandler.onStartChild(RPCHandler.java:277) at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035) at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165) at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141) at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:345) at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384) at org.apache.axis.client.Call.invoke(Call.java:2467) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at de.fhsit.webservice.ObjectServiceClient.main(ObjectServiceClient.java:91)
mfg Unic