What do you mean in your comment by " batching is enabled" ? Is this something that the exception indicated? Or something you added yourself?
In general, doing reentrant calls from the cache loader to the cache is not a good idea, particularly using cache.get() methods since these go via the interceptor chain and can create deadlocks.
Instead, what we have done in the past to access data from the cache, we have used CacheSPI.peek() calls which basically returns returns a node without accessing the interceptor chain. You can find an example in http://anonsvn.jboss.org/repos/jbosscache/core/trunk/src/main/java/org/jboss/cache/loader/ClusteredCacheLoader.java
If you're implementing a cache loader, have a look around to what is being done for other cache loaders in the JBoss Cache source code and you'll find answers to a lot of questions such as this one.