如何在没有 Servlet 过滤器的情况下在 JAX RPC Web 服务中获取客户端的 IP?

How to get client's IP in JAX RPC web services without Servlet Filter?

我必须记录正在使用我的 JAX RPC 网络服务服务器的客户端的 IP 地址。

IBM 建议使用 servlet 过滤器并使用 HTTP 请求获取 IP: http://www-01.ibm.com/support/docview.wss?uid=swg21304368

是否有其他方式获取请求? 我在服务器端使用 IBM WAS 8.5 和 SOAP 1.2。 谢谢

这对我有用:)

import com.ibm.ws.webservices.engine.MessageContext;
import com.ibm.ws.webservices.engine.transport.http.HTTPConstants;

.....

HttpServletRequest request = (HttpServletRequest) MessageContext.getCurrentThreadsContext().getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);

String clientIpAddress = request.getHeader("X-FORWARDED-FOR");

if (clientIpAddress == null) {
    clientIpAddress = request.getRemoteAddr();
}

System.out.println(clientIpAddress);