I have a failover problem, and I just can't figure it out. I have two JBoss 4.0.4 servers, with several stateless EJB2 beans. Example jboss.xml:
| <?xml version="1.0" encoding="UTF-8"?> | <!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd"> | | <jboss> | <enterprise-beans> | <session> | <ejb-name>MyService</ejb-name> | <jndi-name>ejb/MyService</jndi-name> | <configuration-name>MyClusteredSessionBean</configuration-name> | | <clustered>true</clustered> | <method-attributes> | </method-attributes> | </session> | </enterprise-beans> | </jboss> | This is the container config in standardjboss.xml: | <container-name>MyClusteredSessionBean</container-name> | <call-logging>false</call-logging> | <invoker-proxy-binding-name>clustered-stateless-rmi-invoker</invoker-proxy-binding-name> | <container-interceptors> | <interceptor>org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor</interceptor> | <interceptor>org.jboss.ejb.plugins.CleanShutdownInterceptor</interceptor> | <interceptor>org.jboss.ejb.plugins.LogInterceptor</interceptor> | <interceptor>org.jboss.ejb.plugins.SecurityInterceptor</interceptor> | <!-- CMT --> | <interceptor transaction="Container">org.jboss.ejb.plugins.TxInterceptorCMT</interceptor> | | <interceptor transaction="Container">org.jboss.ejb.plugins.CallValidationInterceptor</interceptor> | <interceptor transaction="Container">org.jboss.ws.server.ServiceEndpointInterceptor </interceptor> | <interceptor transaction="Container">org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor</interc | eptor> | <!-- BMT --> | <interceptor transaction="Bean">org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor</interceptor | > | <interceptor transaction="Bean">org.jboss.ejb.plugins.TxInterceptorBMT</interceptor> | <interceptor transaction="Bean">org.jboss.ejb.plugins.CallValidationInterceptor</interceptor> | <interceptor transaction="Bean">org.jboss.ws.server.ServiceEndpointInterceptor </interceptor> | <interceptor>org.jboss.resource.connectionmanager.CachedConnectionInterceptor</interceptor> | </container-interceptors> | <instance-pool>org.jboss.ejb.plugins.StatelessSessionInstancePool</instance-pool> | <instance-cache></instance-cache> | <persistence-manager></persistence-manager> | <container-pool-conf> | <MaximumSize>100</MaximumSize> | </container-pool-conf> | <cluster-config> | <partition-name>${jboss.partition.name:DefaultPartition}</partition-name> | </cluster-config> | </container-configuration> | and the the invoker in standardjboss.xml: | <invoker-proxy-binding> | <name>clustered-stateless-rmi-invoker</name> | <invoker-mbean>jboss:service=invoker,type=jrmpha</invoker-mbean> | <proxy-factory>org.jboss.proxy.ejb.ProxyFactoryHA</proxy-factory> | <proxy-factory-config> | <client-interceptors> | <home> | <interceptor>org.jboss.proxy.ejb.HomeInterceptor</interceptor> | <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor> | <interceptor>org.jboss.proxy.TransactionInterceptor</interceptor> | <interceptor>org.jboss.proxy.ejb.RetryInterceptor</interceptor> | <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor> | </home> | <bean> | <interceptor>org.jboss.proxy.ejb.StatelessSessionInterceptor</interceptor> | <interceptor>org.jboss.proxy.SecurityInterceptor</interceptor> | <interceptor>org.jboss.proxy.TransactionInterceptor</interceptor> | <interceptor>org.jboss.proxy.ejb.RetryInterceptor</interceptor> | <interceptor>org.jboss.invocation.InvokerInterceptor</interceptor> | </bean> | </client-interceptors> | </proxy-factory-config> | </invoker-proxy-binding> | My test client is simple. I generate a home interface, and do repeated create() while I run a shutdown on one of the servers. This is my argument to InitialContext(): | Hashtable<String, String> env = new Hashtable<String, String>(); | env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.NamingContextFactory"); | env.put(Context.URL_PKG_PREFIXES, "jboss.naming:org.jboss.naming"); | env.put(Context.PROVIDER_URL, "server1:1100,server2:1100"); | When I shutdown the server, I first get a null object Exception: | java.lang.IllegalArgumentException: null object name | at org.jboss.mx.server.registry.BasicMBeanRegistry.get(BasicMBeanRegistry.java:509) | at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:653) | at org.jboss.invocation.jrmp.server.JRMPInvoker$MBeanServerAction.invoke(JRMPInvoker.java:819) | at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:420) | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) | at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) | at java.lang.reflect.Method.invoke(Method.java:585) | at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294) | at sun.rmi.transport.Transport$1.run(Transport.java:153) | at java.security.AccessController.doPrivileged(Native Method) | at sun.rmi.transport.Transport.serviceCall(Transport.java:149) | at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466) | at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707) | at java.lang.Thread.run(Thread.java:595) | at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247) | at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223) | at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126) | at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Source) | at org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProxy.java:133) | at org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:331) | at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:194) | at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61) | at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70) | at org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:184) | at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100) | at $Proxy0.create(Unknown Source) | .. then I get connection refused: | Connection refused to host: 10.16.202.3; nested exception is: | java.net.ConnectException: Connection refused | java.rmi.ConnectException: Connection refused to host: 10.16.202.3; nested exception is: | java.net.ConnectException: Connection refused | at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:574) | at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185) | at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171) | at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:94) | at org.jboss.invocation.jrmp.server.JRMPInvoker_Stub.invoke(Unknown Source) | at org.jboss.invocation.jrmp.interfaces.JRMPInvokerProxy.invoke(JRMPInvokerProxy.java:133) | at org.jboss.invocation.InvokerInterceptor.invokeInvoker(InvokerInterceptor.java:331) | at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:194) | at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:61) | at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:70) | at org.jboss.proxy.ejb.HomeInterceptor.invoke(HomeInterceptor.java:184) | at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:100) | I have tried various things, like upgrading the ejb jar to EJB3 Preview 9. This had no effect. I have tried increasing the log level of org.jboss.invocation to TRACE, but no extra logging occur. It looks like the client doesn't get a home stub with failover capabilities at all. Repeated use of the client while both servers are running shows that the load-balancing part is working. Any ideas? View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3983419#3983419 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3983419 _______________________________________________ jboss-user mailing list jboss-user@lists.jboss.org https://lists.jboss.org/mailman/listinfo/jboss-user