获取客户端的IP地址对于Web服务

时间:2009-10-29 04:17:39

标签: java web-services jax-ws ip

我正在使用JAX-WS,但我在检索使用Web服务的客户端信息时遇到问题。我已经找到了如何使用JAX-RPC和Apache Tomcat Axis,但没有使用JAX-WS。有没有人对此有所了解?

4 个答案:

答案 0 :(得分:47)

这个怎么样:

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

  }

} 

答案 1 :(得分:4)

或者这个:

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

答案 2 :(得分:3)

从Zayin和Darren的回答/编辑中获取了巨大且受到赞赏的暗示,我尝试了这一点,它也有效。

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

答案 3 :(得分:0)

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