I have two JBoss 4.2.3GA nodes in a cluster with a Tomcat 5 application calling SLSBs on
them. Standard stuff. If either node is down, the client can find the other when it
first needs a service. If both are up, the client finds the first one to use a service,
then the first node is shut down, the client fails with a CannotConnectException despite
the second node still being available.
I can reproduce the problem on my local PC and logs like the following show the nodes
recognise the other cluster member as it's started and shutdown.
18:45:30,405 INFO [UefaPartition] New cluster view for partition UefaPartition (id: 3,
delta: 1) : [127.0.0.1:1299, 127.0.0.1:1099]
| 18:45:30,405 INFO [UefaPartition] I am (127.0.0.1:1299) received membershipChanged
event:
| 18:45:30,405 INFO [UefaPartition] Dead members: 0 ([])
| 18:45:30,405 INFO [UefaPartition] New Members : 1 ([127.0.0.1:1099])
| 18:45:30,405 INFO [UefaPartition] All Members : 2 ([127.0.0.1:1299, 127.0.0.1:1099])
| 18:48:40,850 INFO [UefaPartition] New cluster view for partition UefaPartition (id:
4, delta: -1) : [127.0.0.1:1299]
| 18:48:40,850 INFO [UefaPartition] I am (127.0.0.1:1299) received membershipChanged
event:
| 18:48:40,850 INFO [UefaPartition] Dead members: 1 ([127.0.0.1:1099])
| 18:48:40,850 INFO [UefaPartition] New Members : 0 ([])
| 18:48:40,850 INFO [UefaPartition] All Members : 1 ([127.0.0.1:1299])
The client fails with the following.
Caused by: org.jboss.remoting.CannotConnectException: Can not get connection to server.
Problem establishing socket connection for InvokerLocator
[socket://127.0.0.1:4446/?dataType=invocation&enableTcpNoDelay=true&marshaller=org.jboss.invocation.unified.marshall.InvocationMarshaller&socketTimeout=600000&unmarshaller=org.jboss.invocation.unified.marshall.InvocationUnMarshaller]
| at
org.jboss.remoting.transport.socket.MicroSocketClientInvoker.transport(MicroSocketClientInvoker.java:579)
| at
org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:122)
| at org.jboss.remoting.Client.invoke(Client.java:1634)
| at org.jboss.remoting.Client.invoke(Client.java:548)
| at
org.jboss.invocation.unified.interfaces.UnifiedInvokerProxy.invoke(UnifiedInvokerProxy.java:184)
| at
org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:365)
| at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:197)
| at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61)
| at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70)
| at
org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:112)
| at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100)
| at $Proxy14.getStatusSuccessFail(Unknown Source)
This doesn't make sense as the client proxy should know there is another member of the
cluster and try that. What am I missing?
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4247340#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...