[jboss-user] [Clustering/JBoss] - Fail over isn't working: Connection refused
hnrk
do-not-reply at jboss.com
Mon Nov 6 07:37:59 EST 2006
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
More information about the jboss-user
mailing list