我正在开发一个简单的应用程序,其中一个EJB应该注入另一个.我在IDEA Jetbrains IDE中开发.但是在我在Ejb本地statless类中创建@EJB注释后,我的IDE突出显示错误:找不到组件接口'ApplicationController'的EJB''.
有谁能说出为什么?
可以使用@EJB
注释将EJB引用注入另一个EJB .以下是从OpenEJB文档中注入其他EJB示例的示例:
代码
在这个例子中,我们开发了两个简单的会话无状态bean(DataReader和DataStore),并展示了如何在其中一个bean中使用@EJB注释来获取对其他会话bean的引用
DataStore会话bean
豆
@Stateless public class DataStoreImpl implements DataStoreLocal, DataStoreRemote{ public String getData() { return "42"; } }本地业务接口
@Local public interface DataStoreLocal { public String getData(); }远程业务接口
@Remote public interface DataStoreRemote { public String getData(); }DataReader会话bean
豆
@Stateless public class DataReaderImpl implements DataReaderLocal, DataReaderRemote { @EJB private DataStoreRemote dataStoreRemote; @EJB private DataStoreLocal dataStoreLocal; public String readDataFromLocalStore() { return "LOCAL:"+dataStoreLocal.getData(); } public String readDataFromRemoteStore() { return "REMOTE:"+dataStoreRemote.getData(); } }请注意
@EJB
DataStoreRemote和DataStoreLocal字段上注释的用法.这是EJB ref解析所需的最低要求.如果您有两个实现相同业务接口的bean,则需要beanName属性,如下所示:@EJB(beanName = "DataStoreImpl") private DataStoreRemote dataStoreRemote; @EJB(beanName = "DataStoreImpl") private DataStoreLocal dataStoreLocal;本地业务接口
@Local public interface DataReaderLocal { public String readDataFromLocalStore(); public String readDataFromRemoteStore(); }(为简洁起见,未显示远程业务接口).
如果它没有按预期工作,可能会显示一些代码.
我相信这是一个IntelliJ IDEA错误.这个帖子为我解决了这个问题:
添加EJB Facet(在项目结构>模块中)有所帮助