Pergunta

Estou escrevendo um serviço da Web Java Rest e preciso do endereço IP do chamador. Eu pensei ter visto isso no biscoito uma vez, mas agora não vejo. Existe um lugar consistente para obter essas informações?

Vi um exemplo de uso de um "OperationalContext" para obtê -lo, mas isso não estava em Java.

Foi útil?

Solução

Eu acho que você pode obter o IP através do objeto de solicitação.

Se não estou errado, request.getRemoteAddr() ou então.

Outras dicas

Injetar a HttpServletRequest em seu serviço de descanso como tal:

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();

}

Você poderia fazer algo assim:

@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); 

   }
}

Supondo que você esteja fazendo seu "serviço da web" com servlets, a chamada de método bastante simples .getRemoteAddr() No objeto de solicitação, fornecerá o endereço IP de chamadas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top