Ответ 1
Я думаю, вы можете получить IP через объект запроса.
Если я не ошибаюсь, request.getRemoteAddr()
или так.
Я пишу веб-службу Java Rest и нуждаюсь в IP-адресе вызывающего абонента. Я думал, что видел это в cookie один раз, но теперь я этого не вижу. Существует ли постоянное место для получения этой информации?
Я видел один пример использования "OperationalContext", чтобы получить его, но это не было в java.
Я думаю, вы можете получить IP через объект запроса.
Если я не ошибаюсь, request.getRemoteAddr()
или так.
Внесите HttpServletRequest в свой сервис Rest как таковой:
import javax.servlet.http.HttpServletRequest;
@GET
@Path("/yourservice")
@Produces("text/xml")
public String activate(@Context HttpServletRequest requestContext,@Context SecurityContext context){
String ipAddressRequestCameFrom = requestContext.getRemoteAddr();
//Also if security is enabled
Principal principal = context.getUserPrincipal();
String userName = principal.getName();
}
Вы можете сделать что-то вроде этого:
@WebService
public class YourService {
@Resource
WebServiceContext webServiceContext;
@WebMethod
public String myMethod() {
MessageContext messageContext = webServiceContext.getMessageContext();
HttpServletRequest request = (HttpServletRequest) messageContext.get(MessageContext.SERVLET_REQUEST);
String callerIpAddress = request.getRemoteAddr();
System.out.println("Caller IP = " + callerIpAddress);
}
}
Предполагая, что вы делаете свой "веб-сервис" с сервлетами, довольно простой вызов метода .getRemoteAddr()
на объект запроса даст вам IP-адрес вызывающих абонентов.