Problème Axis BeanDeserializer
Bonjour, j'ai généré un web service client (config:tomcat, Axis, plugin wtp d'éclipse). j'obtiens des classes de type WebValue, WebTreatment etc... qui correspondent au type complexe, les fichiers locator, binding sont aussi généré. Quand j'essaie d'envoyer une WebValue au webService j'obtiens une erreur de type BeanDeserializer, a quoi est due cette erreur?
Code:
1 2 3 4 5 6 7 8 9
|
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
faultSubcode:
faultString: org.apache.axis.encoding.ser.BeanDeserializer
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:org.apache.axis.encoding.ser.BeanDeserializer |
Voici la méthode dans la classe BindingStub pour envoyer le type complexe
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public boolean setValue(java.lang.String sessionContextId, java.lang.String treatmentId, java.lang.String fieldId, com.axemble.vdp.web.classes.WebValue[] webvalues) throws java.rmi.RemoteException {
if (super.cachedEndpoint == null) {
throw new org.apache.axis.NoEndPointException();
}
org.apache.axis.client.Call _call = createCall();
_call.setOperation(_operations[2]);
_call.setUseSOAPAction(true);
_call.setSOAPActionURI("");
_call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
_call.setOperationName(new javax.xml.namespace.QName("VDPWebServices", "setValue"));
setRequestHeaders(_call);
setAttachments(_call);
try {
/**erreur ici!! les parametres sont de types String excepté webvalues qui est un tableau de WebValue*/
java.lang.Object _resp = _call.invoke(new java.lang.Object[] {sessionContextId,treatmentId,fieldId,webvalues});
/**fin de l'erreur*/
if (_resp instanceof java.rmi.RemoteException) {
throw (java.rmi.RemoteException)_resp;
}
else {
extractAttachments(_call);
try {
return ((java.lang.Boolean) _resp).booleanValue();
} catch (java.lang.Exception _exception) {
return ((java.lang.Boolean) org.apache.axis.utils.JavaUtils.convert(_resp, boolean.class)).booleanValue();
}
}
} catch (org.apache.axis.AxisFault axisFaultException) {
throw axisFaultException;
}
} |
Dans mon code Java, l'appel ce fait par:
Code:
1 2 3 4 5 6
|
public boolean initField(WebField webfield,WebValue[] webvalues) throws RemoteException{
/**erreur ici les parametres sont bons*/
getDynamicExplorer().setValue(getContextId(),getWebTreatment().getId(),webfield.getId(),webvalues);
return true;
} |