Вопрос

Я пишу веб-сервис Java Ress и понадобится IP-адрес вызывающего абонента. Я думал, что видел это в печенье один раз, но теперь я этого не вижу. Есть ли последовательное место, чтобы получить эту информацию?

Я видел один пример использования «OperationalContext», чтобы получить его, но это не было в Java.

Это было полезно?

Решение

Я думаю, что вы можете получить IP через объект запроса.

Если я не ошибаюсь, request.getRemoteAddr() или так.

Другие советы

Ввод а Httpservletrequest в вашу отдых, как таковой:

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-адрес абонентов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top