Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #14458

Re: Caching with timed expiry

From Arved Sandstrom <asandstrom3minus1@eastlink.ca>
Newsgroups comp.lang.java.programmer
Subject Re: Caching with timed expiry
References <joc4c0$2hm$1@news.albasani.net> <ydn3979kvz7.fsf@shell.xmission.com> <4fab77d3$0$6875$e4fe514c@news2.news.xs4all.nl>
Message-ID <viMqr.3102$TC4.1725@newsfe14.iad> (permalink)
Organization Public Usenet Newsgroup Access
Date 2012-05-10 06:57 -0300

Show all headers | View raw


On 12-05-10 05:09 AM, Silvio Bierman wrote:
> On 05/09/2012 09:14 PM, Jim Janney wrote:
>> Sebastian<sebastian@undisclosed.invalid>  writes:
>>
>>> Hello there,
>>>
>>> does anyone of a cache / map implementation in which entries
>>> expire after a fixed time? By which I mean that after a cnfigurable
>>> delay after an enzry has been caches,it is automatically removed
>>> from the cache and some clean-up action (perhaps event-triggred)
>>> can be taken.
>>>
>>> My scenario is this: A GUI client searches an LDAP server using
>>> the virtual list view control. The server requires all requests
>>> to be made over the same connection. So my middleware component
>>> will need to check out that connection from a pool and cache it,
>>> using the ASN1 cookie sent by the client as a key.
>>>
>>> Trouble is, if the client never signals that it won't request
>>> another page (e. g. because it crashes), I need to auto-release
>>> the LDAP server connection to the connection pool to prevent leakage.
>>> I thought that a ready-made cache with timed expiry would come in handy.
>>> If there is no such beast, any ideas for possible approaches?
>>>
>>> -- Sebastian
>>
>> Look at subclassing java.util.LinkedHashMap and overriding the
>> removeEldestEntry method to check an expiration time.  The removal time
>> will not be precise (since it's triggered when something else is looked
>> up) but it may be good enough.
>>
> 
> Actually this is not going to work since removeEldestEntry is only
> called when calling put on the map and even then it is only called once
> for each put, disallowing dropping multiple expired entries at once.
> I kicked LinkedHashMap around a couple of times to try and get this
> working properly but gave up on it.
> 
> The simplest self-built solution is wrapping key/element pairs in
> wrapper objects that also implements a doubly-linked list to represent
> the queue and coupling that with a plain HashMap that maps key values to
> the corresponding wrapper.
> I have done this to create caches that makes elements expire if they
> have been in the cache for too long or have not been retrieved for too
> long. Naturally this can be done either implicitly at lookup time or
> explicitly with some purgeExpiredEntries method that could be called
> periodically even when not querying the cache.

> There probably also are existing cache libraries that will do this for
> you if you don't mind the dependency.

Google Guava with its CacheBuilder, or ehcache, for example.

> Silvio

AHS

-- 
Never interrupt your enemy when he is making a mistake.
--Napoleon

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Caching with timed expiry Sebastian <sebastian@undisclosed.invalid> - 2012-05-08 23:48 +0200
  Re: Caching with timed expiry Jim Janney <jjanney@shell.xmission.com> - 2012-05-09 13:14 -0600
    Re: Caching with timed expiry Silvio Bierman <silvio@moc.com> - 2012-05-10 10:09 +0200
      Re: Caching with timed expiry Jim Janney <jjanney@shell.xmission.com> - 2012-05-10 03:48 -0600
        Re: Caching with timed expiry Silvio Bierman <silvio@moc.com> - 2012-05-10 12:56 +0200
      Re: Caching with timed expiry Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2012-05-10 06:57 -0300
        Re: Caching with timed expiry Sebastian <sebastian@undisclosed.invalid> - 2012-05-13 23:05 +0200
  Re: Caching with timed expiry Roedy Green <see_website@mindprod.com.invalid> - 2012-05-09 14:43 -0700
    Re: Caching with timed expiry Robert Klemme <shortcutter@googlemail.com> - 2012-05-14 23:47 +0200
    Re: Caching with timed expiry Arne Vajhøj <arne@vajhoej.dk> - 2012-05-20 22:18 -0400
  Re: Caching with timed expiry Paul Cager <paul.cager@googlemail.com> - 2012-05-09 13:09 -0700

csiph-web