【问题标题】:Glassfish: Weld won't inject from classes in one jar to classes in an adjacent jar in WEB-INF/libGlassfish:Weld 不会从一个 jar 中的类注入到 WEB-INF/lib 中相邻 jar 中的类
【发布时间】:2011-06-22 07:52:51
【问题描述】:

在 Glassfish 3.1 上部署时,我在战争中使用的库中使用依赖注入(使用 CDI/Weld)时遇到问题。我有两个库,比如说:

WEB-INF/lib/library1.jar
WEB-INF/lib/library2.jar

library1 包含一个公共类,例如“InjectMe”。 Library2 包含另一个公共类,例如“InjectionTarget”,其注入站点如“@Inject public InjectMe injectMe;” .

部署失败:

WELD-001408 Unsatisfied dependencies for type [InjectMe] with qualifiers [@Default] at injection point [[field] @Inject packagename.InjectionTarget.injectionSite].

这两个档案都是带有 META-INF/beans.xml 的有效 CDI 档案。

我已经在 Glassfish 3.1 中更新了weld-osgi-bundle.jar,但问题仍然存在。

如果我手动解压 library1 和 library2,将它们的类直接放入 WEB-INF/classes,部署成功并且注入按预期工作。

这让我快疯了。我即将重组我的模块,以便使用 maven-dependency-plugin 解压缩 jar 子包并归档为合并的 jar,然后我将依赖于我的战争。不过,这很可怕。

想法?这不应该“正常工作”吗?

【问题讨论】:

  • 顺便说一句,它似乎在 Glassfish 3.2b6 上正常工作,所以这可能只是(又一个)Glassfish CDI/Weld 错误。

标签: jakarta-ee glassfish java-ee-6 cdi


【解决方案1】:

也许你遇到了这个错误?

https://issues.jboss.org/browse/WELD-846

http://java.net/jira/browse/GLASSFISH-15721

http://java.net/jira/browse/GLASSFISH-15735

我认为 Glassfish 3.1.1-b04 和更新版本使用 Weld 1.1.1.Final,它被标记为底层 Weld 错误的修复版本。使用该确切版本进行测试可能足以确认它。

【讨论】:

  • 你说的很对。我在发布大约 4 小时后确定了这一点,但 Stack Overflow 直到现在才让我跟进。
  • 我有 Glassfish 3.1.2.2(内部版本 5),我有一个带有 CDI 托管 bean 的 Web 应用程序,可以在 TomEE 1.5 SNAPSHOT 上正常工作,它可以很好地部署到 Glassfish 3.1.2.2,但 bean 是根本无法访问。解决这个问题会很好;这个问题把我带到了 TomEE。
【解决方案2】:

这原来是 PEBKAC 错误。我在我的台式机和工作站上更新了weld-osgi-bundle.jar,但没有在笔记本电脑上更新,但我认为我也在笔记本电脑上更新了它。

如果您正在阅读本文,您可能会遇到类似的问题。检查你的weld-osgi-bundle版本:

asadmin list-modules | grep org.jboss.weld.osgi-bundle

(Windows 用户:使用 findstr 代替 grep,但命令不变)。

你应该得到结果:

Module : org.jboss.weld.osgi-bundle:1.1.1.Final

如果您看到旧版本,请根据此处的说明更新weld-osgi-bundle:

http://seamframework.org/Seam3/CompatibilityHome#H-UpgradingWeldInGlassFish31

即使您不使用 Seam,这些说明也适用。 Weld 1.1.1 修复了 CDI 中的几个重要错误。 Glassfish 3.1.2 为什么没有随它一起发布,这让我无法理解,因为它们是重要的修复。

【讨论】:

    猜你喜欢
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 2012-01-11
    • 2011-03-24
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    相关资源
    最近更新 更多