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

Hi Gordon,

yes right #invalidateAll() is the right Method; however, the call of this
method has no effect
I print always the maps out
(aSession.getIdentityMapAccessor().printIdentityMaps())

I have a search site, where it's possible to find some objects. 
If I use 
aSession.getIdentityMapAccessor().invalidateAll();
the maps seem to be empty, however if I return to the search page and fire a
selection. I see the same outputs with the same objects (hashcodes)
Does invalidateAll() flushs the cache immediately? 

I have the same effect with the other invalidate*-Methods (invalidateClass
etc.)

That's the reason, why I use 
aSession.getIdentityMapAccessor().initializeAllIdentityMaps();

To Cache-Coordination:
Yes, that will be the better solution. But I have at the moment not the time
in the projects to switch to this feature.


Thanks
Joe





Gordon Yorke-2 wrote:
> 
> 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
>>>
>>>     
>>
>>   
> 
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
> 
> 

-- 
View this message in context: http://www.nabble.com/How-to-clear-Cache-tp23567622p23638198.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.



Back to the top