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.