private bool _isReadonly;
internal bool _abandoned;
- private object _app;
- private bool _readFirstTime = true;
private bool _needSessionPersistence = false;
internal HttpSessionState (string id,
_mode = mode;
_isReadonly = isReadonly;
- _app = HttpContext.Current.ApplicationInstance;
_needSessionPersistence = false;
javax.servlet.ServletConfig config = (javax.servlet.ServletConfig)AppDomain.CurrentDomain.GetData(J2EEConsts.SERVLET_CONFIG);
string sessionPersistance = config.getInitParameter(J2EEConsts.Enable_Session_Persistency);
{
output.writeBoolean(_needSessionPersistence);
if (!_needSessionPersistence)
- {
+ //indicates that there is nothing to serialize for this object
return;
- }
- System.IO.MemoryStream ms = new System.IO.MemoryStream();
+
+ System.Web.J2EE.ObjectOutputStream ms = new System.Web.J2EE.ObjectOutputStream(output);
System.IO.BinaryWriter bw = new System.IO.BinaryWriter(ms);
bw.Write(_id);
_dict.Serialize(bw);
else
bw.Write(3);
bw.Write(_isReadonly);
- output.writeObject(vmw.common.TypeUtils.ToSByteArray(ms.GetBuffer()));
}
}
lock(this)
{
_needSessionPersistence = input.readBoolean();
- if (!_needSessionPersistence)
- {
- return;
- }
- sbyte[] array = (sbyte[])input.readObject();
- if (!_readFirstTime || array == null || array.Length == 0)
- {
+ if(!_needSessionPersistence) //noting has been written
return;
- }
- _readFirstTime = false;
- System.IO.MemoryStream ms = new System.IO.MemoryStream((byte[])vmw.common.TypeUtils.ToByteArray(array));
+
+ System.Web.J2EE.ObjectInputStream ms = new System.Web.J2EE.ObjectInputStream( input );
System.IO.BinaryReader br = new System.IO.BinaryReader(ms);
_id = br.ReadString();
_dict = SessionDictionary.Deserialize(br);
else
_mode = SessionStateMode.SQLServer;
_isReadonly = br.ReadBoolean();
- // _app = HttpContext.Current.ApplicationInstance;
- }
- }
-
- internal object App
- {
- get
- {
- return _app;
}
}
ServletWorkerRequest worker = (ServletWorkerRequest)HttpContext.Current.Request.WorkerRequest;
// worker.Servlet.getServletContext().removeAttribute("GH_SESSION_STATE");
javax.servlet.http.HttpSession javaSession = worker.ServletRequest.getSession(false);
- if (_app == null)
- _app = HttpContext.Current.ApplicationInstance;
+
if (javaSession != null)
{
javaSession.setAttribute("GH_SESSION_STATE",this);