当前位置: 首页 > 知识库问答 >
问题:

@products导致Bean名称不明确

上官正志
2023-03-14

我和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]工件EAR:EAR:工件部署过程中出错。有关详细信息,请参阅服务器日志。

>

  • 带有限定符[@default@named@any]的生产者方法[List]声明为[[BackedAnnotatedMethod]@produces@named public app.service.bookservice.getallbooks()],

    带有限定符[@default@named@any]的生产者方法[List]声明为[[BackedAnnotatedMethod]@products@named public app.service.bookservice.getallbooks()]“},”wflyctl0412:未安装的必需服务:“=>[”jboss.deployment.unit.“\”lab6.ear\“.weldstartservice”],“wflyctl0180:缺少/不可用依赖项的服务”=>undefined}

    问题的根源是什么。

  • 共有1个答案

    丁均
    2023-03-14

    这看起来您错误地构建了EAR文件组件:

    • EJB jar位于EAR文件本身中;
    • EJB jar也位于WAR文件的WEB-INF/lib目录中

    这将为您提供相同bean的两个副本。

     类似资料:
    • 问题内容: 我有一个应用程序,它具有多个模块和各种依赖性。在Glassfish 4上部署应用程序时,出现错误: 可能是什么原因?我已经看到了有关此主题,解决方案是编辑注释,但这不是我的,而是依赖项。如何避免这种异常? 我正在将Java EE 6与JDK 1.7和Glassfish 4.0一起使用。 问题答案: Glassfish已经为您打包了Jerseys库,因此您需要按照docs所述在Maven

    • 我使用的是Spring Boot1.3,我有下面的配置类: 当我试图按名称注入下面的bean之一时,它抛出:没有定义[java.text.SimpleDateFormat]类型的合格bean:预期的是单个匹配bean,但找到了2:dateAndTimeFormater,DateFormater。 如有任何建议,将不胜感激?

    • 长话短说,我想更换spring boot中现有的控制器,因为它不令人满意。 因此,我创建了一个新的rest控制器类,并开始向其添加功能。我想维护旧的控制器,直到将来可以删除它(一旦新版本完全实现) 所以我实际上有两个同名的类。 新班级 旧类 启动服务时发生以下错误: 我尝试使用注释,但无法编译。 我怎么能在Spring启动应用程序中有两个同名的Rest类? 注意:我不愿意尝试重命名

    • 我在依赖项jar文件中有一个CDIBean实现: 在我的网络应用程序中,我想通过EL表达式访问该服务,因此我必须给它一个注释。但是我不能在实现上添加注释,因为我无权更改该代码。 因此我试着创造一个像 这导致了 WELD-001409-带有限定符@Default的MyService类型的模糊依赖关系...可能的依赖关系:-托管Bean[类...MyService]与限定符[@任何@默认]-生产者方法

    • 在Spring3.1中,我试图通过JMX导出相同的bean,使用两个不同的bean名称和两个不同的接口。 但是,当我启动我的应用程序时,我得到了一个异常 有没有任何方法可以在两个不同的mbean名称下注册同一个bean实例,从而公开不同的接口?

    • 我用weblogic 10.3.6和EJB 3.0做了一个小例子。定义SimpleService类,定义weblogic-ejb-jar.xml以便将SimpleService类映射到JNDI名称,将其打包为EAR文件中的EJB组件并部署在服务器上。部署成功,我可以看到名为SimpleServiceBean的ejb bean。之后,使用独立的应用程序连接到webloigc服务器通过初始化上下文与所