You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by lrxw <lr...@posteo.de> on 2016/09/07 09:05:10 UTC

Re: Setting HTTP header prevents SOAPAction header being set

I deployed the service on a full blown Websphere Application Server 
8.5.5 (which uses no CXF) and on a Tomcat with a newer version of CXF 
(3.0.7) and it worked on both servers. So I think the problem is in CXF 
2.6.2.

greetings

Am 30.08.2016 10:32 schrieb lrxw:
> Hi all,
> 
> Im using CXF and want to set some custom HTTP headers. I implemented a
> javax.xml.ws.handler.soap.SOAPHandler and accessed the
> SOAPMessageContext in the handleMessage method. But setting my custom
> header prevents something from setting the SOAPAction header. I
> realized, that at the time I access the headers map, there is no map
> yet. Thats why Im creating a new one and set my custom header to the
> map. Here is my code:
> 
> private void addTraceIdToHttpRequestHeader(SOAPMessageContext context) 
> {
> Object object = context.get(MessageContext.HTTP_REQUEST_HEADERS);
> 
> if (object != null) {
> if (object instanceof Map) {
> 	Map<String, List<String>> map = (Map) object;
> 	map.put(ContextKeys.TRACEID_HEADER_PARAM,
> Arrays.asList(LoggerUtils.getTraceId()));
> } else {
> 	logger.warn("not setting trace id into http request header. object
> for {} is of type '{}'",
> 			MessageContext.HTTP_REQUEST_HEADERS, object.getClass());
> }
> } else {
> Map<String, List<String>> map = new HashMap<String, List<String>>();
> map.put(ContextKeys.TRACEID_HEADER_PARAM,
> Arrays.asList(LoggerUtils.getTraceId()));
> context.put(MessageContext.HTTP_REQUEST_HEADERS, map);
> }
> }
> 
> This results in finding my custom http header in the request headers,
> but not the SOAPAction. If I remove my method, the SOAPAction is in
> the request.
> Even this breaks setting the SOAPAction:
> 
> private void addTraceIdToHttpRequestHeader(SOAPMessageContext context) 
> {
>     context.put(MessageContext.HTTP_REQUEST_HEADERS, null);
> }
> 
> Can anyone help me with this? Is this a CXF issue or is it an issue of
> an underlying framework/java? Or is it my fault?
> 
> Im using Websphere Liberty Profile and I think CXF 2.6.2. There are
> libs named "com.ibm.ws.org.apache.cxf-api.2.6.2_1.0.12.jar"
> 
> Greetings