B
BrandonBlais
Hi all,
This is in response to the posting I've seen regarding AXIS and web
services client libaries blowing up when a WSDL document changes.
Basically the error occurs because a mapping does not exist between an
entry in the WSDL document and your client class. Modifying the
client class as follows will prevent this error from being thrown.
Here's what I had to do to fix the issue:
1) Create a class that extends
org.apache.axis.encoding.ser.BeanDeserializer.
a) Create constructors that basically pass the parameters to the
super class.
b) Override the following method as follows:
@Override
public SOAPHandler onStartChild(String arg0, String arg1, String
arg2, Attributes arg3, DeserializationContext arg4) throws
SAXException {
// TODO Auto-generated method stub
try{
return super.onStartChild(arg0, arg1, arg2, arg3, arg4);
}catch (SAXException e){
return null;
}
}
2) Find the object that is being returned from the web service -
(client class).
a) Override the following method as follows:
/**
* Get Custom Deserializer
*/
public static org.apache.axis.encoding.Deserializer
getDeserializer(
java.lang.String mechType,
java.lang.Class _javaType,
javax.xml.namespace.QName _xmlType) {
return new BigYDeserializer(_javaType, _xmlType, typeDesc);
//new org.apache.axis.encoding.ser.BeanDeserializer(
// _javaType, _xmlType, typeDesc);
}
This is in response to the posting I've seen regarding AXIS and web
services client libaries blowing up when a WSDL document changes.
Basically the error occurs because a mapping does not exist between an
entry in the WSDL document and your client class. Modifying the
client class as follows will prevent this error from being thrown.
Here's what I had to do to fix the issue:
1) Create a class that extends
org.apache.axis.encoding.ser.BeanDeserializer.
a) Create constructors that basically pass the parameters to the
super class.
b) Override the following method as follows:
@Override
public SOAPHandler onStartChild(String arg0, String arg1, String
arg2, Attributes arg3, DeserializationContext arg4) throws
SAXException {
// TODO Auto-generated method stub
try{
return super.onStartChild(arg0, arg1, arg2, arg3, arg4);
}catch (SAXException e){
return null;
}
}
2) Find the object that is being returned from the web service -
(client class).
a) Override the following method as follows:
/**
* Get Custom Deserializer
*/
public static org.apache.axis.encoding.Deserializer
getDeserializer(
java.lang.String mechType,
java.lang.Class _javaType,
javax.xml.namespace.QName _xmlType) {
return new BigYDeserializer(_javaType, _xmlType, typeDesc);
//new org.apache.axis.encoding.ser.BeanDeserializer(
// _javaType, _xmlType, typeDesc);
}