I'm looking into a similar config. I believe the answer is to have fixed addresses for each server with another address which can be passed between them. I've just installed fake to try out. Ideally I'd like to write a singleton mbean to control handover of the address between nodes.
How could this be done in Java? I'm interested.
The ClusterAgent installed on each machine should be able to set the IP on a healthy or less loaded (detect this through heartbeat in their private network) to receive requests.
Will JBoss Cluster implement it? I believe Oracle RAC or HP Service Guard should have implemented sth similar although not Java.