【问题标题】:Weld on WebSphere 8在 WebSphere 8 上焊接
【发布时间】: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


【解决方案1】:

不,不能在 WebSphere Application Server 中替换或禁用 CDI。我唯一(不满意)的建议是重新编写代码以避免出现这种特殊情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-08
    • 2015-12-25
    相关资源
    最近更新 更多