1

I have web service implemented in Apache CXF. Is there way how can I set SOAP header to request (server side) using AddressingProperties?

This works for me:

List<Header> headers = new ArrayList<Header>();
Header messageIDHeader = new Header(new QName("http://www.w3.org/2005/08/addressing", "MessageID", "wsa"), some_messageID, new JAXBDataBinding(String.class));
headers.add(messageIDHeader);
Header relatesToHeader = new Header(new QName("http://www.w3.org/2005/08/addressing", "RelatesTo", "wsa"), some_relatesTo_ID, new JAXBDataBinding(String.class));
headers.add(relatesToHeader);
wsContext.getMessageContext().put(Header.HEADER_LIST, headers);

But I would like to use org.apache.cxf.ws.addressing.AddressingProperties - something like this:

RelatesToType soapRelatesTo = new RelatesToType();
soapRelatesTo.setValue(some_relatesTo_ID);
soapAddressingHeaders.setRelatesTo(soapRelatesTo);

AttributedURIType soapMsgId = new AttributedURIType();
soapMsgId.setValue(some_messageID);
soapAddressingHeaders.setMessageID(soapMsgId);

How can I pass that to request? I am not able to set it through MessageContext

Fenix
  • 2,271
  • 1
  • 16
  • 24

1 Answers1

0

Adding soapAddressingHeaders to MessageContext

messageContext.put("http://www.w3.org/2005/08/addressing", soapAddressingHeaders);

works correctly but I forgot to enable WS-A addressing for CXF:

<jaxws:features>
        <wsa:addressing xmlns:wsa="http://cxf.apache.org/ws/addressing"/>
</jaxws:features>
Fenix
  • 2,271
  • 1
  • 16
  • 24