当前位置:  开发笔记 > 编程语言 > 正文

如何将一个EJB 3.1注入另一个EJB

如何解决《如何将一个EJB3.1注入另一个EJB》经验,为你挑选了2个好方法。

我正在开发一个简单的应用程序,其中一个EJB应该注入另一个.我在IDEA Jetbrains IDE中开发.但是在我在Ejb本地statless类中创建@EJB注释后,我的IDE突出显示错误:找不到组件接口'ApplicationController'的EJB''.

有谁能说出为什么?



1> Pascal Thive..:

可以使用@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();
  }
}

请注意@EJBDataStoreRemote和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();
}

(为简洁起见,未显示远程业务接口).

如果它没有按预期工作,可能会显示一些代码.



2> Matthew Corn..:

我相信这是一个IntelliJ IDEA错误.这个帖子为我解决了这个问题:

添加EJB Facet(在项目结构>模块中)有所帮助

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有