通过Jboss EAP 6.4上的JNDI进行远程EJB查找



我正试图从这里运行ejb远程示例:Jboss-eap-quickstart

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

我假设jboss团队提供的示例应该是开箱即用的。我还读了一篇关于https://docs.jboss.org/author/display/AS71/EJB+调用+来自+a+远程+客户端+使用+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启动日志片段:

9:42:56600 INFO[org.jboss.as.mail.extension](MSC服务线程1-4)JBAS015400:绑定邮件会话[java:jboss/mail/Default]09:42:56978 INFO[org.apache.coyote.http11.Http11Protocol](MSC服务线程1-3)JBWEB03001:coyote HTTP/1.1初始化时间:**HTTP-/0.0.0.0:8080**09:42:57010 INFO[org.apache.coyote.http11.Http11Protocol](MSC服务线程1-3)JBWEB03000:Coyte HTTP/1.1启动时间:**HTTP-/0.0.0.0:8080**09:42:57083 INFO[org.jboss.as.connector.subsystems.datasources](MSC服务线程1-3)JBAS010400:绑定数据源[java:jboss/datasources/ExampleDS]09:42:57117 INFO[org.jboss.as.server.deployment.scanner](MSC服务线程1-3)JBAS015012:已启动目录/opt/deployment/jboss/jboss-eap-6.4/standalone/deployments的FileSystemDeploymentService09:42:57124 INFO[org.jboss.as.remoting](MSC服务线程1-8)JBAS017100:监听127.0.0.1:999909:42:57124 INFO[org.jboss.as.remoting](MSC服务线程1-1)JBAS017100:监听**0.0.0.0:4447**

Netstat输出:

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

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

很少有问题导致此问题。

  1. 端口应该是4447,jboss上项目中的端口是8080
  2. 应该通过JBOSS_HOME/bin/add-user.sh添加用户,并将其添加到jboss-ejb-client.properties,如下所示。

    remote.connection.default.username=user2remote.connection.default.password=密码12(

  3. 使用正确版本的客户端。在我的案例中,我使用的是6.4版本的服务器和7.0.X版本的客户端

最新更新