【发布时间】:2012-04-07 17:18:39
【问题描述】:
是否可以用 Weld 替换 WebSphere 8 的 CDI 提供程序(OpenWebBeans)?如果做不到这一点,有没有办法在 WebSphere 中完全禁用 CDI?
我为什么需要这个?我们有一个针对 Weld 开发的项目,不幸的是我们发现它依赖于许多 Weld 特性。我们能够在 Tomcat 和 Jetty 中通过 org.jboss.weld.environment.servlet.Listener 成功引导 Weld,但 WebSphere 的内置 CDI 实现似乎存在干扰。
【问题讨论】:
-
你发现了什么问题?
-
@LightGuard- 我们用作指导的项目 (42lines.net/2011/11/29/leveraging-conversations) 将 EntityManagers 置于对话范围内,这在技术上违反了 CDI,因为它们不可序列化。在 Weld 中工作正常,但在 OpenWebBeans 中不工作。
-
您是如何获得 EntityManager 对象的?我本来希望容器管理的 EntityManager 是可序列化的。
-
@Caffeine Coma:你说得对,按照规范,EM 是不可序列化的(即使 Hibernate-Implementation 是可序列化的)。据我所知,当且仅当您要钝化您的 bean 或在集群中工作时,这才是一个问题。我在两个没有此类要求的生产应用程序中使用该技术没有任何问题。
-
@bkail:像这样获得 EM:github.com/42Lines/blog-cdidemo/tree/master/src/main/java/net/…。 impl 是否可序列化也没关系,因为 CDI 不允许 ConversationScope 使用不可序列化的接口。
标签: websphere cdi jboss-weld