Failover with Distributed Cache Synchronization
413051Jan 29 2004 — edited Feb 12 2004I am trying to work out how to deploy an application using TopLink in an Oracle Application Server 9.0.4 (10g) cluster. I am currently working with OC4J standalone 9.0.4 (I am working out the TopLink configuration with OC4J standalone for simplicity and will move on to the full app server once I have worked out the TopLink issues).
My requirements are:
1) When one OC4J instance goes down the other instance(s) must still continue to work.
2) When an OC4J instance that has goes down and is restarted then TopLink distributed cache synchronisation must continue to work.
I have two machines, let's call them A and B.
When I use the JMSClusteringService, with the JMS server running on machine A, then if I stop and restart OC4J on B everything is OK. When I stop OC4J on A then the OC4J instance on B continues to work (so requirement 1 is satisfied). However when I restart OC4J on A then distributed cache synchronization does not work i.e. none of the updates I make on either machine get propagated to the other, so requirement 2 is not met.
When I use the RMIJNDIClusteringService, with the RMI registry on machine A, then if I stop and restart OC4J on B everything is OK (as before). When I stop OC4J on A then I get exceptions when I try to use the OC4J instance on B (see the end of this post for an example), so requirement 1 is not met. When I restart OC4J on A then the instance on B starts work again, so requirement 1 is met.
Is there any way I can configure distributed cache synchronization so that both 1 and 2 are met?
Thanks,
Francis
Caused by: com.evermind.server.rmi.RMIConnectionException: Connection reset
at com.evermind.server.rmi.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:50)
at com.evermind.server.rmi.RecoverableRemoteInvocationHandler.invoke(RecoverableRemoteInvocationHandler.java:22)
at __Proxy2.create(Unknown Source)
at uk.co.corelogic.framework.person.struts.AmendPersonPersonalInitAction.fwPerform(AmendPersonPersonalInitAction.java:107)
at uk.co.corelogic.framework.common.struts.FrameworkAction.perform(FrameworkAction.java:224)
... 12 more
com.evermind.server.rmi.RMIConnectionException: Connection reset
at com.evermind.server.rmi.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:50)
at com.evermind.server.rmi.RecoverableRemoteInvocationHandler.invoke(RecoverableRemoteInvocationHandler.java:22)
at __Proxy2.create(Unknown Source)
at uk.co.corelogic.framework.person.struts.AmendPersonPersonalInitAction.fwPerform(AmendPersonPersonalInitAction.java:107)
at uk.co.corelogic.framework.common.struts.FrameworkAction.perform(FrameworkAction.java:224)
at org.apache.struts.action.ActionServlet.processActionPerform(ActionServlet.java:1787)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1586)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
at java.lang.Thread.run(Thread.java:534)