我用下面的代碼獲取客戶端IP地址爲JAX-WS單向方法調用:可靠的方式在CXF的JAX-WS單向方法調用來獲取客戶端IP地址
protected HttpServletRequest getServletRequest() {
MessageContext ctx = wsContext.getMessageContext();
return (HttpServletRequest) ctx.get(MessageContext.SERVLET_REQUEST);
}
protected synchronized String getClientIp() {
String clientIp = "";
HttpServletRequest request = getServletRequest();
if (request != null) {
clientIp = request.getRemoteAddr();
// Handle proxy
String header = request.getHeader("x-forwarded-for");
if(header != null && !header.isEmpty()) {
clientIp = header.split(",")[0];
}
}
return clientIp;
}
當多個客戶端連接時,爲請求檢索到的IP地址偶爾會有來自先前請求的不正確的緩存值。獲得單向呼叫始發者IP地址的可靠方法是什麼?
我會仔細看一下WS-Addressing的,如果它可以提供幫助。 我正在使用在tomcat-6.0.35上運行的cxf-2.5.2。 – amo 2012-07-31 00:14:53