The sessionWillActivate() method is called every time a session activates.
If your sessions are persistent, then each one will be re-activated when the
server restarts, so this method is called once for each session that was
passivated.

One further point I forgot to mention - your SessionActivationListener must
be bound to every session, otherwise the sessionWillActivate() and
sessionDidPassivate() methods will not be called. You can bind the listener
inside the sessionCreated() method.

Sorry for the delay, I've just found this email in my 'Drafts' folder.

Regards,
        Andy

-----Original Message-----
From: Christian Hauser [mailto:[EMAIL PROTECTED] 
Sent: 04 September 2003 10:51
To: Tomcat Users List
Subject: Re: Counting active sessions if server restarts very often


Thank you, Andrew, for your fast reply.

I hope this works, but I still don't undestand what happens when the 
server is restarted when the sessionCount (current active sessions) is 10.

Will sessionWillPassivate() and sessionDidActivate() be called 10 times? 
Why not once? But if they were called once, my count variable would be 1 
instead of 10 after a restart.

Could someone explain me in a few words what happens when the server is 
restarted?

Thanx,
   Christian


Bodycombe, Andrew wrote:

> The easiest way is probably to have a single listener that implements both
> the HttpSessionListener and HttpSessionActivationListener interfaces. This
> has a single count of active sessions.
> 
> In the sessionCreated() method, increment the count
> In the sessionDestroyed() method, decrement the count
> In the sessionDidActivate() method, increment the count
> In the sessionWillPassivate() method, decrement the count.
> 
> This should eliminate the need to store anything in the session.
> 
> Hope this helps
>       Andy
> 
> -----Original Message-----
> From: Christian Hauser [mailto:[EMAIL PROTECTED] 
> Sent: 04 September 2003 10:01
> To: Tomcat Users List
> Subject: Re: Counting active sessions if server restarts very often
> 
> 
> Shapira, Yoav wrote:
> 
> 
>>Howdy,
>>
>>
>>
>>>Is there an other way to implement this? Maybe by saving the variable
>>>activeSessions to a session (which is restored when the server has
>>>restarted)?
>>
>>
>>This is not a bad idea, and might be the easiest way.  A DB write on
>>shutdown/read on startup is also an option.
> 
> 
> To recapitulate: I want to display all active sessions (~ active users). 
> I use HttpSessionListener and increment a static int field every time 
> sessionCreated is called. Unfortunately the server is restarted very 
> often so I'd like to remember the active sessions by putting them into 
> the session.
> 
> But how? Like this?
> 
> public class SessionCounter implements HttpSessionListener {
> 
>    public synchronized void sessionCreated(HttpSessionEvent event) {
>      Integer i = 
> (Integer)event.getSession().getAttribute("session.counter");
>      if (i == null) {
>        i = new Integer(0);
>      }
>      int activeSessions = i.intValue() + 1;
>      event.getSession().setAttribute("session.counter", activeSessions);
>    }
> 
>    public synchronized void sessionDestroyed(HttpSessionEvent event) {
>      Integer i = 
> (Integer)event.getSession().getAttribute("session.counter");
>      if (i == null) {
>        i = new Integer(0);
>      }
>      int activeSessions = i.intValue();
>      if (activeSessions > 0) {
>        activeSessions--;
>      }
>      event.getSession().setAttribute("session.counter", activeSessions);
>    }
> 
>    public static int getActiveSessions() {
>      return activeSessions;
>    }
> }
> 
> 
> Jon Wingfield gave me the hint to put an object that implements 
> HttpSessionActivationListener as an attribute to the session.
> But if I do that in the SessionListener#sessionCreated method I have 100 
> of those objects around when 100 concurrent users are using my web 
> application. Does that make any sense?
> And what should I do when the object implementing 
> HttpSessionActivationListener enters sessionWillPassivate? How do I save 
> the count of active sessions?
> 
> Sorry for all those questions, but I'd like to count the sessions even 
> when the server restarts very often.
> 
> Thank you for your help,
>    Christian
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to