Hi we had an EJB load balancer for that. It was a class that would be given list of server ips with ports, jndi, username/password, interface and was then given implementation of some interface that had one method, which could return any type (templated) and that load balancer ensured that always different server was chosen for invocation. For certain types of exceptions it retried execution on another ip (but be careful there, not for EJBException!).
Basically the whole thing had several "layers" - the lowest was generic load balancer and generic checker, above that was jndi load balancer (checking any jndi url), and above that ejb load balancer.
[Message sent by forum member 'jarol1' (jarol1)]
http://forums.java.net/jive/thread.jspa?messageID=289502