Hi,

Alternatively you can inject WebServiceContext in your service:

@Resource 
private WebServiceContext context;

And get soap header values in your business code:

private List<Header> getHeaders() {
    MessageContext messageContext = context.getMessageContext();
    if (messageContext == null || !(messageContext instanceof 
WrappedMessageContext)) {
        return null;
    }
    Message message = ((WrappedMessageContext) 
messageContext).getWrappedMessage();
    return CastUtils.cast((List<?>) message.get(Header.HEADER_LIST));
}

private String getHeader(String name) {
    List<Header> headers = getHeaders();
    if (headers != null) {
        for (Header header : headers) {
            logger.debug(header.getObject());
            // return header by the given name                   
        }
    }
    return null;
}

Regards,
Andrei.

> -----Original Message-----
> From: adu [mailto:[email protected]]
> Sent: Mittwoch, 6. November 2013 13:22
> To: [email protected]
> Subject: Re: How to share data between soap header and web service
> methods in apache cxf
> 
> Thanks @Freeman and @Mark.
> I tired the PhaseInterceptorChain.getCurrentMessage and it works.
> 
> Message msg = PhaseInterceptorChain.getCurrentMessage();
> List<Header> headers = CastUtils.cast((List<?>)
> msg.get(Header.HEADER_LIST)); for(Header hd : headers){
>                               if (hd!=null){
>                               Element e = (Element)hd.getObject();
>                               System.out.println("dom element is ---> " +
> e);
>                               System.out.println("value sent is ---> " +
> e.getTextContent());
>                               }
> 
> 
> 
> 
> --
> View this message in context: http://cxf.547215.n5.nabble.com/How-to-
> share-data-between-soap-header-and-web-service-methods-in-apache-
> cxf-tp5735950p5736004.html
> Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to