Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / August 2007

Tip: Looking for answers? Try searching our database.

Changing WSDL = recreate axis java client?

Thread view: 
matrixhasu - 24 Aug 2007 15:32 GMT
Hi all,
we'd like to recieve your opinion about a strange and unexpected issue
we're facing right now: we have a web service for which we've provided
a jar java client (generated with axis and wsdl2java) to some users.

We had to modify that web service to include two additional response
fields. After web service modification, the java client stops working
reporting

    org.xml.sax.SAXException: Invalid element in
com.webmethods.www.__outputJobInfo - DESCRIPTION

where "DESCRIPTION" is the first additional field.

Did you already face this problem? How would I solve it? I thought
clients would be indipendent to web services output values, if that
change only involve additional fields (i.e., not modify existing one).

Is there some other library/way-to-invoke-ws without have to change
(and thus notify everyone using it) the jar client?

Thanks in advance for your help.

Regards,
Sandro
Ian Wilson - 24 Aug 2007 16:28 GMT
> we have a web service for which we've provided
> a jar java client (generated with axis and wsdl2java) to some users.
[quoted text clipped - 9 lines]
>
> Did you already face this problem? How would I solve it?

I include an API version number as part of the namespace. I provide both
old and new services in parallel until all the clients have transitioned.

> I thought
> clients would be indipendent to web services output values, if that
> change only involve additional fields (i.e., not modify existing one).

Some client web-server technologies are much more tolerant of this than
others. Perl's SOAP::Lite for example, but it depends how the client is
coded. In general, if I change the API I expect to have to change the
clients.
blazer - 28 Aug 2007 19:47 GMT
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);
   }


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.