【问题标题】:Remote EJB Lookup via JNDI on Jboss EAP 6.4在 Jboss EAP 6.4 上通过 JNDI 进行远程 EJB 查找
【发布时间】:2016-04-29 01:20:43
【问题描述】:

我正在尝试从这里运行 ejb-remote 示例:Jboss eap quickstart

当我在同一台机器上运行服务器和客户端时,我没有发现任何问题。但是,如果客户端是在与服务器不同的机器上执行的,则会出现问题。

我假设 jboss 团队提供的示例应该是开箱即用的。我还阅读了https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI 和各种在线博客上的文章。如果我遗漏任何明显的东西,请告诉我。试图让远程客户端工作几天。 :(

环境: 服务器部署在 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)
 

04/29 更新:

JBOSS 启动日志 sn-ps:

9:42:56,600 INFO [org.jboss.as.mail.extension](MSC 服务线程 1-4)JBAS015400:绑定邮件会话 [java:jboss/mail/Default] 09:42:56,978 INFO [org.apache.coyote.http11.Http11Protocol](MSC 服务线程 1-3)JBWEB003001:Coyote HTTP/1.1 初始化:**http-/0.0.0.0:8080** 09:42:57,010 INFO [org.apache.coyote.http11.Http11Protocol](MSC 服务线程 1-3)JBWEB003000:Coyote HTTP/1.1 开始于:**http-/0.0.0.0:8080** 09:42:57,083 INFO [org.jboss.as.connector.subsystems.datasources](MSC 服务线程 1-3)JBAS010400:绑定数据源 [java:jboss/datasources/ExampleDS] 09:42:57,117 INFO [org.jboss.as.server.deployment.scanner](MSC 服务线程 1-3)JBAS015012:为目录 /opt/deployments/jboss/jboss-eap-6.4/standalone/deployments 启动 FileSystemDeploymentService 09:42:57,124 INFO [org.jboss.as.remoting](MSC 服务线程 1-8)JBAS017100:监听 127.0.0.1:9999 09:42:57,124 INFO [org.jboss.as.remoting](MSC 服务线程 1-1)JBAS017100:监听 **0.0.0.0:4447**

Netstat 输出:

tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2917/java

tcp 0 0 0.0.0.0:4447 0.0.0.0:* LISTEN 2917/java

【问题讨论】:

  • 检查 jboss-ejb-client.properties 文件中 remote.connection.default.host 名称的条目
  • 您是否将您的 JBoss 绑定到 0.0.0.0 以允许远程连接?你怎么称呼你的 EJB?
  • @aribeiro:是的,我绑定到 0.0.0.0。用 jboss 启动日志 sn-ps 更新了原始帖子,显示了绑定地址。
  • @Sampada:是的,属性文件已被编辑以更改主机。我已经验证我可以通过 telnet 连接到主机和端口。
  • @userful:您找到解决上述问题的方法了吗?我还面临查找部署在 Jboss EAP 6.3 上的远程 EJB 3.0 调用的问题。

标签: java-8 jboss7.x jndi ejb-3.1 jboss-eap-6


【解决方案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 版本的客户端。

【讨论】:

    猜你喜欢
    • 2012-01-24
    • 2017-08-25
    • 1970-01-01
    • 2018-04-08
    • 2016-10-30
    • 2020-10-15
    • 2016-07-19
    • 1970-01-01
    • 2015-12-12
    相关资源
    最近更新 更多