Changing WSDL = recreate axis java client?

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);
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,990
Messages
2,570,211
Members
46,796
Latest member
SteveBreed

Latest Threads

Top