Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-3840

WS-Addressing and WS-RM: Nested Reference Parameters in request are not supported and become concatenated in the response to client



    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 2.4.2
    • 2.5, 2.4.4, 2.3.8
    • WS-* Components
    • None
    • Client: Oracle Service Bus 11g R1 Patchset 3
      Server : RedHat SOA Platform 5.1.0.GA with CXF
      OS: Windows XP SP3

    • Unknown


      I have created a test one way ping service on JBoss using CXF with Addressing and WS-RM. JBoss client to JBoss service works fine.

      I have then created a service client on Oracle Service Bus (OSB) to the same service.

      OSB creates reference parameters as follows:

      <wsa:ReferenceParameters xmlns:serviceidentity="http://www.bea.com/ServiceIdentity">
      <serviceidentity:ServiceIdentity xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility" xmlns:serviceidentity="http://www.bea.com/ServiceIdentity">

      and JBoss returns (as an element in the soap header)

      <ns2:ServiceIdentity xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:ns2="http://www.bea.com/ServiceIdentity" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" wsa:IsReferenceParameter="1">AdminServerweblogic.wsee.conversation.msg.cluster.service</ns2:ServiceIdentity>

      So, I have looked at the CXF source and see that there is no provision for nested reference parameters as provided by OSB. Hence 2 child elements in the reference parameter returns a concatenated object that we see in the CXF response.

      In section 2.3 of the WS-Addressing Spec (http://www.w3.org/Submission/ws-addressing/), the second rule states that:

      Each [reference property] and [reference parameter] element becomes a header block in the SOAP message. The element information item of each [reference property] or [reference parameter] (including all of its [children], [attributes] and [in-scope namespaces]) is to be added as a header block in the new message.

      The key in here is the [children], which implies that child elements of a reference parameter are acceptable and should be processed.

      The MAPCodec.encodeReferenceParameters class.method in CXF does not appear to cater for nested reference parameter elements.

      Am I correct in my understanding and therefore, this is a bug?

      Many thanks in advance





            ema Jim Ma
            chriseebee Chris Bell
            0 Vote for this issue
            1 Start watching this issue