У меня проблемы с вызовом удаленного EJB: мне приходится это делать впервые, и я могу что-то упустить. Я прочитал много руководств в Интернете, несколько ответов здесь, на SO
, но я не могу решить. Это то, что я сделал до сих пор.
Мой сценарий:
У меня есть два EAR
, развернутых под Wildfly 10.0.0.Final
: server-ear
и client-ear
.
В server-ear
у меня есть server-api
и server-ejb
, первый из которых представляет собой простой модуль Java, содержащий мои интерфейсы EJB
s, а второй — модуль EJB
, содержащий реализации.
Это было бы
@Remote
public interface DummyApi {
String getSomething();
}
и его реализация
@Stateless
@Remote(DummyApi.class)
public class DummyApiImpl implements DummyApi {
@Override
public String getSomething() {
return "SOMETHING";
}
}
В client-ear
у меня есть простой модуль EJB
(client-ejb
), определяющий синглтон EJB
, который берет ссылку на интерфейс DummyApi
:
@javax.ejb.Singleton
public class DummyClient {
private static final Logger log = LoggerFactory.getLogger(DummyClient.class);
private @EJB DummyApi dummyApi;
@PostConstruct
public void postConstruct() {
log.debug("***** " + dummyApi.getSomething() + "******");
}
}
В client-ejb
я также поместил файл jboss-ejb-client.properties
под src/main/resources
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port = 8080
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
Что касается взаимозависимостей этих модулей (я использую Maven):
server-ear
|---- server-api [compile]
|---- server-ejb [compile]
|-- server-api [provided]
а также
client-ear
|---- server-api [compile]
|---- client-ejb [compile]
|-- server-api [provided]
Оба EAR
развернуты на один и тот же локальный Wildfly 10.0.0.Final
(чистая установка сервера, никаких настроек). При запуске сервера у меня нет проблем в server-ear
.
client-ear
вместо этого терпит неудачу со следующим исключением
12:05:22,592 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001: Failed to start service jboss.deployment.subunit."client-ear-0.0.1-SNAPSHOT.ear"."client-ejb-0.0.1-SNAPSHOT.jar".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.subunit."client-ear-0.0.1-SNAPSHOT.ear"."client-ejb-0.0.1-SNAPSHOT.jar".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of subdeployment "client-ejb-0.0.1-SNAPSHOT.jar" of deployment "client-ear-0.0.1-SNAPSHOT.ear"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:154)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEE0052: Failed to install component DummyClient
at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.deploy(ComponentInstallProcessor.java:109)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:147)
... 5 more
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEJB0406: No EJB found with interface of type 'com.server.api.DummyApi' for binding com.client.DummyClient/dummyApi
at org.jboss.as.ejb3.deployment.processors.EjbInjectionSource.getResourceValue(EjbInjectionSource.java:90)
at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.processBindings(ComponentInstallProcessor.java:263)
at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.access$000(ComponentInstallProcessor.java:80)
at org.jboss.as.ee.component.deployers.ComponentInstallProcessor$1.handle(ComponentInstallProcessor.java:215)
at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54)
at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.deployComponent(ComponentInstallProcessor.java:218)
at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.deploy(ComponentInstallProcessor.java:101)
... 6 more
Что я упускаю или делаю неправильно?