[ http://issues.apache.org/jira/browse/AXIS2-544?page=comments#action_12372952 ]
Sebastian Mittelstädt commented on AXIS2-544: --------------------------------------------- I got it running, when you specify no namespaces (no -tn -tp -stn -stp) the generated WSDL is valid. HOWEVER: When specifying namespaces, the generated WSDL contains errors at the wsdl:message definitions: The wsdl:part element is buggy. The "element" attribute gets assigned the wrong namespace, it gets actually assigned the TNS of the WSDL, but it must be assigned the schema-namespace. In addition, the schema-namespace has to be be declared at the wsdl:definitions element. Here is the generated invalid WSDL: <?xml version="1.0" encoding="UTF-8"?> <wsdl:definitions targetNamespace="http://ws.apache.org/axis2" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://ws.apache.org/axis2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns1="http://org.apache.axis2/xsd"> <wsdl:types> <xs:schema targetNamespace="com.mycompany.r002.schema" elementFormDefault="unqualified" attributeFormDefault="unqualified" xmlns:r002schema="com.mycompany.r002.schema"> <!-- Some definitions omitted --> <xs:element name="calculate"> <xs:complexType> <xs:sequence> <xs:element type="r002schema:Input" name="param0"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="calculateResponse"> <xs:complexType> <xs:sequence> <xs:element type="r002schema:Output" name="return"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types> <wsdl:message name="calculateRequestMessage"> <wsdl:part element="ns1:calculate" name="part1"/> </wsdl:message> <wsdl:message name="calculateReponseMessage"> <wsdl:part element="ns1:calculateResponse" name="part1"/> </wsdl:message> <wsdl:portType name="r002PortType"> <wsdl:operation name="calculate"> <wsdl:input message="tns:calculateRequestMessage"/> <wsdl:output message="tns:calculateReponseMessage"/> </wsdl:operation> </wsdl:portType> <wsdl:binding type="tns:r002PortType" name="r002SOAP11Binding"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="calculate"> <soap:operation style="document" soapAction="calculate"/> <wsdl:input> <soap:body namespace="com.mycompany.r002" use="literal"/> </wsdl:input> <wsdl:output> <soap:body namespace="com.mycompany.r002" use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="r002"> <wsdl:port binding="tns:r002SOAP11Binding" name="r002port"> <soap:address location="http://localhost:8080/axis2/services/r002"/> </wsdl:port> </wsdl:service> </wsdl:definitions> Have a look at this <snippet> <wsdl:message name="calculateRequestMessage"> <wsdl:part element="ns1:calculate" name="part1"/> </wsdl:message> </snippet> Actually, ns1 is xmlns:ns1="http://org.apache.axis2/xsd". But for the WSDL to be valid, the namespace has to be r002schema, the schema-namespace. Correct would be <snippet> <wsdl:message name="calculateRequestMessage"> <wsdl:part element="r002schema:calculate" name="part1"/> </wsdl:message> </snippet> The namespace r002schema is xmlns:r002schema="com.mycompany.r002.schema", but it is actually only defined at the schema. For the WSDL to be valid, it has to be declared at the wsdl:definitions element. With those changes, the WSDL is valid. > Java2WSDL generates invalid WSDL > -------------------------------- > > Key: AXIS2-544 > URL: http://issues.apache.org/jira/browse/AXIS2-544 > Project: Apache Axis 2.0 (Axis2) > Type: Bug > Components: Tools > Versions: 0.95 > Reporter: Sebastian Mittelstädt > > In 0.95, the Java2WSDL class generates invalid WSDL. > The following WSDL was generated with Java2WSDL: > java2wsdl -cn com.mycompany.r002.R002 -cp bin -tn http://com.mycompany.r002 > -stn http://com.mycompany.r002.schema -stp r002schema -sn r002 -of r002.wsdl > This generated the following WSDL: > <?xml version="1.0" encoding="UTF-8"?> > <wsdl:definitions targetNamespace="http://com.mycompany.r002" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" > xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" > xmlns:tns="http://com.mycompany.r002"> > <wsdl:types> > <xs:schema targetNamespace="http://com.mycompany.r002.schema" > elementFormDefault="unqualified" attributeFormDefault="unqualified" > xmlns:r002schema="http://com.mycompany.r002.schema"> > <!-- Type definitions (omitted) --> > </xs:schema> > </wsdl:types> > <wsdl:message name="calculateResponseMessage"> > <wsdl:part name="part1" element="r002schema:calculateResponse"/> > </wsdl:message> > <wsdl:message name="calculateRequestMessage"> > <wsdl:part name="part1" element="r002schema:calculateRequest"/> > </wsdl:message> > <wsdl:portType name="r002PortType"> > <wsdl:operation name="calculate"> > <wsdl:input message="tns:calculateRequestMessage"/> > <wsdl:output message="tns:calculateResponseMessage"/> > </wsdl:operation> > </wsdl:portType> > <wsdl:binding name="r002Binding" type="tns:r002PortType"> > <soap:binding transport="http://schemas.xmlsoap.org/soap/http" > style="document"/> > <wsdl:operation name="calculate"> > <soap:operation soapAction="calculate" style="document"/> > <wsdl:input> > <soap:body use="literal" namespace="http://com.mycompany.r002"/> > </wsdl:input> > <wsdl:output> > <soap:body use="literal" namespace="http://com.mycompany.r002"/> > </wsdl:output> > </wsdl:operation> > </wsdl:binding> > <wsdl:service name="r002"> > <wsdl:port name="r002Port" binding="axis2:r002Binding"> > <soap:address location="http://127.0.0.1:8080/axis2/services/r002"/> > </wsdl:port> > </wsdl:service> > </wsdl:definitions> > This WSDL is invalid due to the following errors: > - The value 'axis2:r002Binding' of attribute 'binding' on element 'wsdl:port' > is not valid with respect to its type, 'QName'. > - The value 'r002schema:calculateRequest' of attribute 'element' on element > 'wsdl:part' is not valid with respect to its type, 'QName'. > - The value 'r002schema:calculateResponse' of attribute 'element' on element > 'wsdl:part' is not valid with respect to its type, 'QName'. > - Cannot resolve 'axis2:r002Binding' as a QName: the prefix 'axis2' is not > declared. > - Cannot resolve 'r002schema:calculateRequest' as a QName: the prefix > 'r002schema' is not declared. > - Cannot resolve 'r002schema:calculateResponse' as a QName: the prefix > 'r002schema' is not declared. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
