Hi, I’m having problems with the code generated by wsdl2java (precisely using the maven2 plugin). I'm using Axis2 1.3 with the ADB binding.
It seems that the generator gets confused because an operation is declared in a given XML namespace and a bean used in the response of the operation is declared in a different namespace. The sample WSDL below illustrates the situation. The operation "timer" and its associated messages "timerRequest" and "timerResponse" belong to the namespace "http://mycompany.com/myservice" however the data structure ReturnStructure is defined with the namespace "http://mycompany.com/core/beans". In this situation, the generated code for the message TimerResponse expects an element ReturnStructure with namespace http://mycompany.com/myservice instead of "http://mycompany.com/core/beans". When the code is run, the parse method of TimerResponse class throws an ADBException "Unexepected subelement ReturnStructure" when the response is parsed. Is there something wrong with my WSDL (which is generated using another tool)? Or is this a bug? Help would be appreciated... Regards Benoit ====== The part of my pom.xml that defines the use of the maven2 plugin: <build> <plugins> <plugin> <groupId>org.apache.axis2</groupId> <artifactId>axis2-wsdl2code-maven-plugin</artifactId> <version>1.3</version> <executions> <execution> <goals> <goal>wsdl2code</goal> </goals> <configuration> <databindingName>adb</databindingName> <packageName>org.mycompany.myservice.axis2client</packageName> <wsdlFile>src/main/resources/myservice.wsdl</wsdlFile> <outputDirectory>target/generated-sources/axis2/wsdl2code</outputDirectory> <unpackClasses>true</unpackClasses> <syncMode>sync</syncMode> </configuration> </execution> </executions> </plugin> </plugins> </build> ====== The portion of code that causes the problem is located in TimerResponse.java if (reader.isStartElement() && new javax.xml.namespace.QName("http://mycompany.com/myservice","ReturnStructure").equals(reader.getName())){ nillableValue = reader.getAttributeValue("http://www.w3.org/2001/XMLSchema-instance","nil"); if ("true".equals(nillableValue) || "1".equals(nillableValue)){ object.setReturnStructure(null); reader.next(); reader.next(); }else{ object.setReturnStructure(com.mycompany.core.beans.ReturnStructure.Factory.parse(reader)); reader.next(); } } // End of if for expected property start element else{ // A start element we are not expecting indicates an invalid parameter was passed throw new org.apache.axis2.databinding.ADBException("Unexpected subelement " + reader.getLocalName()); } ===== The WSDL: <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://mycompany.com/myservice" xmlns:tns="http://mycompany.com/myservice" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1="http://mycompany.com/core/beans" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> <wsdl:types> <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://mycompany.com/core/beans"> <complexType name="ReturnStructure"> <sequence> <element maxOccurs="1" minOccurs="1" name="code" type="int"></element> <element maxOccurs="1" minOccurs="0" name="subCode" type="int"></element> <element maxOccurs="1" minOccurs="0" name="message" type="string"></element> </sequence> </complexType> </schema> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://mycompany.com/myservice"> <xsd:element name="timer"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="nbExecutions" type="xsd:int" /> <xsd:element maxOccurs="1" minOccurs="1" name="lapDuration" type="xsd:int" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="timerResponse"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="ReturnStructure" nillable="true" type="ns1:ReturnStructure" /> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </wsdl:types> <wsdl:message name="timerRequest"> <wsdl:part name="parameters" element="tns:timer" /> </wsdl:message> <wsdl:message name="timerResponse"> <wsdl:part name="parameters" element="tns:timerResponse" /> </wsdl:message> <wsdl:portType name="MyService"> <wsdl:operation name="timer"> <wsdl:input name="timerRequest" message="tns:timerRequest" /> <wsdl:output name="timerResponse" message="tns:timerResponse" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="MyServiceHttpBinding" type="tns:MyService"> <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" /> <wsdl:operation name="timer"> <wsdlsoap:operation soapAction="" /> <wsdl:input name="timerRequest"> <wsdlsoap:body use="literal" /> </wsdl:input> <wsdl:output name="timerResponse"> <wsdlsoap:body use="literal" /> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="MyService"> <wsdl:port name="MyServiceHttpPort" binding="tns:MyServiceHttpBinding"> <wsdlsoap:address location="http://myserver:30075/services/MyService" /> </wsdl:port> </wsdl:service> </wsdl:definitions> Benoît Guillon * NTIC * SunGard * Asset Arena Investment Accounting * 7 rue Royale, 173 Bureaux de la Colline, Bâtiment E, 92213 Saint-Cloud Cedex, France * Tel +33 1 49 11 31 87 * Fax +33 1 49 11 30 30 * www.sungard.com/assetarena -- View this message in context: http://www.nabble.com/wsdl2java-namespace-problem-tf4777892.html#a13667692 Sent from the Axis - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
