I'm trying to be able to do a lookup for a specific instance of an EJB that is deployed to a cluster.
The clustering works wonders for redundancy, however I need to be able to find a specific instance of an EJB. The need is to verify that each EJB within the cluster is operational.
At the moment I have two EJBs deployed to separate nodes, each on a separate physical machine. Some of the underlying architecture services on machine 1 are offline and therefore cause EJB failures.
However on machine 2 these services are operational, therefore so are the EJBs.
My problem is when trying to do a look-up for the EJB. I have tried all of the folloing:
1. Using the 'corbaname' protocol and specifying the specific host, port, and EJB JNDI name (which is the only one on that machine) however I (sort of) randomly get the error from the other server.
2. Using corbaloc with a host/port and limiting the context to the 'NameServiceServerRoot' for the lookup. This, if given an relative JNDI name should locate the one on the identified server first. Result is still errored EJB.
3. Using corbaloc and specifying a fully qualified JNDI name (cell/nodes/nodename/servers/servername/jndiname. Still not working
4 & 5. Items 2 & 3 using a specific iiop instead of corbaloc.
So, am I missing something, is there another thing i can try? Basically I have to test cases, each of which is readily configured for the different EJB isntance. One should succeed, while the other should fail (- controlled known states), but for whatever reason the failure keeps showing up in my success area.
Which brings me to another question/point: Once it fails, it doesn't ever want to succeed... for an indeterminate amount of time. It is usually a while before i get from test run to test run, but when i hit the EJBs for after the first failure, regardless of which one i hit, or how many times i hit them, the look up always returns the failed case, until i take some time away to retool my tests.