[ http://issues.apache.org/jira/browse/CXF-197?page=comments#action_12446497 ] Freeman Fang commented on CXF-197: ----------------------------------
Hi Conrad, I had done some work of the context mapping in CXF, I can give you some explanations. First, CXF has a jax-ws front end to wrap all the things about the jax-ws, so I implemented an mapper which get the connection between jax-ws context and rt-core message context. Current CXF jax-ws front end mapper just implement a limited mapping of BindingProvider and MessageContext's defined properties to rt-core, that is why you can't use javax.xml.ws.handler.MessageContext.HTTP_REQUEST_HEADERS to get the request headers. Second, I went though the code and found the http header which you want to pass to the response wouldn't take any effect because you just set on the context ( which we get from inMessage's context)and it would not effect to outMessage's context in current code. So I will fill an JIRA and look into it today :) > javax.xml.ws.handler.MessageContext.HTTP_REQUEST_HEADERS and > HTTP_RESPONSE_HEADERS can't work > ---------------------------------------------------------------------------------------------- > > Key: CXF-197 > URL: http://issues.apache.org/jira/browse/CXF-197 > Project: CXF > Issue Type: Bug > Reporter: willem Jiang > Assigned To: willem Jiang > Fix For: 2.0-M1 > > > I'm porting a RESTy service from Celtix 1.something to CXF and have noticed > some differences in the way the HTTP protocol headers are handled. > For example, in a service implemented using a Provider, I've tried getting > the headers from the MessageContext like this: > ctx.get(javax.xml.ws.handler.MessageContext.HTTP_REQUEST_HEADERS); > This returns null though. Calling: > Map<String, List<String>>hdrs = ctx.get > (org.apache.cxf.message.Message.PROTOCOL_HEADERS); > works though and I can get the headers ok. > I also need to set the response headers and should be able to set a header > like this: > Map<String, List<String>>hdrs = ctx.get > (javax.xml.ws.handler.MessageContext.HTTP_RESPONSE_HEADERS); > hdrs.put(headerName, headerValue); > and have it added to the outgoing response. However, as above using the > MessageContext property does not return anything. I've tried using the > org.apache.cxf.message.Message property like this > Map<String, List<String>>hdrs = ctx.get > (org.apache.cxf.message.Message.PROTOCOL_HEADERS); > hdrs.put(headerName, headerValue); > but there's no sign that the header has been correctly added. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
