Hello,
here's my scenario: I want to keep some objects in cache, which are calculated basing
on some persistent state (DB lets say). Rarely, the persistent state changes, and the
objects have to be re-calculated (lazily). So, on a change, I want to invalidate all
items. Additionally, this happens in a cluster, so the invalidation must be cluster-wide,
although the change notification is received only in one node. The calculated objects
aren't serializable so each node must calculate them independently.
I was trying to solve this with a cache in the INVALIDATION_SYNC mode and a cache loader.
The cache loader is responsible for calculating the objects (I also get the laziness here)
in each node. When a change happens, I simple call remove(), which invalidates entries in
all nodes (because of the mode). When a get() is later called, the objects are read using
the cache loader.
Now this works fine as along as I don't use transactions. When I start to use
transactions, the get() call after a remove() call (in the same TX) doesn't call the
cache loader, but returns null. This is quite logical and ok in the normal cases, but not
in mine. Do you have any other suggestions on how to achieve the above functionality with
transactions?
Thanks,
Adam
View the original post :
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4256360#...
Reply to the post :
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&a...