1,10 → 1,12 |
package ak.hostadmiral.core.action; |
|
import java.util.Map; |
import java.util.Set; |
import java.util.HashSet; |
import java.util.Iterator; |
|
import javax.servlet.http.HttpSessionListener; |
import javax.servlet.http.HttpSessionActivationListener; |
import javax.servlet.http.HttpSessionEvent; |
import javax.servlet.http.HttpSession; |
|
13,6 → 15,7 |
import org.apache.struts.Globals; |
|
import ak.hostadmiral.util.ModelException; |
import ak.hostadmiral.util.ConfigInit; |
import ak.hostadmiral.core.model.User; |
import ak.hostadmiral.core.model.UserManager; |
import ak.hostadmiral.core.model.UserModifiedListener; |
19,7 → 22,11 |
import ak.hostadmiral.core.servlet.SessionKeys; |
|
public final class UserUpdater |
implements UserModifiedListener, HttpSessionListener |
implements |
ConfigInit, |
UserModifiedListener, |
HttpSessionListener, |
HttpSessionActivationListener |
{ |
private static final Logger logger = Logger.getLogger(UserUpdater.class); |
|
28,9 → 35,13 |
|
public UserUpdater() |
{ |
logger.info("registered for session events"); |
} |
|
public void init(Map params) |
{ |
register(); |
} |
|
protected void register() |
{ |
UserManager.getInstance().addModifiedListener(this); |
41,21 → 52,34 |
|
public void sessionCreated(HttpSessionEvent se) |
{ |
if(!registered) register(); // FIXME is application always initialized |
// before create a session? |
|
logger.info("add session"); |
logger.info("session created"); |
sessions.add(se.getSession()); |
} |
|
public void sessionDestroyed(HttpSessionEvent se) |
{ |
if(!registered) register(); |
if(logger.isInfoEnabled()) { |
logger.info("session destroyed for " + se.getSession().getAttribute(SessionKeys.USER)); |
} |
|
sessions.remove(se.getSession()); |
} |
|
public void sessionDidActivate(HttpSessionEvent se) |
{ |
if(logger.isInfoEnabled()) { |
logger.info("remove session for " + se.getSession().getAttribute(SessionKeys.USER)); |
logger.info("session activated for " + se.getSession().getAttribute(SessionKeys.USER)); |
} |
|
sessions.add(se.getSession()); |
} |
|
public void sessionWillPassivate(HttpSessionEvent se) |
{ |
if(logger.isInfoEnabled()) { |
logger.info("session passivated for " + se.getSession().getAttribute(SessionKeys.USER)); |
} |
|
sessions.remove(se.getSession()); |
} |
|