【发布时间】:2017-10-23 21:24:36
【问题描述】:
我与 jee 和 wildfly 合作了几天,现在我遇到了问题。我创造了这样的东西:
@Stateless
public class BookService {
@EJB
private BookDao bookDao;
public void addBook(Book book) {
bookDao.saveBook(book);
}
public Optional<Book> getBookById(Long id) {
return bookDao.getBookById(id);
}
public void updateBook(Book book) {
bookDao.updateBook(book);
}
@Produces
@Named("books")
public List<Book> getAllBooks() {
return bookDao.getAllBooks();
}
}
接下来我尝试在 jsf 中使用#{books},但出现异常:
2017-05-23 08:49:07,447] 神器耳:耳:神器期间出错 部署。有关详细信息,请参阅服务器日志。
[2017-05-23 08:49:07,448] 神器 ear:ear: java.lang.Exception: {“WFLYCTL0080:服务失败”=> {"jboss.deployment.unit.\"Lab6.ear\".WeldStartService" => “服务中的 org.jboss.msc.service.StartException jboss.deployment.unit.\"Lab6.ear\".WeldStartService: 启动失败 服务
原因:org.jboss.weld.exceptions.DeploymentException:WELD-001414:Bean 名称不明确。姓名簿解析为 bean:
生产者方法 [List] 与限定符 [@Default @Named @Any] 声明为 [[BackedAnnotatedMethod] @Produces @Named public app.service.BookService.getAllBooks()],
生产者方法 [List] 与限定符 [@Default @Named @Any] 声明为 [[BackedAnnotatedMethod] @Produces @Named public app.service.BookService.getAllBooks()]"},"WFLYCTL0412:必需 未安装的服务:" => ["jboss.deployment.unit.\"Lab6.ear\".WeldStartService"],"WFLYCTL0180: 缺少/不可用依赖项的服务” => 未定义}
问题的根源是什么。
【问题讨论】:
-
请分享有关您的部署结构的信息。我想我会成为 EAR,而你有两次依赖,导致两个相同的生产者。确保
BookService仅在您的部署中的一个位置。
标签: java jakarta-ee jboss wildfly cdi