}\r
\r
public override void RemoveItem (HttpContext context, string id, object lockId, SessionStateStoreData item) {\r
- GetSession (context, false).setAttribute (J2EEConsts.SESSION_STATE, null);\r
+ GetSession (context, false).invalidate ();\r
}\r
\r
public override void ResetItemTimeout (HttpContext context, string id) {\r
}\r
\r
public override bool SetItemExpireCallback (SessionStateItemExpireCallback expireCallback) {\r
- return true;\r
+ return false; //we call session.invalidate so our session listener will call Session_OnEnd\r
}\r
\r
#endregion\r
}
public void sessionDestroyed (HttpSessionEvent se) {
- AppDomain servletDomain = (AppDomain) se.getSession ().getServletContext ().getAttribute (J2EEConsts.APP_DOMAIN);
- vmw.@internal.EnvironmentUtils.setAppDomain (servletDomain);
+ bool setDomain = vmw.@internal.EnvironmentUtils.getAppDomain () == null;
+ if (setDomain) {
+ AppDomain servletDomain = (AppDomain) se.getSession ().getServletContext ().getAttribute (J2EEConsts.APP_DOMAIN);
+ vmw.@internal.EnvironmentUtils.setAppDomain (servletDomain);
+ }
try {
HttpSessionStateContainer container =
ServletSessionStateStoreProvider.CreateContainer (se.getSession ());
}
#endif
finally {
- vmw.@internal.EnvironmentUtils.clearAppDomain ();
+ if (setDomain)
+ vmw.@internal.EnvironmentUtils.clearAppDomain ();
}
}
}