0

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

4

1 回答 1

0

如果您使用 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),因此它无法对其进行代理。

于 2012-05-14T11:48:39.740 回答