Description
When we moved from 1.1.1 to 1.2, we changed the codegen to create a different stub object per WSDL port.
This had the following three consequences:
1) The Stub name is more complex and frankly ugly
instead of PurchaseStub I get PurchasePurchaseSOAP12Port_httpStub
2) There are more classes lying around (for a standard Axis2 service it now generates 6 classes instead of 2). It also means there are now warnings raised on the command line where classes are shared between stubs.
Jun 20, 2007 3:40:03 PM org.apache.axis2.wsdl.codegen.writer.ClassWriter createOutFile
INFO: The .\src\sample\axisversion\GetVersionFaultException.java file cannot be overwritten.
Jun 20, 2007 3:40:03 PM org.apache.axis2.wsdl.codegen.writer.ClassWriter createOutFile
INFO: The .\src\sample\axisversion\GetVersionFaultException.java file cannot be overwritten.
3) Its really hard to find the correct databinding class for the parameters of the stub. There are now multiple copies of each databinding class (as inner classes inside the different stubs). When I do code completion in Eclipse its pretty hard to figure out the right class, and I guess for a beginner maybe impossible.
Now I realize that there are some wierd WSDLs out there, and maybe just maybe 1% of the time we need to do this. But in 99% of cases, and 100% of cases where Axis2 created the WSDL, this is unnecessary.
I know what is gonna be said: I can use -pn Portname to explicitly choose one port. But that requires me to (1) be able to read WSDL correctly and (2) actually know about this option. Neither of those are appropriate for a beginner and also even for an advanced user they make life difficult.
My proposal is simple - choose one port (how about the SOAP12 if it exists, then the SOAP11 one, then the HTTP one) and only generate code for that. Add a switch to generate all ports if required. I can't see why I need more than one working stub. If SOAP12 is working why do I care about having a SOAP11 stub lying around.