Also good to know is that @SessionStateObjects (was:
@ApplicationStateObject) are stored in the HTTP session with the key "sso:"
+ MySessionStateObject.class.getName() (Tapestry 5.1)

Olle Hallin
Senior Java Developer and Architect
olle.hal...@crisp.se
www.crisp.se




2009/9/30 cordenier christophe <christophe.corden...@gmail.com>

> If you choose to use a servlet session listener, keep in mind that the
> Tapestry Registry can be obtained from the application context under this
> key "TapestryFilter.REGISTRY_CONTEXT_NAME".
>
> Then you can have access to all Tapestry 5 services including the
> ApplicationStateManager.
>
> 2009/9/30 Gunnar Eketrapp <gunnar.eketr...@gmail.com>
>
> > Hi !
> >
> > I am porting a huge jsp/spring kludge to T5. (And love it ...)
> >
> > I have now come across a UserTracker implementation that tracks currently
> > logged in users.
> >
> > How is this best done in T5 anyone?
> >
> > I could perhaps stick with the old servlet but I am not sure of how T5
> > creaets/destoys sessions and
> > adds/removes attributes.
> >
> > You know now I have a state ASO where the user object is stored within.
> >
> > Thanks in advance,
> > Gunnar Eketrapp,
> > Stockholm, Sweden
> >
> >
> >
> >
> > ========================================================================
> > Current User tracker implementaon using HttpSessionListener +
> > HttpSessionAttributeListener
> > ========================================================================
> >
> > public class UserTracker implements HttpSessionListener,
> > HttpSessionAttributeListener {
> >    private static final Logger logger =
> > Logger.getLogger(UserTracker.class.getName());
> >    private static UserTracker instance;
> >
> >    public static UserTracker getInstance() {
> >        return instance;
> >    }
> >
> >    public UserTracker() {
> >        instance = this;
> >    }
> >
> >    private SortedSet<UserTrackerEntry> current = new
> > TreeSet<UserTrackerEntry>();
> >
> >    public SortedSet<UserTrackerEntry> getCurrent() {
> >        SortedSet<UserTrackerEntry> result = new
> > TreeSet<UserTrackerEntry>();
> >        synchronized (current) {
> >            result.addAll(current);
> >        }
> >        return result;
> >    }
> >
> >    public SortedSet<String> getCurrentUsernames() {
> >        SortedSet<String> result = new TreeSet<String>();
> >        synchronized (current) {
> >            for( UserTrackerEntry en : current ) {
> >                result.add(en.getUsername());
> >            }
> >        }
> >        return result;
> >    }
> >
> >    public void attributeAdded(HttpSessionBindingEvent e) {
> >        if( "user".equals(e.getName()) ) {
> >            User user = (User) e.getValue();
> >            synchronized (current) {
> >                String sessionId = e.getSession().getId();
> >                current.add(new
> > UserTrackerEntry(user.getUsername(),user.getFullName(),sessionId,new
> > Date()));
> >            }
> >        }
> >    }
> >
> >    public void attributeRemoved(HttpSessionBindingEvent e) {
> >        if( "user".equals(e.getName()) ) {
> >            User user = (User) e.getValue();
> >            synchronized (current) {
> >                String sessionId = e.getSession().getId();
> >                current.remove(new
> > UserTrackerEntry(user.getUsername(),user.getFullName(),sessionId,new
> > Date()));
> >            }
> >        }
> >    }
> >
> >    public void attributeReplaced(HttpSessionBindingEvent arg0) {
> >        // ignore
> >    }
> >
> >    public void sessionCreated(HttpSessionEvent e) {
> >        User user = (User) e.getSession().getAttribute("user");
> >        if( user != null ) {
> >            synchronized (current) {
> >                String sessionId = e.getSession().getId();
> >                current.add(new
> > UserTrackerEntry(user.getUsername(),user.getFullName(),sessionId,new
> > Date()));
> >            }
> >        }
> >    }
> >
> >    public void sessionDestroyed(HttpSessionEvent e) {
> >        User user = (User) e.getSession().getAttribute("user");
> >        if( user != null ) {
> >            synchronized (current) {
> >                String sessionId = e.getSession().getId();
> >                current.remove(new
> > UserTrackerEntry(user.getUsername(),user.getFullName(),sessionId,new
> > Date()));
> >            }
> >        }
> >    }
> >
> > }
> >
>

Reply via email to