You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by He...@bcbsil.com on 2004/04/28 00:27:27 UTC

Client Stub Versioning




Hello all,
I was having a design session with my team here and we were discussing
about some possible solutions for versioning the client stubs and I though
I would get the input of the Axis development community. Essentially what I
am trying to do is make the service backward compatible to all its clients.
So if one client is on, lets say, version 1.0 of the wsdl and it contacts
the version 1.0 of the service and over the course of time, we upgrade the
service to 1.1(maybe add a new field to the complex type), then what are
the possible ideas to make the service backward compatible with 1.0
clients?

The problem we come across is the DeSerializer for a 1.0 client fails if it
receives a 1.1 message.  Since some of the clients we would have are
external clients, we want to provide a way to make the 1.1 backward
compatible with 1.0. One obvious essential step was to always make the
service additive(add new fields or operations).

One possible solution that my team came to a conclusion was to provide an
adapter that converts 1.1 to 1.0 on the server side. When we are ready to
deploy 1.1 service we deploy on a new
URI(http://myserver.com/services/foobarservice1_1) and keep the existing
1.0 service on (http://myserver.com/services/foobarservice1_0). And the
implementation of the 1.0 service will act as an adapter to the 1.1 service
and do necessary transformations on it.
If we keep the additive model, then we can have an automatic transformation
modules, that looks at the new fields in 1.1 and disregards it.

I wanted to ask the community, if they had faced any similar issue and how
they were able to prepare and solve for it?

Any help appreciated

-Hemanth


**********
The information contained in this communication is confidential, private,
proprietary, or otherwise privileged and is intended only for the use of the
addressee.  Unauthorized use, disclosure, distribution or copying is strictly
prohibited and may be unlawful.  If you have received this communication in
error, please notify the sender immediately at (312)653-6000 in Illinois;
(972)766-6900 in Texas; or (800)835-8699 in New Mexico.
**********


Understanding valid signatures for your message-style service methods

Posted by Kenneth Lee <Ke...@KennethLee.org>.
I am trying to change a web service from provider="java:RPC" to
provider="java:MSG".  There are four signatures defined in the axis
documentation which are:
public Element [] method(Element [] bodies);
public SOAPBodyElement [] method (SOAPBodyElement [] bodies);
public Document method(Document body);
public void method(SOAPEnvelope req, SOAPEnvelope resp); 


I want to use the signature public Document method(Document body);

The problem is - I just don't get it????  In the web service call I want
to use, the method is defined as:
public Document getXML(String sSQL)

I am passing a select statement, and the method fetches the data and
creates a Document object to return.  I continue to get an error
message:
Java.lang.Exception: Method 'getXML does not match any of the valid
signatures for message-style service methods

I did a google search, but that didn't return any helpful solutions.
When the reference is to signature, I am guessing that I have to pass
"Document body" into getXML and not "String sSQL".  Okay... Where or how
do I pass the String parameter and get the signature correct for this to
work?

(Background info --- I am making a call to oracle, which is returning an
XML document as a string.  I convert this to a Document, then return
this.  I am trying to resolve size issues in the return.  If anyone has
other suggestions, they would be greatly appreciated!.  The goal is to
return a 300,000 record table as an XML file, and have a Microsoft Soap
application read the file as the client.  I'd possibly use DIME, but
haven't figured out how to do this with a String...)

Thanks,

Ken Lee