在soapMessageContext中获取“HttpServletRequest” - Axis Handler
Posted
技术标签:
【中文标题】在soapMessageContext中获取“HttpServletRequest” - Axis Handler【英文标题】:Getting "HttpServletRequest" in soapMessageContext - Axis Handler 【发布时间】:2011-12-01 06:09:24 【问题描述】:我试图在 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】:请参阅此帖子 jax ws getting client ip 以获得很好的解释。看起来如果想要拥有一个通用处理程序(在我的情况下是提取客户端证书),则需要为 EE 容器托管的 Web 服务和 SE 托管的容器实现相同的逻辑。
【讨论】:
以上是关于在soapMessageContext中获取“HttpServletRequest” - Axis Handler的主要内容,如果未能解决你的问题,请参考以下文章
如何通过HttpPost从服务器上获得一个sessionid