我将XFire用作Spring Remoting的Web服务提供程序。我正在使用AbstractHandler来验证SOAP请求。这个想法是通过原始服务器的域和API密钥(a-la Google Maps)来识别请求。唯一的问题是,我似乎找不到从invoke()方法中获取ServletRequest对象的方法,该方法仅接受MessageContext对象。
我能想到的唯一想法是使用过滤器并将请求对象存储在ThreadLocal变量中,但我真的更喜欢避免这种解决方案。
有任何想法吗?
干杯
hai
最佳答案
我还没有测试过,但是我有XFire的源代码,所以我钻研了类,看这是否容易。从对invoke
的调用中,您应该可以使用以下代码获得ServletRequest
:
ServletRequest request = (ServletRequest) context.getProperty(org.codehaus.xfire.transport.http.XFireServletController.HTTP_SERVLET_REQUEST);