Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
1.1 Final
-
None
-
Axis C 1.1.1
Windows
Description
If the WSDL port operation uses messages that are the same element type, wsdl2ws chokes. Here's an example of such a case:
<message name="EchoInput">
<part element="tns:myBean" name="request"/>
</message>
<message name="EchoOutput">
<part element="tns:myBean" name="result"/>
</message>
<portType name="EchoPortType">
<operation name="echo">
<input message="tns:EchoInput"/>
<output message="tns:EchoOutput"/>
</operation>
</portType>
Here's the output of running it through wsdl2ws:
1
-
-
-
-
-
-
-
-
-
-
-
-
-
- the type found ={http://www.acme.com
}>myBean
Exception in thread "main" org.apache.axis.wsdl.wsdl2ws.WrapperFault: unregister
d type {http://www.acme.com}>myBean refered
at org.apache.axis.wsdl.wsdl2ws.WSDL2Ws.getServiceInfo(Unknown Source)
at org.apache.axis.wsdl.wsdl2ws.WSDL2Ws.genarateWrappers(Unknown Source)
- the type found ={http://www.acme.com
-
-
-
-
-
-
-
-
-
-
-
-
at org.apache.axis.wsdl.wsdl2ws.WSDL2Ws.main(Unknown Source)
I traced the issue back to WSDL2Ws.getServiceInfo(). There's a call to remove the type that represents the wrapping element:
this.typeMap.removeType(qname);
The typeMap has the type >myBean prior to this call. When the loop iterates through again to process the return type, it can no longer find >myBean.