I think you can squirrel the data away in JNDI.
A more interesting question to me is that if you want fast access to per-JVM caches, can you somehow synchronize access to static data without deadlocking the system?
It seems you've got to be able to do that, because 3rd party persistence products will need to use caches such as an Object-Identity cache and there should therefore be a way to use a cache and still work inside J2EE.
Your question is
"I want Stateful behaviour but with Stateless beans".
You are haven't got a prayer.
You can use singletons in your stateless beans
private static final MyCache cache = MyCache.getSingleton();
1) you are still breaking the spec if you hold state based upon the client
2) doesn't work unless like your in example the data can be lost (e.g. a clustered environment)
3) usually causes memory leaks