Not only that, but doesn't it mean that there is an integrity issue? For example, if two instances of the same entity bean on two different servers are updated after each bean has already called ejbload, then when each call ejbStore, the bean that calls ejbStore first loses all of it's changes. This is because the second bean to call ejbStore overwrites the information stored by the first.
So the order of execution would be something like this:
Server 1, calls ejbLoad for PK=1 on the example bean
Server 2, calls ejbLoad for PK=1...
Server 1, bean PK=1 is updated
Server 2, bean PK=1 is updated with different values from Server 1
Server 1, ejbStore is called
Server 2, ejbStore is called and all updates from Server 1 loses all information.
integrity problem: NO! we use pessimistic locking at the db level (select for update).
no cache: yes, it is a performance issue. It is the way most app server do it though (even Weblogic).
You want a distributed cache? use one. Go on JBoss partner page, you will find two partners offering such a framework for JBoss.