Удаленный поиск EJB через JNDI в Jboss EAP 6.4

Я пытаюсь запустить пример ejb-remote отсюда: Быстрый старт Jboss eap

Я не вижу никаких проблем, когда запускаю сервер и клиент на одной машине. Однако возникают проблемы, если клиент выполняется с другой машины, чем на сервере.

Я предполагаю, что примеры, предоставленные командой jboss, должны работать из коробки. Я также прочитал статью о https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI и различные онлайн-блоги. Пожалуйста, дайте мне знать, если я упустил что-то очевидное. Пытаюсь заставить удаленного клиента работать уже пару дней. :(

ENV: Сервер развернут на Jboss EAP 6.4. JDK/JAVA версии 8.

Трассировки стека:

java.io.EOFException: XNIO000812: Connection closed unexpectedly
    at org.xnio.http.HttpUpgrade$HttpUpgradeState$UpgradeResultListener.handleEvent(HttpUpgrade.java:416)
    at org.xnio.http.HttpUpgrade$HttpUpgradeState.flushUpgradeChannel(HttpUpgrade.java:369)
    at org.xnio.http.HttpUpgrade$HttpUpgradeState.access$900(HttpUpgrade.java:165)
    at org.xnio.http.HttpUpgrade$HttpUpgradeState$ConnectionOpenListener.handleEvent(HttpUpgrade.java:340)
    at org.xnio.http.HttpUpgrade$HttpUpgradeState$ConnectionOpenListener.handleEvent(HttpUpgrade.java:320)
    at org.xnio.ChannelListeners.invokeChannelListener(ChannelListeners.java:92)
    at org.xnio.nio.WorkerThread$ConnectHandle.handleReady(WorkerThread.java:324)
    at org.xnio.nio.WorkerThread.run(WorkerThread.java:559)
    at ...asynchronous invocation...(Unknown Source)
    at org.jboss.remoting3.EndpointImpl.doConnect(EndpointImpl.java:294)
    at org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:416)
    at org.jboss.ejb.client.remoting.EndpointPool$PooledEndpoint.connect(EndpointPool.java:192)
    at org.jboss.ejb.client.remoting.NetworkUtil.connect(NetworkUtil.java:153)
    at org.jboss.ejb.client.remoting.NetworkUtil.connect(NetworkUtil.java:133)
    at org.jboss.ejb.client.remoting.ConnectionPool.getConnection(ConnectionPool.java:78)
    at org.jboss.ejb.client.remoting.RemotingConnectionManager.getConnection(RemotingConnectionManager.java:51)
    at org.jboss.ejb.client.remoting.ConfigBasedEJBClientContextSelector.setupEJBReceivers(ConfigBasedEJBClientContextSelector.java:161)
    at org.jboss.ejb.client.remoting.ConfigBasedEJBClientContextSelector.getCurrent(ConfigBasedEJBClientContextSelector.java:118)
    at org.jboss.ejb.client.remoting.ConfigBasedEJBClientContextSelector.getCurrent(ConfigBasedEJBClientContextSelector.java:47)
    at org.jboss.ejb.client.EJBClientContext.getCurrent(EJBClientContext.java:281)
    at org.jboss.ejb.client.EJBClientContext.requireCurrent(EJBClientContext.java:291)
    at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:178)
    at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:146)
    at com.sun.proxy.$Proxy0.add(Unknown Source)
    at org.jboss.as.quickstarts.ejb.remote.client.RemoteEJBClient.invokeStatelessBean(RemoteEJBClient.java:57)
    at org.jboss.as.quickstarts.ejb.remote.client.RemoteEJBClient.main(RemoteEJBClient.java:38)

Exception in thread "main" java.lang.IllegalStateException: EJBCLIENT000025: No EJB receiver available for handling [appName:, moduleName:jboss-ejb-remote-server-side, distinctName:] combination for invocation context org.jboss.ejb.client.EJBClientInvocationContext@6eebc39e
    at org.jboss.ejb.client.EJBClientContext.requireEJBReceiver(EJBClientContext.java:798)
    at org.jboss.ejb.client.ReceiverInterceptor.handleInvocation(ReceiverInterceptor.java:128)
    at org.jboss.ejb.client.EJBClientInvocationContext.sendRequest(EJBClientInvocationContext.java:186)
    at org.jboss.ejb.client.EJBInvocationHandler.sendRequestWithPossibleRetries(EJBInvocationHandler.java:255)
    at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:200)
    at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:183)
    at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:146)
    at com.sun.proxy.$Proxy0.add(Unknown Source)
    at org.jboss.as.quickstarts.ejb.remote.client.RemoteEJBClient.invokeStatelessBean(RemoteEJBClient.java:57)
    at org.jboss.as.quickstarts.ejb.remote.client.RemoteEJBClient.main(RemoteEJBClient.java:38)
 

ОБНОВЛЕНИЯ 29 АПРЕЛЯ:

Фрагменты журнала запуска JBOSS:

9:42:56,600 INFO  [org.jboss.as.mail.extension] (MSC service thread 1-4) JBAS015400: Bound mail session [java:jboss/mail/Default]
09:42:56,978 INFO  [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-3) JBWEB003001: Coyote HTTP/1.1 initializing on : **http-/0.0.0.0:8080**
09:42:57,010 INFO  [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-3) JBWEB003000: Coyote HTTP/1.1 starting on: **http-/0.0.0.0:8080**
09:42:57,083 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-3) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS]
09:42:57,117 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-3) JBAS015012: Started FileSystemDeploymentService for directory /opt/deployments/jboss/jboss-eap-6.4/standalone/deployments
09:42:57,124 INFO  [org.jboss.as.remoting] (MSC service thread 1-8) JBAS017100: Listening on 127.0.0.1:9999
09:42:57,124 INFO  [org.jboss.as.remoting] (MSC service thread 1-1) JBAS017100:Listening on **0.0.0.0:4447**

Вывод Netstat:

TCP 0 0 0.0.0.0:8080 0.0.0.0:* ПРОСЛУШАТЬ 2917/java

TCP 0 0 0.0.0.0:4447 0.0.0.0:* ПРОСЛУШАТЬ 2917/java


person akd    schedule 29.04.2016    source источник
comment
Проверьте запись для имени remote.connection.default.host в вашем файле jboss-ejb-client.properties.   -  person Sampada    schedule 29.04.2016
comment
Вы привязали свой JBoss к 0.0.0.0, чтобы разрешить удаленные подключения? А как вы называете свой EJB?   -  person aribeiro    schedule 29.04.2016
comment
@ aribeiro: Да, я привязываюсь к 0.0.0.0. Обновлен исходный пост фрагментами журнала запуска jboss, показывающими адрес привязки.   -  person akd    schedule 29.04.2016
comment
@Sampada: Да, файл свойств был отредактирован для изменения хоста. Я проверил, что могу подключиться к хосту и порту через telnet.   -  person akd    schedule 29.04.2016
comment
@userful: Вы нашли какое-нибудь решение вышеуказанной проблемы? Я также сталкиваюсь с проблемой поиска удаленного вызова EJB 3.0, развернутого в Jboss EAP 6.3.   -  person G dangi    schedule 28.06.2016
comment
@ Гданги Да. Посмотрите на приведенный ниже ответ и посмотрите, решит ли он вашу проблему.   -  person akd    schedule 30.06.2016
comment
@useful: я добавил те же свойства и конфигурацию, либо они не работают. Я обращаюсь к нему из автономного приложения Java???   -  person G dangi    schedule 01.07.2016


Ответы (1)


Несколько вопросов вызвали проблему.

  1. Порт должен быть 4447, тот что в проекте на jboss 8080.
  2. нужно добавить пользователя через JBOSS_HOME/bin/add-user.sh и добавить его в jboss-ejb-client.properties, как показано ниже.

    remote.connection.default.username=user2 remote.connection.default.password=password12(

  3. Используйте правильную версию клиента. В моем случае я использовал версию сервера 6.4 и версию клиента 7.0.X.
person akd    schedule 29.04.2016