web-dev-qa-db-ja.com

WebサービスのクライアントのIPアドレスを取得する

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

20
monksy

これはどうですか:

@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()); 

  }

} 
47
Pascal Thivent

またはこれ:

 @ Path( "terminal")
 public class terminal {
 @Context private javax.servlet.http.HttpServletRequest hsr; 
 @GET 
 @Path( "get_ip")
 @Produces( "text/plain")
 public String get_ip()
 {
 return ip = hsr.getRemoteAddr() ; 
} 
} 
4
Zayin Krige

ZayinとDarrenの回答/編集から膨大で高く評価されたヒントを取り入れて、私はこれを試しましたが、それもうまくいきます。

@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("ip")
public String sayIP(@Context HttpServletRequest req, @QueryParam("p1") String p1, ...) {
    return req.getRemoteAddr();
}
3
Richard
public String getIp(@Context HttpServletRequest req) {
    return req.getRemoteHost();
}
0
N K