如何从 XFire AbstractHandler 的 invoke() 方法中获取 ServletRequest 对象?

发布于 2024-07-10 12:16:25 字数 324 浏览 12 评论 0原文

我使用 XFire 作为 Spring Remoting 的 Web 服务提供者。 我正在使用 AbstractHandler 来验证 SOAP 请求。 这个想法是通过原始服务器的域和 API 密钥(类似于 Google 地图)来识别请求。 唯一的问题是我似乎找不到从 invoke() 方法中获取 ServletRequest 对象的方法,该方法只接受 MessageContext 对象。

我能想到的唯一想法是使用 Filter 并将请求对象存储在 ThreadLocal 变量中,但我真的更愿意避免这种解决方案。

有任何想法吗?

干杯赛

I'm using XFire as the Web Services provider for Spring Remoting. I'm using an AbstractHandler to authenticate the SOAP request. The idea is to identify the request by the originating server's domain and an API key (a-la Google Maps). The only problem is that I can't seem to find a way to fetch the ServletRequest object from within the invoke() method, which only accepts a MessageContext object.

The only idea I can think of is using a Filter and storing the request object inside a ThreadLocal variable, but I'd really prefer to avoid this solution.

Any ideas?

Cheers

Shai

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浊酒尽余欢 2024-07-17 12:16:25

我还没有测试过这个,但我手边有 XFire 的源代码,所以我深入研究了这些类,看看这是否容易。 在对 invoke 的调用中,您应该能够使用以下代码获取 ServletRequest

ServletRequest request = (ServletRequest) context.getProperty(org.codehaus.xfire.transport.http.XFireServletController.HTTP_SERVLET_REQUEST);

I haven't tested this but I have the source for XFire handy so I dug into the classes to see if this would be easy. From within the call to invoke you should be able to get the ServletRequest with the following code:

ServletRequest request = (ServletRequest) context.getProperty(org.codehaus.xfire.transport.http.XFireServletController.HTTP_SERVLET_REQUEST);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文