Since you are very concerned about performance I would recommend taking a look at Tangosol's Coherence clustered cache/objectstore product. It is _very_ easy to use since the cache is accessed through the java.util.Map interface.
Another reason that I would reccommend it to you is that there is a Transactional Cache that is currently in pilot. This Transactional Cache allows for the underlying cache to be manipulated within the EJB transactional context and modification to the cache are either rolled-back or committed depending on the behavior of the EJB transaction.
Coherence also has replicated and distributed cache features along with cluster-wide locking, event notification, fail-over and transparent restarts.