20

JAX-WS を使用していますが、Web サービスを使用しているクライアント情報を取得できません。私は JAX-RPC と Apache Tomcat Axis でそれを行う方法を見つけましたが、JAX-WS ではそうではありませんでした。誰かがこれについて考えを持っていますか?

4

4 に答える 4

49

これはどうですか:

@WebService
public class MyService {

  @Resource
  WebServiceContext wsContext; 

  /**
   * Web service operation
   */ 
  @WebMethod 
  public String myMethod() { 

    MessageContext mc = wsContext.getMessageContext();
    HttpServletRequest req = (HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST); 
    System.out.println("Client IP = " + req.getRemoteAddr()); 

  }

} 
于 2009-10-29T04:30:14.850 に答える
5

またはこれ:

@Path("ターミナル")
パブリック クラス ターミナル {
    @Context プライベート javax.servlet.http.HttpServletRequest hsr;
    @得る
    @Path("get_ip")
    @Produces("テキスト/プレーン")
    パブリック文字列 get_ip()
    {
            return ip = hsr.getRemoteAddr();
    }
}
于 2010-12-14T07:54:13.990 に答える
3

Zayin と Darren の回答/編集から非常に高く評価されたヒントを得て、これを試してみましたが、これも機能します。

@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("ip")
public String sayIP(@Context HttpServletRequest req, @QueryParam("p1") String p1, ...) {
    return req.getRemoteAddr();
}
于 2012-06-06T02:07:33.197 に答える