无法使用@EJB注释注入EJB

时间:2018-11-21 17:57:59

标签: annotations ejb

尝试使用@EJB注释将EJB注入另一个EJB: 1)第一个EJB“ TestEJB”具有两个接口(AdditionRemote和AdditionLocal) 和一个类实现(添加)

2)第二个EJB“ TestEJB2”具有两个接口(DivisionRemote和DivisionLocal)和一个类实现(Division)

这是“ TestEJB”的代码,我想在其中插入TestEJB2的引用:

    @EJB
private Division d;

public Addition() {
    // TODO Auto-generated constructor stub
}

@Override
public int add(int a, int b) {
    return a+b;
}

@Override
public void call() {
    // TODO Auto-generated method stub
    d.div(4, 2);
}

但是,当我在代码中使用@EJB注释时,我将无法再部署TestEJB。 我收到此错误消息:

[org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 1) WFLYCTL0013: Operation ("full-replace-deployment") failed - address: ([]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"TestEJB.jar\".POST_MODULE" => "WFLYSRV0153: Failed to process phase POST_MODULE of deployment \"TestEJB.jar\"
Caused by: java.lang.RuntimeException: WFLYSRV0177: Error getting reflective information for class logic.Addition with ClassLoader ModuleClassLoader for Module \"deployment.TestEJB.jar\" from Service Module Loader
Caused by: java.lang.NoClassDefFoundError: Labsurd/Division;
Caused by: java.lang.ClassNotFoundException: absurd.Division from [Module \"deployment.TestEJB.jar\" from Service Module Loader]"}}

18:45:39,399信息[org.jboss.as.server](DeploymentScanner线程-1)WFLYSRV0016:将部署“ TestEJB.jar”替换为部署“ TestEJB.jar” 18:45:39,400 INFO [org.jboss.as.controller](DeploymentScanner线程-1)WFLYCTL0183:服务状态报告 WFLYCTL0186:无法启动的服务:service jboss.deployment.unit。“ TestEJB.jar”。POST_MODULE:WFLYSRV0153:无法处理部署“ TestEJB.jar”的阶段POST_MODULE

1 个答案:

答案 0 :(得分:0)

您必须注入接口之一或将@localbean(用于无接口视图)添加到Division

@EJB
private DivisionLocal d;

or

@EJB
private DivisionRemote d;

因为代理是为接口创建的(当您实现接口时,除非使用@LocalBean对其进行注释,否则不会为会话bean创建无接口视图)

相关问题