【问题标题】:@EJB Dependency Injection failed@EJB 依赖注入失败
【发布时间】:2012-08-13 13:31:59
【问题描述】:

我正在尝试使用@EJB annotation 来调用无状态bean。当我打印引用的值时,它是 NULL 。请帮帮我,我完全不知道下一步该做什么......

代码:

@Local
public interface BatcRunLocal {
    public void call(Map batc);
}

@stateless
public class batcRunBean implements BatcRunLocal {
    public void call(Map batc) {
        //Some code here . 
    }
}

在 Struts2 动作类中, 我这样打电话:

 @EJB
package.BatcRunLocal batchRun;

batchRun.call(Map batc);

【问题讨论】:

  • 请指定您的EJB应用服务器;名称和版本号。

标签: dependency-injection ejb-3.0 java-ee-5


【解决方案1】:

在 Struts2 Action Class 中,我是这样调用的:

对不起,我认为容器不能注入 Struts2 动作。只有容器管理的资源才能注入资源。例如,servlet、CDI bean、EJB、JAX-RS 等等。

所以,我会尝试创建一个简单的 servlet 来注入 EJB。如果它确实被注入,那么一切正常,只是 Struts2 Action 类不是由容器管理的。如果它仍然为空,那么您确实有问题,我建议您查看日志,以查看部署失败的位置。

如果您使用 JBoss AS,您会在日志中注意到是否部署了 EJB:JBoss AS 对此非常直言 :-)

我同意@Richard Sitze 的观点:阅读一些关于 Java 命名约定的内容。

【讨论】:

【解决方案2】:

@stateless 更改为@Stateless


此外,您可能会更加关注代码样式。在这种情况下,类名 (batcRunBean) 应以大写字母开头:BatcRunBean

【讨论】:

    猜你喜欢
    • 2017-09-16
    • 2014-06-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    相关资源
    最近更新 更多