2011-10-05 8 views
5

Estoy tratando de obtener "HttpServletRequest" en el método "handleMessage" de AxisHandler. Mi AxisHandler implementa "SOAPHandler" como se ve a continuación código ...Obteniendo "HttpServletRequest" en soapMessageContext - Axis Handler

Necesito obtener "HttpServletRequest" en "InBoundDirection", pero devuelve "nulo".

¿Cómo puedo obtener "HttpServletRequest" en "InBoundDirection" de SOAPHandler?

Gracias ..

@Override 
public boolean handleMessage(SOAPMessageContext soapMessageContext) { 
    boolean direction = ((Boolean) soapMessageContext.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();   
    if (direction) { 
     System.out.println("direction = outbound"); 
    } else { 
     System.out.println("direction = inbound"); 
     HttpServletRequest servletReq=(HttpServletRequest) soapMessageContext.get(MessageContext.SERVLET_REQUEST); 
     // BECAUSE servletReq is null the following line returns a "nullPointerException" 
     System.out.println(servletReq.getRemoteHost()); 
    } 
    return true; 
} 

Respuesta

0

Ver este post jax ws getting client ip por una muy buena explicación. Parece que si uno quiere tener un controlador genérico (en mi caso para extraer el certificado del cliente) uno necesita implementar la misma lógica para los servicios web alojados tanto en el contenedor EE como en los contenedores hospedados SE.