在soapMessageContext中获取“HttpServletRequest” - Axis Handler

时间:2011-10-05 07:18:04

标签: servlets axis soaphandler

我试图在AxisHandler的“handleMessage”方法中获取“HttpServletRequest”。 我的AxisHandler实现了“SOAPHandler”,如下面的代码..

我需要在“InBoundDirection”中获取“HttpServletRequest”,但它返回“null”。

如何在SOAPHandler的“InBoundDirection”中获得“HttpServletRequest”?

谢谢..

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

1 个答案:

答案 0 :(得分:0)

请参阅此帖子jax ws getting client ip以获得非常好的解释。看起来如果想要一个通用的处理程序(在我的情况下提取客户端证书),就需要为EE容器托管的Web服务以及SE托管容器实现相同的逻辑。