Thanks for your reply.
It seems that the problem exists in how to call updateAccess method. The method updateAccess is called when there is no object in cache but it is not called when cache is hit. Therefore, it acts as FIFO.
Cache is confirmed against SoftWeak. What I point is the session cache managed by ServerSession, not identitymap that is an object managed by RepeatableWriteUnitOfWork class.
[Message sent by forum member 'xj' (xj)]
http://forums.java.net/jive/thread.jspa?messageID=293479