Hi Benjamin,

Can you send your code, better create a JIRA and attach your code. I will re-produce and look in to the bug.

BTW, the message you have constructed is wrong. You will never have wsa:EndpointReference element in the soap header.

chinthaka

Benjamin Bender wrote:

Hi I'm using Axis2 for Java and I try to send messages with the following content and
the following style between the server and a client

<soapenv:Header xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing";>
    <wsa:EndpointReference>
      <wsa:Address>
        http://localhost:5988/root/cimv2:Linux_OperatingSystem
      </wsa:Address>
      <wsa:ReferenceParameters
xmlns:linux_os="http://localhost:8080/WSDM/Linux_OperatingSystem.xsd";>
        <linux_os:CreationClassName>
          Linux_OperatingSystem
        </linux_os:CreationClassName>
        <linux_os:CSCreationClassName>
          Linux_ComputerSystem
        </linux_os:CSCreationClassName>
        <linux_os:CSName>localhost.localdomain</linux_os:CSName>
        <linux_os:Name>localhost.localdomain</linux_os:Name>
      </wsa:ReferenceParameters>
    </wsa:EndpointReference>
        ...
  </soapenv:Header>

But if I try to construct this EndpointReference or any other OMElement then namespace definitions that are defined a second time in a subelement are not
removed from the subelements. I can only construct the following:

<soapenv:Header xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing";>
    <wsa:EndpointReference>
      <wsa:Address>
        http://localhost:5988/root/cimv2:Linux_OperatingSystem
      </wsa:Address>
<wsa:ReferenceParameters xmlns:linux_os="http://localhost:8080/WSDM/Linux_OperatingSystem.xsd";> <linux_os:CreationClassName xmlns:linux_os="http://localhost:8080/WSDM/Linux_OperatingSystem.xsd";>
          Linux_OperatingSystem
        </linux_os:CreationClassName>
<linux_os:CSCreationClassName xmlns:linux_os="http://localhost:8080/WSDM/Linux_OperatingSystem.xsd";>
          Linux_ComputerSystem
        </linux_os:CSCreationClassName>
<linux_os:CSName xmlns:linux_os="http://localhost:8080/WSDM/Linux_OperatingSystem.xsd";>
          localhost.localdomain
        </linux_os:CSName>
<linux_os:Name xmlns:linux_os="http://localhost:8080/WSDM/Linux_OperatingSystem.xsd";>
          localhost.localdomain
        </linux_os:Name>
      </wsa:ReferenceParameters>
    </wsa:EndpointReference>
        ...
  </soapenv:Header>

My problem is that the xmlns:linux_os is still defined in every subelement of wsa:ReferenceParameters although xmlns:linux_os is already defined in wsa:ReferenceParameters. This makes the message larger than it has to be.

Can anybody tell me how I can build a message like in the first sample or is it a bug in Axis that the namespace definitions of the subelements are not removed. I don't have the problem with the definition of the xmlns:wsa, here the namespace definition is removed in the subelements. The problem appears only if an OMElement declares more than
one namespace.

Any hint is welcome.
Thanks,
Ben

Reply via email to