如何将服务器上的 GWT (RPC) 与 Weld/CDI 结合起来?

发布于 2024-11-15 10:24:07 字数 339 浏览 4 评论 0原文

将 GWT 与 CDI (Seam/Weld) 集成下的问题没有得到解决引起了很大的关注,所以我尝试了第二次。在服务器端,我想使用 Weld/CDI(我现在正在使用 Guice)。在 Guice 中,我有一个 RemoteServiceServlet 的子类,它在一个模块中命名,该模块本身在 GuiceServletContextListener 中激活。是否有人编写了一些类来注册 RemoteServiceServlet,以便 GWT RPC 端点从 Weld 获取实例?

The question under integrating GWT with CDI (Seam/Weld) did'nt get a much of attention, so I try a second time. On the server side I want to use Weld/CDI (I am using Guice right now). In Guice I have a subclass of RemoteServiceServlet which is named in a module which itself is activated in an GuiceServletContextListener. Has anybody wrote some class to register a RemoteServiceServlet so that the GWT RPC endpoint gets the instances from Weld?

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

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

发布评论

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

评论(1

翻身的咸鱼 2024-11-22 10:24:07

如果您使用 CDI(作为 EE6 容器的一部分),则可以使用 @WebServlet 注释 GWT RemoteServiceServlet,它们将是 CDI bean。如果配置正确,@Inject 将对它们起作用,甚至 @PersistenceContext 和 @Resource 以及其他东西(EE 服务器不需要任何配置,对于其他 Web 容器,请参阅 Weld 文档,它们需要在 web.xml 中配置一些侦听器) 。我多次使用过这种架构。

您在其他问题中提到的内容(“显然 CDI 不适用于从 javax.servlet.Servlet 派生的类。”)不应该再成立,正如评论者也指出的那样,它已在 1.1 中修复。

我现在看到的唯一问题是,如果我尝试向 @WebServlet 添加拦截器,加载将会失败,因为 GWT RemoteServiceServlet 声明了一些最终方法 (getSerializationPolicy),因此它无法对其进行代理。

If you use CDI (as part of an EE6 container), you can annotate your GWT RemoteServiceServlets with @WebServlet, and they'll be CDI beans. @Inject will work on them, even @PersistenceContext and @Resource and other stuff, if properly configured (EE servers don't need any configuration, for other web containers, see the Weld docs, they need some listeners configured in web.xml). I used this architecture many times.

What you mention in your other question ("Apparently CDI won't work with classes derived from javax.servlet.Servlet.") should not be true any more, as a commenter also pointed out, it's fixed in 1.1.

The only problem I see right now is that if I try to add an interceptor to my @WebServlet, the loading will fail because GWT RemoteServiceServlet declare some final methods (getSerializationPolicy), so it cannot make a proxy of it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文