State is normally held in memory or on disk on a single computer. Although some architectures can share these resources, in multiprocessor or configurations etc. EntityBeansAreEvil only because state cannot easily be shared amongst multiple servers, say on a WebFarm. Maintaining TransactionalIntegrity becomes a very tough problem given this, and scalability is poor. It would not be a problem if state could be shared amongst multiple machines in some clever manner. Is this really a software problem? Or should it be a hardware problem? ---- I presume by "shared state" you mean state in individual servers where you can assume state consistency -- that is, when state changes in one server then the other servers are somehow updated to the new state. The typical solution is to use a single database and pull data from that, but there are clever solutions which can keep objects in memory synchronized. Usually these fall under the PublishAndSubscribe model. You might want to look at AtgDynamo for a solution. GemStone has been doing this since the mid-1980s. ---- This is what distributed algorithms are all about! A tough problem, especially if you want to be robust in the case of a network failure. What algorithm does GemStone use?