I am using the eclipse phase and axis2 1.4.1 to create a web service. My problem is that during the generation process, namespaces are repeated across all nodes. As you can see below, ns4 is repeated rather than declared in the NewOperationResponse node.
How can I get java2wdsl (or eclipse) to generate this automatically (only in the parent node or top node)? Do I need to change something to wsdl or xsd?
Thank!
WS Response
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<NewOperationResponse xmlns="http://www.example.org/Test">
<out>
<ns4:areaCode xmlns:ns4="http://www.example.org/Test/Simple">0</ns4:areaCode>
<ns4:exchange xmlns:ns4="http://www.example.org/Test/Simple">0</ns4:exchange>
<ns4:number xmlns:ns4="http://www.example.org/Test/Simple">12</ns4:number>
</out>
</NewOperationResponse>
</soapenv:Body>
</soapenv:Envelope>
Wsdl
<wsdl:types>
<xsd:schema targetNamespace="http://www.example.org/Test"
xmlns:simple="http://www.example.org/Test/Simple"
elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.1">
<xsd:import namespace="http://www.example.org/Test/Simple" schemaLocation="Simple.xsd" />
<xsd:element name="NewOperation">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="in" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="NewOperationResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="out" type="simple:Phone" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="NewOperationRequest">
<wsdl:part element="tns:NewOperation" name="parameters" />
</wsdl:message>
<wsdl:message name="NewOperationResponse">
<wsdl:part element="tns:NewOperationResponse" name="parameters" />
</wsdl:message>
<wsdl:portType name="Test">
<wsdl:operation name="NewOperation">
<wsdl:input message="tns:NewOperationRequest" />
<wsdl:output message="tns:NewOperationResponse" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="TestSOAP" type="tns:Test">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http" />
<wsdl:operation name="NewOperation">
<soap:operation soapAction="" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Test">
<wsdl:port binding="tns:TestSOAP" name="TestSOAP">
<soap:address location="http://localhost:8084/WSDLProject/services/Test" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
simple.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://www.example.org/Test/Simple"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
attributeFormDefault="qualified">
<xs:complexType name="Phone">
<xs:sequence>
<xs:element name="areaCode" type="xs:int" />
<xs:element name="exchange" type="xs:int" />
<xs:element name="number" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:schema>
source
share