所有如何訪問HttpServletRequest的在CXF簡單的前端服務類
我在 http://cxf.apache.org/docs/simple-frontend.html
創建使用CXF簡單的前端參照公文一個簡單的服務,我只是想知道我怎麼能在上面鏈接的例子中,在服務實現類HelloWorldImpl的方法中訪問HttpServletRequest。
任何幫助,將不勝感激。
問候
所有如何訪問HttpServletRequest的在CXF簡單的前端服務類
我在 http://cxf.apache.org/docs/simple-frontend.html
創建使用CXF簡單的前端參照公文一個簡單的服務,我只是想知道我怎麼能在上面鏈接的例子中,在服務實現類HelloWorldImpl的方法中訪問HttpServletRequest。
任何幫助,將不勝感激。
問候
我想,你可以嘗試這樣的:
PhaseInterceptorChain.getCurrentMessage().get("...");
要找到確切的關鍵cotaining請求使用 - PhaseInterceptorChain.getCurrentMessage().keySet();
。它應該包含像Http Request之類的東西。
希望這會有所幫助。
乾杯!
您可以使用:org.apache.cxf.jaxrs.ext.MessageContext
類來檢索HttpServletRequest
。在你的實施中加入:
@Context
private MessageContext context;
HttpServletRequest request = context.getHttpServletRequest();
你會得到請求。
這可以工作,除非你的服務bean是默認的單例。在這種情況下,您需要將注入到服務方法中的上下文如下所示:'foo(@Context MessageContext context,...)'。 –
@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;
}
我試了下面的代碼,它似乎工作。 PhaseInterceptorChain.getCurrentMessage()。get(「HTTP.REQUEST」) – ryan