我用下面的代码获取客户端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