首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EJB无法注入其他EJB

EJB无法注入其他EJB
EN

Stack Overflow用户
提问于 2015-11-05 21:01:32
回答 4查看 1K关注 0票数 3

我确实有一个EJBs,我可以将它注入到其他ActionService中,它工作得很好。

现在我创建了另一个EJB:

代码语言:javascript
复制
@Stateless
public class ActionsPerDateDataSet extends ScriptedDataSetEventAdapter  {       
    @EJB
    ActionService actionService;

@Override
public void open(IDataSetInstance dataSet) {
        actionService.foo() // However actionService is null here!
    }
}

其中ScriptedDataSetEventAdapter来自另一个框架(BIRT)。但是,现在我的actionService始终是null。我不明白为什么

EN

回答 4

Stack Overflow用户

发布于 2017-04-26 15:44:17

您应该将库作为ejbModule引入到ear文件中,这样容器就可以搜索jar文件并部署它,并在需要的时候注入它

票数 1
EN

Stack Overflow用户

发布于 2017-11-22 20:43:46

ActionService有一个带有@local注解的接口,如果这是一个类,它必须有@LocalBean注解。

(这是为了能够在运行时访问它的实例)

如果它是一个接口,并且如果它有多个实现,那么你将不得不使用@EJB (beanName = "nameOfImplementation")来引用你需要的实现,如果它是一个类,其中@LocalBean被用来使用@EJB (name = "nameEjb")

与带有@LocalBean的@Local类的接口

在具有多个实现的聚合类接口中@EJB(beanName="nameOfImplementation")类@EJB(name="nameEjb")

注意:使用@Local和测试实现ActionService的接口注意: add trace控制台日志以了解类是否被初始化为ejb:ActionService

票数 1
EN

Stack Overflow用户

发布于 2016-02-28 17:08:43

  1. 你有没有试过用CDI?我认为值得一试。您需要在meta-inf文件夹中放置一个空的beans.xml,并将@EJB更改为@Inject。但是,唯一可行的方法是将外部库和war/jar文件放在同一个部署单元中。
  2. 如果这不起作用,您将需要使用JNDI来查找您的bean:
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33545256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档