do what I do, whent it is all pretty much the same so you need to
1- ask yourself if you prefer it in blue or red
2- ask yourself which one you prefer
3- flip a coin
Several thousand computers? Depending on what you are trying to achieve jini and javaspaces could also be one possibility.
If it is a layered client-server architechture, my coin would flip on J2EE side. If it's more like 'real distributed' system - many computers solving the same problem or something like that - javaspaces would give you an easy access to 'shared process space' between all those computers.
the client server nature is just an aspect of EJB, if you are using a proxy.
The main point is that it would give the gentlemen a clean component model (mbean) and the way invocations are carried is through the invokers
the point of shared data space is what we are doing with the Cache implementation and would in fact achieve the replication of information you are looking for
AFAIK javaspaces give you a more flexible approach to distributed computing than anything available in j2ee or jboss. You do have to do more work yourself in a jini environment than a j2ee environment with managing transactions, security, etc.
For a long time I've thought bringing the models together would be a good idea. I started a javaspaces jca connector (its available as a patch): now that jca 1.5 is more or less available it could be extended to deliver messages via javaspaces "take".
I am not familiar with javaspaces that much but from what I remember we were talking about RMI and distributed access
The advantage of the MBean/AOP replication approach is that we can maintain local copies of the data to work upon and apply various levels of isolation depending on the type of data and usage you do of it