The following explanation and fix has been provided to us by eSigma - the world's first standards-based
business process search engine and directory. Somewhere along the line of generating proxy classes, a method within WSDL4J
is called to return an Operation object within a Port Type based on its
operation name as well is its input and output message names. So, the facility
to support method overloading was built in to WSDL4J, but a wierd quirk occurs
with overloaded SOAP Methods and the WSDL4J method. One of the overloaded
methods omits the name property within the input and output message, ie, they
have a null name. The other operations with same name all have name properties
for the input/output message, which does effectively distinguish them. However,
when this problematic WSDL4J method is called with two nulls for the
input/output message names, it basically acts as if the operation its looking
for doesn't need to be distinguished by input/output message names. It
effectively ignores them. When the WSDL4J method is called with an overloaded operation that contains
null input/output message names, a duplicate error occurs because it sees other
operations with the same name. To fix this problem, we have modified the code in the WSDL4J method to treat
passing null for input/output message names as a unique function signature. So,
passing in ("MyMethod", null, null) would be distinguishable from passing in,
say, ("MyMethod", "MyInputName", "MyOutputName"). To download the modified WSDL4J library, please click here. We are providing this library on an "as-is" basis and make no representations
or warranties of any kind. |