2012-04-10 6 views
2

私は非常に基本的なXMLRPCサーブレット・サーバーを実行しています。つまり、Apacheの人々(http://ws.apache.org/xmlrpc/server.html)が提案したデフォルトに従います。Apache XMLRPC環境内でユーザーのIPアドレスを要求しますか?

私の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; 
} 

(明らかにこれはおもちゃの例ですが、私はそれを行う方法を知っていたならば、私ができます私のプログラムでやりたかったことをやってください)

ありがとう!!

答えて

1

リクエストを処理するときには、HttpServletRequestのインスタンスにアクセスできます。このオブジェクトはメソッドgetRemoteAddr()を提供します。

また、よくある質問では、this snippetを取得し、ThreadLocalとしてIPを取得して保存するので、今後アクセスすることができます(これは多分あなたが望むもの以上です)。

スニペットの再生は次のとおりです。

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); 
    } 
} 
+0

は素晴らしい仕事を!どうもありがとうございました! – justinemarie

関連する問題