There is: use JBossCache in replicated mode with JGroups doing the replication, *and* use a shared or non-shared CacheLoader.
This way you have (in-memory) replication, but you also have persistence.
Ok, this would solve the problem of a restart of a cache, because then it would retrieve the information from the cacheloader. But what happens if we have, let's say, a short network interrupt. To my understanding of the cache loader this would not be noticed and changes which happen during this time will not be replicated. Are those network exceptions somehow propagated to the cache so that they can be handled, especially the reconnect?
I think, that without a durable JMS subscription there will still be situation where we miss cache changes. Or did I miss something