I would like to find out if anybody out there has done much with clustering EJB (or RMI) servers using Orion.
 
We will be running an operation that will need to be large, scalable and have a failsafe level of availability.  In other words there should be no single point of failure.
 
Obviously running a single EJB server will lead to a single point of failure in the infrastructure (and obviously limits scalability also).  What we sould like to do is have the ability to run several clustered EJB servers so as to provide the ability to scale (add more servers to the cluster) and failover (if one falls the others pick up the slack). 
The classic solution to this sort of clustering (e.g. when done with web servers) is to place a local director in front of the cluster.  Then all requests are sent the the IP of the local director which just routes them through to one of the machines in the cluster.  The obvious problem when doing this with RMI/EJB is that when the remote interfaces (well, stubs really) do a bind() into JNDI the IP address of the machine is bound in with it.  This means that requests made through that stub will go back to the machine doing the registering and not the local director, which defeats the local director.
 
Weblogic supports clustering by providing its own (proprietry, yuk) version of rmic (c.f. http://www.weblogic.com/docs51/classdocs/API_rmi.html#compiler), but I am not aware of anything similar in Orion.  (By the way, please can no-one interpret this comment as being anything of the "WL is better than Orion" sort... it is clear most of us that Orion is superior in most aspects).
 
For RMI we have implemented a solution that invloves binding different instances of the same RMI service as different entries in the same JNDI directory and using a central service (or array of them) to pass out the stubs from the JNDI tree in a round robin fashion to clients that request them.  (e.g. two services to implement logging bind to "rmi/com/amc/system/logging/LoggingService/bart" and "rmi/com/amc/system/logging/LoggingService/homer", clients make a request for com.amc.system.logging.LoggingService.class and receive back a stub for one or there of the services).
 
I can't see that this approach will work with EJBs as you don't seem to have control over to where in the JNDI tree the stubs are bound (the mapping of JNDI name to remote interface is done in the application-client.xml!)
 
Can anyone give me any insights on other ways to approach clustering of EJB services using Orion?
 
Thanks in advance...
 
William Jones
asset-management.com
 

Reply via email to