I upgraded my WSDL-first service to use XFire 1.2.5 today.  Swapped out
the jars and ran the application-and discovered that it no longer
worked-whenever I sent a request to the service, I got a
java.lang.IndexOutOfBoundsException. 

 

So I decided I better try regenerating the server stubs using the new
1.2.5 jar.  I found that the generated service interface was quite a bit
different now.  

(1) The parameter style has changed from SOAPBinding.ParameterStyle.BARE
to SOAPBinding.ParameterStyle.WRAPPED.  This is probably more accurate,
as I had designed the WSDL in doc/literal wrapped style.

 

(2) The signature of the methods has drastically changed.  Whereas
before an operation called MyOperation would look like this:

 

MyOperationResponseType myOperation ( MyOperationType input);

 

Now, it looks more like this:

 

int myOperation (String input1, String input2, Holder<String> output1,
Holder<String> output2);

 

All of the individual elements of the request and response are
individually referenced, one of the output elements is the return type,
and the others are passed in as parameters, wrapped in a Holder.  Now of
course, my old implementation is totally out of wack with the new
generated interface.

 

A few questions:

(1) What caused this huge change between 1.2.4 and 1.2.5?

(2) Is the new functionality described above the intended functionality?

(3) If so, are there any advantages to the new way aside from the
possibility that some people might just like it that way?

(4) If there are no concrete advantages, is there an easy way for me to
configure it to generate the interface the way it used to (I guess that
might mean forcing it to BARE)?

 

Thanks!

Chris

Reply via email to