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 private javax.servlet.http.HttpServletRequest hsr;
    @得到
    @Path("get_ip")
    @Produces("文本/纯文本")
    公共字符串 get_ip()
    {
            返回 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 回答
0
public String getIp(@Context HttpServletRequest req) {
    return req.getRemoteHost();
}
于 2013-10-29T05:35:31.200 回答