Geting IP-адрес клиента Для веб-службы
Я использую JAX-WS, и у меня возникают проблемы с получением клиентской информации, которая потребляет веб-сервис. Я узнал, как это сделать с JAX-RPC и Apache Tomcat Axis, но не с JAX-WS. Кто-нибудь имеет представление об этом?
Ответы
Ответ 1
Как насчет этого:
@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
Или это:
@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();
}
}
Ответ 3
Взяв огромный и оцененный намек от Заина и Даррена, ответьте/отредактируйте, я попробовал это, и он тоже работает.
@GET
@Produces(MediaType.TEXT_PLAIN)
@Path("ip")
public String sayIP(@Context HttpServletRequest req, @QueryParam("p1") String p1, ...) {
return req.getRemoteAddr();
}
Ответ 4
public String getIp(@Context HttpServletRequest req) {
return req.getRemoteHost();
}