2

私は非常に基本的な XMLRPC サーブレット サーバーを実行しています。文字通り、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()

また:FAQには、IPを取得して保存するためのこのスニペット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 に答える