我正在开发一个简单的应用程序,其中一个EJB应该注入另一个。我在IDEA Jetbrains IDE中开发。但是在我在Ejb本地静态类中制作@EJB注释后,我的IDE突出显示错误: 未找到组件接口'ApplicationController'的EJB'。
谁能说出为什么?
答案 0 :(得分:13)
可以使用@EJB
注释将EJB引用注入另一个EJB。以下是来自OpenEJB文档的Injection of other EJBs Example的示例:
守则
在这个例子中我们开发了两个简单的 会话无状态bean(DataReader 和DataStore),并展示我们如何 在其中一个中使用@EJB注释 这些bean得到了引用 另一个会话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所需的最低要求 解析度。如果你有两个豆子 实施相同的业务 接口,你会想要的 beanName属性如下:@EJB(beanName = "DataStoreImpl") private DataStoreRemote dataStoreRemote; @EJB(beanName = "DataStoreImpl") private DataStoreLocal dataStoreLocal;
本地商户界面
@Local public interface DataReaderLocal { public String readDataFromLocalStore(); public String readDataFromRemoteStore(); }
(远程业务接口不是 为了简洁起见)。
如果它没有按预期工作,可能会显示一些代码。
答案 1 :(得分:5)
我相信这是一个IntelliJ IDEA错误。 This thread为我解决了这个问题:
添加EJB Facet(在项目结构&gt;模块中)帮助