【问题标题】:Why i cannot deploy my ear on Glassfish为什么我不能在 Glassfish 上展开我的耳朵
【发布时间】:2012-11-15 22:54:59
【问题描述】:

我在 netbeans(netbeans 的企业应用程序)中有标准的 maven 项目,它有 1 个 war、1 个 ejb 和 1 个 ear 模块。我想使用@Inject 将我的@Stateless 从ejb 注入到war(REST 类)中,使用它的接口。我在项目的正确文件夹中添加了一些 beans.xml 文件,但我仍然得到这个:

部署期间发生错误:加载应用程序时出现异常:WELD-001409 在注入点 [[field] @Inject private pl.edu.amu.wmi 带有限定符 [@Default] 的类型 [LogicBean] 的不明确依赖项.kino.rk.rest.ReportRest.bean]。可能的依赖项 [[会话 bean [class pl.edu.amu.wmi.kino.rk.data.impl.LogicBeanImpl 与限定符 [@Any @Default];本地接口是 [LogicBean],会话 bean [class pl.edu.amu.wmi.kino.rk.data.impl.LogicBeanImpl 带有限定符 [@Any @Default];本地接口是 [LogicBean]]]。请参阅 server.log 了解更多详细信息。

我做错了什么?我已经搜索了整个互联网,但找不到解决方案。 我知道这是可能的,因为我和这样的员工一起参与了一个项目。感谢您的帮助:)

【问题讨论】:

  • 发布相关代码。试图帮助解决这类问题就像修理戴着烤箱手套的手表一样。

标签: maven dependency-injection java-ee-6 glassfish-3 cdi


【解决方案1】:

您正在对接口进行编码,这很好,但是您有两个具有相同限定符的接口实现(在本例中为默认)。如果不使用限定符来消除您想要注入的内容的歧义,CDI 不知道该给您哪个。

我建议创建一个@Rest 限定符(或一个EJB 限定符)并注释类并使用您想要的实例注释注入点。

【讨论】:

  • 我真的不知道我是否理解,但没有2个接口的实现,只有一个!
  • 这不是错误所说的。一个是pl.edu.amu.wmi.kino.rk.data.impl.LogicBeanImpl,另一个也是pl.edu.amu.wmi.kino.rk.data.impl.LogicBeanImpl。那个班级在那里两次。
  • Oki,很抱歉,这些 bean 有两次(在 ear/lib 和 war/lib 中),因为在 war 中依赖于 ejb。我刚刚移除了耳朵并最终部署了战争。
猜你喜欢
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 2012-08-21
  • 2012-03-29
  • 2012-08-16
  • 2020-05-20
  • 1970-01-01
相关资源
最近更新 更多