2

我有一个非常基本的 XMLRPC Servlet 服务器正在运行 - 完全遵循 Apache 人员建议的默认设置 (http://ws.apache.org/xmlrpc/server.html)。

我有什么方法可以从我的 XMLRPC 函数中访问请求者的 IP 地址吗?我正在设计一项服务,该服务通过 IP 地址记录从不同用户收到的请求。

例如,如果我从他们的示例中获取 Calculator 类,我可能会执行类似的操作,

public int add(int a, int b){
   IPAddress user = {magic incantation};
   Log.info("Summed " + a + " and " + b + " for " + user);
   return a + b;
}

(显然这是一个玩具示例,但如果我知道该怎么做,我可以在我的程序中做我想做的事)

非常感谢!!

4

1 回答 1

1

处理请求时,您可以访问HttpServletRequest. 此对象提供方法getRemoteAddr()

另外:在常见问题解答中,您会发现此代码段用于获取 IP 并将其存储为 a ThreadLocal,以便您以后可以访问它(也许这比您想要的要多)。

片段的复制是:

public static class ClientInfoServlet extends XmlRpcServlet {
    private static ThreadLocal clientIpAddress = new ThreadLocal();

    public static String getClientIpAddress() {
        return (String) clientIpAddress.get();
    }

    public void doPost(HttpServletRequest pRequest, HttpServletResponse pResponse)
            throws IOException, ServletException {
        clientIpAddress.set(pRequest.getRemoteAddr());
        super.doPost(pRequest, pResponse);
    }
}
于 2012-04-10T09:57:24.627 回答