获取客户端的IP地址对于webservice

问题描述:

我正在使用JAX-WS,并且无法检索使用Web服务的客户端信息。我已经发现如何使用JAX-RPC和Apache Tomcat Axis来完成它,但是不能使用JAX-WS。有没有人有这个想法?获取客户端的IP地址对于webservice

这个怎么样:

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

    } 

} 
+2

我想我只是错过了@Resource注解。 – monksy 2009-10-29 05:13:08

+0

据我所知,这是如何在整个网络上做到最好的描述。 ;)谢谢你,帕斯卡尔! – Zakum 2012-03-08 15:49:13

+0

我尝试相同,但MC大小22和“请求”为空。我不明白为什么,你有什么想法? – luffy 2016-06-30 08:15:36

或者这样:

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

这仅适用于REST吗? – Koekiebox 2016-08-31 06:01:13

以从Zayin和达伦的答案/编辑一个巨大的和赞赏的提示,我想这一点,而且它也能工作。

@GET 
@Produces(MediaType.TEXT_PLAIN) 
@Path("ip") 
public String sayIP(@Context HttpServletRequest req, @QueryParam("p1") String p1, ...) { 
    return req.getRemoteAddr(); 
} 

public String getIp(@Context HttpServletRequest req) { 
    return req.getRemoteHost(); 
} 
+0

@Context无法识别,并且没有建议导入,那究竟是什么? – 2015-11-19 14:53:20

+0

@ united-expression,https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/core/Context.html,https://jersey.java.net/documentation/最新/ JAXRS-resources.html – 2015-11-20 08:28:24