2016-11-30 65 views
0

我正在通过一个EJB教程,其中我的客户端程序通过远程无状态EJB调用方法来添加一本书。退出时,客户端检索并打印来自EJB的所有书籍(我知道将数据存储在无状态EJB中的列表中并不是一个好主意)。所有这些工作都很好,除了最初的RMI还返回以下异常(我也包含了客户端测试的完整输出)。初始EJB RMI有效,但有例外

客户端输出:

Nov 29, 2016 11:34:29 PM org.jboss.ejb.client.EJBClient <clinit> 
INFO: JBoss EJB Client version 2.1.4.Final 
********************** 
Welcome to Book Store 
********************** 
Options 
1. Add Book 
2. Exit 
Enter Choice: 1 
Enter book name: Some book 
Nov 29, 2016 11:34:44 PM org.xnio.Xnio <clinit> 
INFO: XNIO version 3.4.0.Final 
Nov 29, 2016 11:34:44 PM org.xnio.nio.NioXnio <clinit> 
INFO: XNIO NIO Implementation Version 3.4.0.Final 
Nov 29, 2016 11:34:44 PM org.jboss.remoting3.EndpointImpl <clinit> 
INFO: JBoss Remoting version 4.0.21.Final 
Nov 29, 2016 11:34:45 PM org.jboss.ejb.client.remoting.VersionReceiver handleMessage 
INFO: EJBCLIENT000017: Received server version 2 and marshalling strategies [river] 
Nov 29, 2016 11:34:45 PM org.jboss.ejb.client.remoting.RemotingConnectionEJBReceiver associate 
INFO: EJBCLIENT000013: Successful version handshake completed for receiver context EJBReceiverContext{[email protected], receiver=Remoting connection EJB receiver [connectio[email protected]271053e1,channel=jboss.ejb,nodename=slave01:server01]} on channel Channel ID 87a6ebda (outbound) of Remoting connection 64bfbc86 to /127.0.0.1:8133 of endpoint "client-endpoint" <64bf3bbf> 
Nov 29, 2016 11:34:45 PM org.jboss.ejb.client.remoting.RemotingConnectionClusterNodeManager getEJBReceiver 
INFO: Could not create a connection for cluster node ClusterNode{clusterName='ejb', nodeName='slave01:server01', clientMappings=[ClientMapping{sourceNetworkAddress=/0:0:0:0:0:0:0:0, sourceNetworkMaskBits=0, destinationAddress='0.0.0.0', destinationPort=8080}], resolvedDestination=[Destination address=0.0.0.0, destination port=8080]} in cluster ejb 
java.net.ConnectException: Connection refused 
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717) 
    at org.xnio.nio.WorkerThread$ConnectHandle.handleReady(WorkerThread.java:321) 
    at org.xnio.nio.WorkerThread.run(WorkerThread.java:567) 
    at ...asynchronous invocation...(Unknown Source) 
    at org.jboss.remoting3.EndpointImpl.doConnect(EndpointImpl.java:294) 
    at org.jboss.remoting3.EndpointImpl.connect(EndpointImpl.java:430) 
    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.RemotingConnectionClusterNodeManager.getEJBReceiver(RemotingConnectionClusterNodeManager.java:79) 
    at org.jboss.ejb.client.ClusterContext$EJBReceiverAssociationTask.call(ClusterContext.java:469) 
    at org.jboss.ejb.client.ClusterContext$EJBReceiverAssociationTask.call(ClusterContext.java:443) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    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) 
********************** 
Welcome to Book Store 
********************** 
Options 
1. Add Book 
2. Exit 
Enter Choice: 2 
Book(s) entered so far: 2 
1. test1 
2. Some book 
***Using second lookup to get library stateless object*** 
Book(s) entered so far: 2 
1. test1 
2. Some book 

所以一切都与客户端,而不是例外等,似乎正常工作。我怀疑这个问题与zero'd out节点地址有关,但我不确定。客户端属性文件在下面(如果配置不正确)。

jboss-ejb-clients.properties:

endpoint.name=client-endpoint 
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false 
invocation.timeout=3000 
reconnect.tasks.timeout=2000 


# User Credentials 
username=user 
password=pass 


# Remote Connections 
remote.connections=h1,h2 
remote.connection.h1.host=127.0.0.1 
remote.connection.h1.port=8133 
remote.connection.h1.username=user 
remote.connection.h1.password=pass  
remote.connection.h2.host=127.0.0.1 
remote.connection.h2.port=8134 
remote.connection.h2.username=user 
remote.connection.h2.password=pass 


# Cluster 
remote.clusters=ejb 
remote.cluster.ejb.connect.timeout=2500 
remote.cluster.ejb.max-allowed-connected-nodes=2 
remote.cluster.ejb.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false 
remote.cluster.ejb.connect.options.org.xnio.Options.SSL_ENABLED=false 
remote.cluster.ejb.username=user 
remote.cluster.ejb.password=pass 

回答

0

广泛的研究(和反复试验与测试代码的一个良好的金额)后,我发现了一本书上的Safari(Java EE的7与发展WildFly)带领我走向正确的方向。我必须删除jboss-ejb-clients.properties文件,并将在答案here中找到的ejb-client配置添加到我的主客户端类中。