2016-11-30 58 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配置添加到我的主客戶端類中。