2012-08-30 34 views

回答

5

我想,你可以嘗試這樣的:

PhaseInterceptorChain.getCurrentMessage().get("..."); 

要找到確切的關鍵cotaining請求使用 - PhaseInterceptorChain.getCurrentMessage().keySet();。它應該包含像Http Request之類的東西。

希望這會有所幫助。

乾杯!

+1

我試了下面的代碼,它似乎工作。 PhaseInterceptorChain.getCurrentMessage()。get(「HTTP.REQUEST」) – ryan

3

您可以使用:org.apache.cxf.jaxrs.ext.MessageContext類來檢索HttpServletRequest。在你的實施中加入:

@Context 
private MessageContext context; 

HttpServletRequest request = context.getHttpServletRequest(); 

你會得到請求。

+2

這可以工作,除非你的服務bean是默認的單例。在這種情況下,您需要將注入到服務方法中的上下文如下所示:'foo(@Context MessageContext context,...)'。 –

2
@Resource 
WebServiceContext wsContext; 
@Context 
private HttpServletRequest request; 

private HttpServletRequest getRequest() { 
    MessageContext mc = wsContext.getMessageContext(); 
    HttpServletRequest req; 
    if (mc != null) { 
     req = (HttpServletRequest) mc.get(MessageContext.SERVLET_REQUEST); 
    } else { 
     req = request; 
    } 
    return req; 
} 
相關問題