2012-07-26 8 views
10

sto usando seguente codice per ottenere l'indirizzo IP del client per un metodo unidirezionale chiamata JAX-WS:modo affidabile per ottenere l'indirizzo IP del client in CXF JAX-WS metodo unidirezionale chiamata

protected HttpServletRequest getServletRequest() { 
    MessageContext ctx = wsContext.getMessageContext(); 
    return (HttpServletRequest) ctx.get(MessageContext.SERVLET_REQUEST); 
} 

protected synchronized String getClientIp() { 
    String clientIp = ""; 
    HttpServletRequest request = getServletRequest(); 
    if (request != null) { 
     clientIp = request.getRemoteAddr(); 

     // Handle proxy 
     String header = request.getHeader("x-forwarded-for"); 
     if(header != null && !header.isEmpty()) { 
      clientIp = header.split(",")[0]; 
     } 
    } 
    return clientIp; 
} 

Quando più client si connettono, l'indirizzo IP recuperato per una richiesta è occasionalmente un valore memorizzato nella cache non corretto da una richiesta precedente. Qual è un modo affidabile per ottenere l'indirizzo IP dell'originatore della chiamata unidirezionale?

risposta

18

è possibile utilizzare il codice di seguito frammento di di trovare l'IP del client

Message message = PhaseInterceptorChain.getCurrentMessage(); 
HttpServletRequest request = (HttpServletRequest)message.get(AbstractHTTPDestination.HTTP_REQUEST); 
request.getRemoteAddr() 
1

Se il tuo scopo è stabilire una connessione al servizio web allora forse WS-Addressing potrebbe essere utile.

Schemi di indirizzamento alternativi a parte, HttpServletRequest.getRemoteAddr in combinazione con l'indirizzo IP getHeader sono specificati per essere corretti. Se non lo sono, non c'è molto ricorso (sì, posso immaginare varie contorsioni, ma il principio rimane).

Quindi, avete l'ultima/massima versione stabile della vostra piattaforma? Sembra più un problema con la tua piattaforma, di cui non hai fornito alcun dettaglio.

+0

Guarderò attraverso WS-Addressing se può aiutare. Sto usando cxf-2.5.2 in esecuzione su tomcat-6.0.35. – amo

Problemi correlati