我正在使用JAX-WS,但我在检索使用Web服务的客户端信息时遇到问题。我已经找到了如何使用JAX-RPC和Apache Tomcat Axis,但没有使用JAX-WS。有没有人对此有所了解?
答案 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();
}