----- Original Message -----
Sent: Friday, March 09, 2001 7:32
PM
Subject: EJB Clustering
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