Не удается ввести EJB с аннотацией @ EJB - PullRequest
0 голосов
/ 21 ноября 2018

Попытка внедрить EJB в другой, используя аннотацию @EJB: 1) Первый EJB «TestEJB» имеет два интерфейса (AdditionRemote и AdditionLocal) и реализацию класса (Addition)

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 INFO [org.jboss.as.server] (DeploymentScanner-threads - 1) WFLYSRV0016: заменено развертывание «TestEJB.jar» с развертыванием «TestEJB».jar "18: 45: 39,400 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 1) WFLYCTL0183: Отчет о состоянии службы WFLYCTL0186: Службы, которые не удалось запустить: служба jboss.deployment.unit." TestEJB.jar ".POST_MODULE: WFLYSRV0153: Не удалось обработать фазу POST_MODULE развертывания "TestEJB.jar"

1 Ответ

0 голосов
/ 21 ноября 2018

Вы должны внедрить один из интерфейсов или добавить @localbean (для представления без интерфейса) в Отдел

@EJB
private DivisionLocal d;

or

@EJB
private DivisionRemote d;

, потому что прокси создан для интерфейсов (когда вы реализуете интерфейс, представление без интерфейса будетне может быть создан для сессионного компонента, если вы не аннотируете его с помощью @LocalBean)

...