8 Replies Latest reply on Jun 12, 2007 3:37 PM by Vinicius Carvalho

    Cluster Stateful EJB 3.0 problems

    Vinicius Carvalho Apprentice

      Hello there! I'm trying to get a SFSB in a jboss 4.2.0 cluster. It's a simple example. A bean that increments a value. My bean's interface and implementation:

      @Remote
      public interface Contador {
      
       public abstract int increase();
      
       public abstract int decrease();
      
      }
      
      @Stateful
      public class ContadorBean implements Contador {
       private int count;
      
       public int increase(){
       count++;
       System.out.println("Contador no valor: " + count);
       return count;
       }
      
       public int decrease(){
       count--;
       System.out.println("Contador no valor: " + count);
       return count;
       }
      
       @Remove
       public void destroy(){
      
       }
      }
      
      jndi properties for the client:
      java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
      java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
      java.naming.provider.url=jnp://192.168.0.169:1100
      
      jboss.xml:
      <jboss>
       <enterprise-beans>
       <session>
       <ejb-name>ContadorBean</ejb-name>
       <clustered>True</clustered>
       </session>
       </enterprise-beans>
      </jboss>
      
      


      Well, I startup 2 instances, deploy the package on the farm directory. and start the client. Things are just ok :)
      So I decide to shutdown one of the nodes...
      and I get this exception:

      Exception in thread "main" java.lang.RuntimeException: cluster invocation failed, last exception was:
       at org.jboss.aspects.remoting.ClusterChooserInterceptor.invoke(ClusterChooserInterceptor.java:166)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.remoting.ClusteredIsLocalInterceptor.invoke(ClusteredIsLocalInterceptor.java:55)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.stateful.StatefulClusteredProxy.invoke(StatefulClusteredProxy.java:108)
       at $Proxy2.increase(Unknown Source)
       at x.x.x.jboss.client.ContadorClient.execute(ContadorClient.java:27)
       at x.x.x.jboss.client.ContadorClient.main(ContadorClient.java:16)
      Caused by: org.jboss.aop.NotFoundInDispatcherException: Object with oid: jboss.j2ee:jar=increment.jar,name=ContadorBean,service=EJB3 was not found in the Dispatcher
       at org.jboss.aop.Dispatcher.invoke(Dispatcher.java:85)
       at org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
       at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:734)
       at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:560)
       at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:369)
       at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:165)
       at org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:163)
       at org.jboss.remoting.Client.invoke(Client.java:1550)
       at org.jboss.remoting.Client.invoke(Client.java:530)
       at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.aspects.remoting.ClusterChooserInterceptor.invoke(ClusterChooserInterceptor.java:77)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:61)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.aspects.security.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:53)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.remoting.ClusteredIsLocalInterceptor.invoke(ClusteredIsLocalInterceptor.java:55)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.ejb3.stateful.StatefulClusteredProxy.invoke(StatefulClusteredProxy.java:108)
       at $Proxy2.increase(Unknown Source)
       at x.x.x.jboss.client.ContadorClient.execute(ContadorClient.java:27)
       at x.x.x.jboss.client.ContadorClient.main(ContadorClient.java:16)
       at org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:74)
       at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
       at org.jboss.aspects.remoting.ClusterChooserInterceptor.invoke(ClusterChooserInterceptor.java:77)
       ... 11 more
      
      


      Am I missing something here?

      Regards

        • 1. Re: Cluster Stateful EJB 3.0 problems
          Brian Stansberry Master

          Do you see your EJB deploying properly on both nodes?

          • 2. Re: Cluster Stateful EJB 3.0 problems
            Vinicius Carvalho Apprentice

            Yep Brian. When deploying to the farm, the other node deploys the bean, I can check it on the webconsole and it is deployed. Tried on a different machine (previously I was using Ubuntu + WinXP) now tried on two ubuntu machines and go the same problem.

            Best regards

            • 3. Re: Cluster Stateful EJB 3.0 problems
              Vinicius Carvalho Apprentice

              Also, there's no firewall between machines. Machines are behind a proxy server, but its for HTTP only, dunno if it matters.

              Regards

              • 4. Re: Cluster Stateful EJB 3.0 problems
                Brian Stansberry Master

                OK, if farming is working and the bean is deploying, for now I'm going to assume the beans are clustering properly.

                Can you describe in as much detail as possible about what you're doing when this happens? For example, is your client looping making calls on the bean when you shutdown the server? Or does it have a ref to the bean, and is sleeping while you shut down, and then the call fails after the shutdown is complete?

                • 5. Re: Cluster Stateful EJB 3.0 problems
                  Vinicius Carvalho Apprentice

                  Well here's the code for the client:

                  public void execute(){
                   Contador contador = obterContador();
                   int total = 0;
                   for(int i=0;i<repeat;i++){
                   total = contador.increase();
                   System.out.println("O total é:" + total);
                   try {
                   Thread.sleep(5000);
                   } catch (InterruptedException e) {
                   e.printStackTrace();
                   }
                   }
                   }
                  
                   public Contador obterContador(){
                   Contador contador = null;
                   try {
                   Properties p = new Properties();
                   p.put(Context.INITIAL_CONTEXT_FACTORY,
                   "org.jnp.interfaces.NamingContextFactory");
                   p.put(Context.URL_PKG_PREFIXES, "jboss.naming:org.jnp.interfaces");
                   p.put(Context.PROVIDER_URL, "192.168.0.39:1100"); // HA-JNDI port.
                  
                   InitialContext ctx = new InitialContext(p);
                   contador = (Contador) ctx.lookup("ContadorBean/remote");
                   } catch (NamingException e) {
                   e.printStackTrace();
                   }
                   return contador;
                   }
                  

                  Yeah, pretty much what you've described :

                  After a few calls and during the sleep of the client, I shutdown the server that is responding to the calls. I was hopping that the second node would answer the calls.

                  PS: I've ran the JGroups tests for receiver and sender, the draw example, and both works ok.

                  Best regards

                  • 6. Re: Cluster Stateful EJB 3.0 problems
                    Vinicius Carvalho Apprentice

                    Well, I've turned on the tracing on the client, and here's what I get before the first invocation:

                    TRACE [main] HARMIClient.readObject(314) | Init, clusterInfo: org.jboss.ha.framework.interfaces.FamilyClusterInfoImpl@2f549848{familyName=DefaultPartition/HAJNDI,targets=[HARMIServerImpl_Stub[UnicastRef2 [liveRef: [endpoint:[127.0.0.1:1101](remote),objID:[-63ed3ba3:113211d2bae:-7ffb, 8972489255603988726]]]], HARMIServerImpl_Stub[UnicastRef2 [liveRef: [endpoint:[127.0.0.1:1101](remote),objID:[-63ed3ba3:113211d2bae:-7ffb, 8972489255603988726]]]]],currentViewId=-71890248,isViewMembersInSyncWithViewId=false,cursor=999999999,arbitraryObject=null}, policy=org.jboss.ha.framework.interfaces.RoundRobin@a97b0b
                    TRACE [main] HARMIClient.invokeRemote(167) | Invoking on target=HARMIServerImpl_Stub[UnicastRef2 [liveRef: [endpoint:[127.0.0.1:1101](remote),objID:[-63ed3ba3:113211d2bae:-7ffb, 8972489255603988726]]]]
                    TRACE [main] HARMIClient.invokeRemote(167) | Invoking on target=HARMIServerImpl_Stub[UnicastRef2 [liveRef: [endpoint:[127.0.0.1:1101](remote),objID:[-63ed3ba3:113211d2bae:-7ffb, 8972489255603988726]]]]
                    TRACE [main] PropertyEditors.mapJavaBeanProperties(316) | Mapping properties for bean: SocketClientInvoker[1301ed8, socket://127.0.0.1:3873]
                    DEBUG [main] MicroSocketClientInvoker.<init>(244) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] constructed
                    DEBUG [main] MicroRemoteClientInvoker.connect(240) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] connecting
                    DEBUG [main] MicroSocketClientInvoker.initPool(711) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] added new pool ([]) as ServerAddress[127.0.0.1:3873, NO enableTcpNoDelay timeout 0 ms]
                    DEBUG [main] MicroRemoteClientInvoker.connect(245) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] connected
                    TRACE [main] MicroRemoteClientInvoker.invoke(63) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873](1) invoking InvocationRequest[edc3a2, AOP, [advisedMethod=public abstract java.lang.Object org.jboss.ejb3.ProxyFactory.createProxy(), unadvisedMethod=public abstract java.lang.Object org.jboss.ejb3.ProxyFactory.createProxy(), metadata=[metaData={DISPATCHER={OID=[type=AS_ISvalue=jboss.j2ee:jar=increment.jar,name=ContadorBean,service=EJB3,element=ProxyFactory,partition=DefaultPartition]}, REMOTING={SUBSYSTEM=[type=AS_ISvalue=AOP], INVOKER_LOCATOR=[type=AS_ISvalue=InvokerLocator [socket://127.0.0.1:3873/]]}}], targetObject=null, arguments=null]]
                    TRACE [main] MicroSocketClientInvoker.getConnection(776) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] getting a socket, usedPooled: 0
                    TRACE [main] MicroSocketClientInvoker.getConnection(800) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] creating socket 0, attempt 1
                    TRACE [main] MicroSocketClientInvoker.getConnection(802) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] created socket: Socket[addr=/127.0.0.1,port=3873,localport=59398]
                    TRACE [main] SocketWrapper.<init>(67) | constructing org.jboss.remoting.transport.socket.ClientSocketWrapper instance for Socket[addr=/127.0.0.1,port=3873,localport=59398], using timeout 0
                    TRACE [main] SocketWrapper.setTimeout(81) | ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=59398].29428e] setting timeout to 0
                    TRACE [main] ClientSocketWrapper.createOutputStream(194) | ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=59398].29428e] getting output stream from Socket[addr=/127.0.0.1,port=3873,localport=59398], org.jboss.remoting.marshal.serializable.SerializableMarshaller@d0a5d9
                    TRACE [main] JavaSerializationManager.createOutput(61) | Creating ObjectOutputStream
                    TRACE [main] ClientSocketWrapper.createInputStream(176) | ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=59398].29428e] getting input stream from Socket[addr=/127.0.0.1,port=3873,localport=59398], org.jboss.remoting.marshal.serializable.SerializableUnMarshaller@388993
                    TRACE [main] JavaSerializationManager.createInput(52) | Creating ObjectInputStreamWithClassLoader
                    TRACE [main] SocketWrapper.setTimeout(81) | ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=59398].29428e] setting timeout to 0
                    DEBUG [main] ClientSocketWrapper.createStreams(169) | reset timeout: 0
                    TRACE [main] MicroSocketClientInvoker.writeVersion(994) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] writing version 22 on output stream
                    TRACE [main] MicroSocketClientInvoker.versionedWrite(965) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] writing invocation to marshaller
                    TRACE [main] MicroSocketClientInvoker.versionedWrite(970) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] done writing invocation to marshaller
                    TRACE [main] MicroSocketClientInvoker.readVersion(985) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] reading version from input stream
                    TRACE [main] MicroSocketClientInvoker.readVersion(987) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] read version 22 from input stream
                    TRACE [main] MicroSocketClientInvoker.versionedRead(941) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] reading response from unmarshaller
                    TRACE [main] MicroSocketClientInvoker.transport(667) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] returned ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=59398].29428e] to pool
                    TRACE [main] MicroSocketClientInvoker.transport(682) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] received response InvocationResponse[1b9240e, org.jboss.aop.joinpoint.InvocationResponse@1ee4648]
                    TRACE [main] MicroRemoteClientInvoker.invoke(181) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] received InvocationResponse so going to return response's return value of org.jboss.aop.joinpoint.InvocationResponse@1ee4648
                    TRACE [main] InvokerRegistry.destroyClientInvoker(213) | destroying client invoker InvokerLocator [socket://127.0.0.1:3873/], config {}
                    DEBUG [main] InvokerRegistry.decrementClientInvokerCounter(595) | removed SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] from registry
                    TRACE [main] InvokerRegistry.destroyClientInvoker(222) | disconnecting SocketClientInvoker[1301ed8, socket://127.0.0.1:3873]
                    DEBUG [main] MicroSocketClientInvoker.disconnect(277) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] disconnecting ...
                    TRACE [main] MicroRemoteClientInvoker.disconnect(273) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] disconnecting ...
                    TRACE [main] MicroSocketClientInvoker.clearPools(159) | clearing pool for ServerAddress[127.0.0.1:3873, NO enableTcpNoDelay timeout 0 ms]
                    DEBUG [main] SocketWrapper.close(123) | ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=59398].29428e] closing
                    TRACE [main] MicroRemoteClientInvoker.disconnect(284) | SocketClientInvoker[1301ed8, socket://127.0.0.1:3873] disconnected
                    TRACE [main] ClusteredIsLocalInterceptor.findLocalContainer(69) | Cannot find local container for jboss.j2ee:jar=increment.jar,name=ContadorBean,service=EJB3
                    DEBUG [main] SecurityAssociation.<clinit>(143) | Using ThreadLocal: false
                    TRACE [main] SecurityAssociation.getPrincipal(190) | getPrincipal, principal=null
                    TRACE [main] PropertyEditors.mapJavaBeanProperties(316) | Mapping properties for bean: SocketClientInvoker[1f6f296, socket://127.0.0.1:3873]
                    DEBUG [main] MicroSocketClientInvoker.<init>(244) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] constructed
                    DEBUG [main] MicroRemoteClientInvoker.connect(240) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] connecting
                    DEBUG [main] MicroSocketClientInvoker.initPool(711) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] added new pool ([]) as ServerAddress[127.0.0.1:3873, NO enableTcpNoDelay timeout 0 ms]
                    DEBUG [main] MicroRemoteClientInvoker.connect(245) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] connected
                    TRACE [main] MicroRemoteClientInvoker.invoke(63) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873](1) invoking InvocationRequest[1b09468, AOP, [id=null, MethodInvocation=[advisedMethod=public abstract int x.x.x.jboss.ejb.Contador.increase(), unadvisedMethod=public abstract int x.x.x.jboss.ejb.Contador.increase(), metadata=[metaData={PARTITION_NAME={PARTITION_NAME=[type=TRANSIENTvalue=DefaultPartition]}, DISPATCHER={OID=[type=AS_ISvalue=jboss.j2ee:jar=increment.jar,name=ContadorBean,service=EJB3]}, REMOTING={SUBSYSTEM=[type=AS_ISvalue=AOP], INVOKER_LOCATOR=[type=AS_ISvalue=InvokerLocator [socket://127.0.0.1:3873/]]}, CLUSTERED_REMOTING={CLUSTER_VIEW_ID=[type=AS_ISvalue=0], FAILOVER_COUNTER=[type=AS_ISvalue=0], CLUSTER_FAMILY_WRAPPER=[type=AS_ISvalue=org.jboss.aspects.remoting.FamilyWrapper@10bc49d], CLUSTER_FAMILY=[type=AS_ISvalue=jar=increment.jar,name=ContadorBeansocketDefaultPartition], LOADBALANCE_POLICY=[type=AS_ISvalue=org.jboss.ha.framework.interfaces.FirstAvailable@587c94]}}], targetObject=null, arguments=null]]]
                    TRACE [main] MicroSocketClientInvoker.getConnection(776) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] getting a socket, usedPooled: 0
                    TRACE [main] MicroSocketClientInvoker.getConnection(800) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] creating socket 1, attempt 1
                    TRACE [main] MicroSocketClientInvoker.getConnection(802) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] created socket: Socket[addr=/127.0.0.1,port=3873,localport=59399]
                    TRACE [main] SocketWrapper.<init>(67) | constructing org.jboss.remoting.transport.socket.ClientSocketWrapper instance for Socket[addr=/127.0.0.1,port=3873,localport=59399], using timeout 0
                    TRACE [main] SocketWrapper.setTimeout(81) | ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=59399].b2a2d8] setting timeout to 0
                    TRACE [main] ClientSocketWrapper.createOutputStream(194) | ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=59399].b2a2d8] getting output stream from Socket[addr=/127.0.0.1,port=3873,localport=59399], org.jboss.remoting.marshal.serializable.SerializableMarshaller@1e13d52
                    TRACE [main] JavaSerializationManager.createOutput(61) | Creating ObjectOutputStream
                    TRACE [main] ClientSocketWrapper.createInputStream(176) | ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=59399].b2a2d8] getting input stream from Socket[addr=/127.0.0.1,port=3873,localport=59399], org.jboss.remoting.marshal.serializable.SerializableUnMarshaller@80fa6f
                    TRACE [main] JavaSerializationManager.createInput(52) | Creating ObjectInputStreamWithClassLoader
                    TRACE [main] SocketWrapper.setTimeout(81) | ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=59399].b2a2d8] setting timeout to 0
                    DEBUG [main] ClientSocketWrapper.createStreams(169) | reset timeout: 0
                    TRACE [main] MicroSocketClientInvoker.writeVersion(994) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] writing version 22 on output stream
                    TRACE [main] MicroSocketClientInvoker.versionedWrite(965) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] writing invocation to marshaller
                    TRACE [main] MicroSocketClientInvoker.versionedWrite(970) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] done writing invocation to marshaller
                    TRACE [main] MicroSocketClientInvoker.readVersion(985) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] reading version from input stream
                    TRACE [main] MicroSocketClientInvoker.readVersion(987) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] read version 22 from input stream
                    TRACE [main] MicroSocketClientInvoker.versionedRead(941) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] reading response from unmarshaller
                    TRACE [main] MicroSocketClientInvoker.transport(667) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] returned ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=59399].b2a2d8] to pool
                    TRACE [main] MicroSocketClientInvoker.transport(682) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] received response InvocationResponse[4fce71, org.jboss.aop.joinpoint.InvocationResponse@17a8a02]
                    TRACE [main] MicroRemoteClientInvoker.invoke(181) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] received InvocationResponse so going to return response's return value of org.jboss.aop.joinpoint.InvocationResponse@17a8a02
                    TRACE [main] InvokerRegistry.destroyClientInvoker(213) | destroying client invoker InvokerLocator [socket://127.0.0.1:3873/], config {}
                    DEBUG [main] InvokerRegistry.decrementClientInvokerCounter(595) | removed SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] from registry
                    TRACE [main] InvokerRegistry.destroyClientInvoker(222) | disconnecting SocketClientInvoker[1f6f296, socket://127.0.0.1:3873]
                    DEBUG [main] MicroSocketClientInvoker.disconnect(277) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] disconnecting ...
                    TRACE [main] MicroRemoteClientInvoker.disconnect(273) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] disconnecting ...
                    TRACE [main] MicroSocketClientInvoker.clearPools(159) | clearing pool for ServerAddress[127.0.0.1:3873, NO enableTcpNoDelay timeout 0 ms]
                    DEBUG [main] SocketWrapper.close(123) | ClientSocketWrapper[Socket[addr=/127.0.0.1,port=3873,localport=59399].b2a2d8] closing
                    TRACE [main] MicroRemoteClientInvoker.disconnect(284) | SocketClientInvoker[1f6f296, socket://127.0.0.1:3873] disconnected
                    O total é:1
                    


                    It seems that it is not listing the available bean on the other node. I've also turned on the trace level for jgroups and the clusters are communicating all the time through ack messages. BUT, I tried to use the second cluster as my JNDI provider and I'm getting a connection refused. There's no firewall, the udp multicast is working and I'm using the same version of jbossall-client.jar on both servers and the client. Could this be the problem? If so, any hints?

                    Regards

                    • 7. Re: Cluster Stateful EJB 3.0 problems
                      Brian Stansberry Master

                      First, what values are you passing to -b on the two instances when you start JBoss? If nothing, in AS 4.2, the JGroups channels will use the default interface, so they will cluster, but all other services will bind to 127.0.0.1.

                      Second, is your client running on the same machine as one of the two AS instances?

                      I suspect the services on your 2nd machine are bound to localhost, so a client on another machine cannot access them.

                      • 8. Re: Cluster Stateful EJB 3.0 problems
                        Vinicius Carvalho Apprentice

                        Thanks a LOT

                        That was it :) I was not using -b to bind the correct IP address. Thanks a lot! Thanks for all the help! Cluster is now working smoothly :D

                        Best Regards