【问题标题】:CDI on GlassFish 3.1.1 b12 generates error "WELD-001408 Unsatisfied dependencies"GlassFish 3.1.1 b12 上的 CDI 生成错误“WELD-001408 Unsatisfied dependencies”
【发布时间】:2011-12-03 19:38:17
【问题描述】:

我正在尝试评估 Glassfish 3.1 上的 CDI,尽管我已经完成了使其正常工作,但当我尝试将我的代码拆分到单独的部署模块中时,我收到了一个奇怪的错误。更具体地说:

我在同一个实用程序项目中捆绑了两个类(比如说CommonLib.jar);类名是UserDatabaseUserDatabaseEntityManager,它们的定义如下(在本消息末尾的 PS 中)。 我还有一个带有 EJB3.1 模块的 EAR。

当我选择将 CommonLib.jar 部署为 EAR 的“捆绑库”时,我收到以下错误:

部署期间发生错误:加载应用程序时出现异常:WELD-001408 在注入点 [[field] @UserDatabase @Inject com.test.TestEJB.itemPersistenceEm] 带有限定符 [@UserDatabase] 的类型 [EntityManager] 的依赖关系不满足。详情请见server.log

当我将 CommonLib.jar 部署为共享库时也遇到与上述相同的错误(在 $glasshfish_installation_path/domains/domain1/lib 下复制的 jar 文件) 但是,如果我选择在 EJB 项目中只包含两个类(UserDatabaseUserDatabaseEntityManager)(因此它们在 EJB 模块中编译),那么注入工作正常。

我是否面临类加载器问题?有什么想法可以解决这个问题吗?

【问题讨论】:

    标签: glassfish-3 cdi jboss-weld


    【解决方案1】:

    只是一个猜测,因为几天前我遇到了与 Glassfish 和 CDI 非常相似的问题:every JAR 中是否有 beans.xml,即在 CommonLib.jar 和 EJB 中JAR,以便 CDI 扫描它们?

    我的问题是因为我认为将 beans.xml 放入 EAR 就足够了,但事实并非如此。

    【讨论】:

    • 你只是挽救了我一整夜的生命。战争中包含的ejb-jar中的一个接口已经5个小时没有解决。现在我可以回家了。我爱你。你愿意嫁给我吗?
    【解决方案2】:

    听起来您遇到了我们在while working on Seam 3 发现的一些 Glassfish CDI 集成问题。它可能是其中的几个,所以你必须看看它可能是哪一个。尝试在 JBoss AS7 或 Apache TomEE 上进行测试,看看是否还有问题。

    【讨论】:

      猜你喜欢
      • 2013-08-09
      • 2016-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 2013-10-15
      • 1970-01-01
      相关资源
      最近更新 更多