Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] How to clear Cache

Initializing the identity maps in a running system can lead to hard to diagnose errors.  IdentityMapAccessor.invalidateAll()  and the other invalidation APIs are the recommended approach.  Have you looked at Cache Coordination ( http://wiki.eclipse.org/Introduction_to_Cache_(ELUG)#Cache_Coordination_2 ) to automatically handle the notification for you.
--Gordon

Joe Mc. wrote:
Alright, my solution is:

- I am using a SessionCustomizer 
- adding a SessionEventAdapter
- override preExecuteQuery
- call Session.getIdentityMapAccessor().initializeAllIdentityMaps()

Codesnippet:

public void customize(Session session) throws Exception {
  
   SessionEventAdapter evtListener = new SessionEventAdapter() {
      
      @Override
      public void preExecuteQuery(SessionEvent event) {
          Session aSession = event.getSession();
          
          // check if cache invalidation is necessary....
          // if yes:
          aSession.getIdentityMapAccessor().initializeAllIdentityMaps();
      }
   }
}



Open Questions:
- is preExecuteQuery the right place?
- Does any better solution exist?


Thanks

Mc.Joe






Joe Mc. wrote:
  
Hi everybody,

I trying to provide a functionality to delete the whole cache, to support
the possibility to refresh the objects in the cache.
How is the best practice to flush the whole cache?

I have the following use case:
- 2 separate Applications on different servers
- Both use JPA Eclipselink
- Application A reads the objects, I am using SoftWeak
- Application B modifies sometimes the data

desired is, that Application B gives Application A a signal (details are
here irrelevant), if he modified the data
Application A will flush his cache, if he gets this event.

Now the question is: Does any API exists to flush the (whole) cache?

Thanks in advance

Mc.Joe

    
  

Back to the top