RPCMessageReceiver creates array response in wrong XML namespace ----------------------------------------------------------------
Key: AXIS2-1606 URL: http://issues.apache.org/jira/browse/AXIS2-1606 Project: Apache Axis 2.0 (Axis2) Issue Type: Bug Affects Versions: nightly Environment: all environments Reporter: Robert Staerk I get a SOAP response with the wrong XML namespace "http://org.apache.axis2/xsd" for a method that returns an array of objects. The namespace "http://org.apache.axis2/xsd", however is neither used in the project nor mentioned in the WSDL. In the example below, the namespace should be "http://service.mydomain.com/xsd". I am using org.apache.axis2.rpc.receivers.RPCMessageReceiver. SOAP response: <?xml version='1.0' encoding='UTF-8'?> <soapenv:Envelope xmlns:soapenv = "http://www.w3.org/2003/05/soap-envelope"> <soapenv:Header/> <soapenv:Body> <ns:sayHelloResponse xmlns:ns = "http://org.apache.axis2/xsd"> <ns:return> <ns:text>Hello,</ns:text> </ns:return> <ns:return> <ns:text>World!</ns:text> </ns:return> </ns:sayHelloResponse> </soapenv:Body> </soapenv:Envelope> Server.xml config: <service name="Hello" scope="application"> <description> The Hello web service. </description> <messageReceivers> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> </messageReceivers> <parameter name="ServiceClass" locked="false"> com.mydomain.service.Hello </parameter> </service> Java classes: package com.mydomain.service; import java.rmi.RemoteException; import com.mydomain.data.MyObject; public class Hello { public MyObject[] sayHello() throws RemoteException { return new MyObject[] { new MyObject("Hello,"), new MyObject("World!") }; } } package com.mydomain.data; public class MyObject { private String text; public MyObject() { // empty } public MyObject(String text) { super(); this.text = text; } public String getText() { return text; } public void setText(String text) { this.text = text; } } WSDL generated by org.apache.ws.java2wsdl.Java2WSDL: <wsdl:definitions xmlns:axis2 = "http://service.mydomain.com" xmlns:soap12 = "http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http = "http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime = "http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ns = "http://service.mydomain.com/xsd" xmlns:soap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl = "http://schemas.xmlsoap.org/wsdl/" targetNamespace = "http://service.mydomain.com"> <wsdl:types> <xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema" xmlns:ax21 = "http://data.mydomain.com/xsd" attributeFormDefault = "qualified" elementFormDefault = "qualified" targetNamespace = "http://data.mydomain.com/xsd"> <xs:element name = "MyObject" type = "ax21:MyObject"/> <xs:complexType name = "MyObject"> <xs:sequence> <xs:element name = "text" nillable = "true" type = "xs:string"/> </xs:sequence> </xs:complexType> </xs:schema> <xs:schema xmlns:xs = "http://www.w3.org/2001/XMLSchema" xmlns:ns0 = "http://data.mydomain.com/xsd" attributeFormDefault = "qualified" elementFormDefault = "qualified" targetNamespace = "http://service.mydomain.com/xsd"> <xs:element name = "sayHelloFault"> <xs:complexType> <xs:sequence> <xs:element name = "sayHelloFault" type = "xs:anyType"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name = "sayHelloResponse"> <xs:complexType> <xs:sequence> <xs:element maxOccurs = "unbounded" name = "return" nillable = "true" type = "ns0:MyObject"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types> <wsdl:message name = "sayHelloMessage"/> <wsdl:message name = "sayHelloResponseMessage"> <wsdl:part name = "part1" element = "ns:sayHelloResponse"/> </wsdl:message> <wsdl:message name = "sayHelloFault"> <wsdl:part name = "part1" element = "ns:sayHelloFault"/> </wsdl:message> <wsdl:portType name = "HelloPortType"> <wsdl:operation name = "sayHello"> <wsdl:input message = "axis2:sayHelloMessage"/> <wsdl:output message = "axis2:sayHelloResponseMessage"/> <wsdl:fault message = "axis2:sayHelloFault" name = "sayHelloFault"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name = "HelloSOAP11Binding" type = "axis2:HelloPortType"> <soap:binding transport = "http://schemas.xmlsoap.org/soap/http" style = "document"/> <wsdl:operation name = "sayHello"> <soap:operation soapAction = "urn:sayHello" style = "document"/> <wsdl:input> <soap:body use = "literal" namespace = "http://service.mydomain.com"/> </wsdl:input> <wsdl:output> <soap:body use = "literal" namespace = "http://service.mydomain.com"/> </wsdl:output> <wsdl:fault name = "sayHelloFault"> <soap:body use = "literal" namespace = "http://service.mydomain.com"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:binding name = "HelloSOAP12Binding" type = "axis2:HelloPortType"> <soap12:binding transport = "http://schemas.xmlsoap.org/soap/http" style = "document"/> <wsdl:operation name = "sayHello"> <soap12:operation soapAction = "urn:sayHello" style = "document"/> <wsdl:input> <soap12:body use = "literal" namespace = "http://service.mydomain.com"/> </wsdl:input> <wsdl:output> <soap12:body use = "literal" namespace = "http://service.mydomain.com"/> </wsdl:output> <wsdl:fault name = "sayHelloFault"> <soap12:body use = "literal" namespace = "http://service.mydomain.com"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name = "Hello"> <wsdl:port name = "HelloSOAP11port" binding = "axis2:HelloSOAP11Binding"> <soap:address location = "http://localhost:8080/axis2/services/Hello"/> </wsdl:port> <wsdl:port name = "HelloSOAP12port" binding = "axis2:HelloSOAP12Binding"> <soap12:address location = "http://localhost:8080/axis2/services/Hello"/> </wsdl:port> </wsdl:service> </wsdl:definitions> -- 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 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]