I am extending HttpSessionStore and keeping track of my sessions there. I am
able to get a hold of members of my Session while it is being invalidated. I
am not quite sure what you mean by " on the unBind() / onDestroy the actual
session object does not exist anymore", the session seems to be available
and I am able to access members of it as long as I store the Session in
onBind(...). This is what I am doing:
public class ScanManSessionStore extends HttpSessionStore
{
...
private Map<String, Session> sessions = new ConcurrentHashMap();
private Map<String, Device> devices = new ConcurrentHashMap();
protected void onBind(Request request, Session newSession)
{
sessions.put(newSession.getId(), newSession);
}
protected void onUnbind(String sessionId)
{
if(sessions.containsKey(sessionId))
{
Device device =
((ScanManSession)sessions.get(sessionId)).getDevice();
if(device != null)
{
devices.remove(device.getDeviceId());
}
sessions.remove(sessionId);
}
}
...
}
Please let me know if there is a problem doing it this way.
Warren
> -----Original Message-----
> From: Robert Novotny [mailto:[EMAIL PROTECTED]
> Sent: Thursday, April 03, 2008 3:37 AM
> To: [email protected]
> Subject: RE: Get informed about invalidation of a session
>
>
>
> This has been discussed multiple times and the only reasonable
> solution that
> I found (and just implemented) is to have a concurrent hashmap of session
> ids into session objects in the custom Application class. The
> reason is that
> on the unBind() / onDestroy the actual session object does not
> exist anymore
> - the only thing you have is the destroyed session ID.
>
> I needed to persist some user info on the logout.
>
> My solution goes like this:
> public class DavanoApplication extends
> org.apache.wicket.protocol.http.WebApplication {
> private Map<String, User> activeUsersMap = new ConcurrentHashMap<String,
> User>();
> ...
> @Override
> public void sessionDestroyed(String sessionId) {
> User user = activeUsersMap.get(sessionId);
> if(user != null) {
> userDao.saveOrUpdate(user);
> userDao.updateLastLogin(user);
> activeUsersMap.remove(sessionId);
> }
>
>
> super.sessionDestroyed(sessionId);
> }
> }
> I am not sure whether this is correct solution, but it did help me.
>
> Robert
>
> BatiB80 wrote:
> >
> > Hi Warren,
> >
> > thanks for your answer. But I'm not sure how I could use this. The
> > information that I need to access are stored in the session. How can I
> > access a single instance of this session from the session store?
> >
> > Thanks,
> > Sebastian
> >
>
> --
> View this message in context:
> http://www.nabble.com/Get-informed-about-invalidation-of-a-session
> -tp16447452p16467385.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> 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]