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 supportsclustering 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