Hey Oleg,

I'm here if you have questions.

Regards

Simon

> -----Original Message-----
> From: Oleg Nitz [mailto:[EMAIL PROTECTED]]
> Sent: giovedi 14 dicembre 2000 10:36
> To: jBoss Developer
> Subject: Re: [jBoss-Dev] Security time-limited cache
> 
> 
> Hi Simone,
> 
> Thank you very much, I'll dig into this today later.
> 
> Regards,
>  Oleg
> 
> On Tuesday 12 December 2000 18:09, Bordet, Simone wrote:
> > Hi Oleg,
> >
> > > Hi Simone,
> > >
> > > On Tuesday 12 December 2000 15:52, Bordet, Simone wrote:
> > > > The bean cache is a time-limited cache: too old bean are
> > >
> > > passivated out of
> > >
> > > > the cache when their lifetime expires.
> > > > All classes are already implemented, you only need to use
> > >
> > > them; maybe some
> > >
> > > > refactoring is worth, but the main structure is there.
> > >
> > > Okay, I'll take a look. Where do I start from?
> >
> > The bean cache main implementation is 
> org.jboss.util.LRUCachePolicy. This
> > cache does not have time limits however, it only manages a 
> LRU algorithm
> > with a working set variant (ie newer beans are always in 
> the top positions
> > of the cache).
> > Then, in interface 
> org.jboss.ejb.plugins.EnterpriseContextCachePolicy I
> > start a TimerQueue that accepts TimerTask jobs to be 
> executed one-shot or
> > periodically. This couple of classes (TimerQueue and 
> TimerTask) are already
> > present in JDK 1.3, but for compatibility with JDK 1.2.2 I 
> had to rewrite
> > them.
> >
> > Then in 
> org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy I create 2
> > TimerTasks; the one that interests us is an inner class called
> > OveragerTask; in the execute() method it scans the cache 
> from the tail
> > where older beans are and passivate them.
> >
> > This implementation result in a single thread that executes 
> all TimerTasks
> > scheduled by all beans (in contrast to the passivation 
> thread, of which
> > there is one for each bean), and this is maybe refactoring 
> worth: having
> > this TimerQueue execute not only bean cache TimerTasks, but 
> also other
> > TimerTasks (like a security one), see below.
> >
> > I don't know internals of security but in principle you can:
> > 1) extend org.jboss.util.CachePolicy very like
> > org.jboss.ejb.plugins.EnterpriseContextCachePolicy does, 
> and create a
> > SecurityCachePolicy with a static inner class that holds a 
> TimerQueue.
> > 2) extend org.jboss.util.LRUCachePolicy into a 
> LRUSecurityCachePolicy that
> > also implements SecurityCachePolicy; LRUSecurityCachePolicy 
> will have a
> > inner class that works very like
> > 
> org.jboss.ejb.plugins.LRUEnterpriseContextCachePolicy.Overager
> Task to give
> > time-limit capabilities to the cache.
> >
> > For refactoring, we may create a TimerCachePolicy base 
> interface from where
> > both LRUSecurityCachePolicy and 
> LRUEnterpriseContextCachePolicy can inherit
> > so that we share the TimerQueue (the solution I outlined 
> above will have 2
> > TimerQueues, one for the beans and one for the security), 
> but this can be
> > done later, though is very simple.
> >
> > Beware that LRUCachePolicy is not thread safe, so if you use it in
> > multithread environment, another class must handle access 
> synchronization
> > to it (in the bean cache case this is done by
> > org.jboss.ejb.plugins.AbstractInstanceCache)
> >
> > HTH,
> >
> > Simon
> 

Reply via email to