diff options
author | Jan Bartel | 2013-05-16 05:47:22 +0000 |
---|---|---|
committer | Jan Bartel | 2013-05-16 05:47:22 +0000 |
commit | 427c59e2f2515f6a025e5e021f7c34eea5504ffb (patch) | |
tree | 74a3c2c5222d575f0f432766b9cb83ca8e5a0f9c | |
parent | 4a562f8d898d71ecdb60c500d98ca63478278016 (diff) | |
parent | 51c1017b3dc60fa2a2242d73753734b9a0c2cc31 (diff) | |
download | org.eclipse.jetty.project-427c59e2f2515f6a025e5e021f7c34eea5504ffb.tar.gz org.eclipse.jetty.project-427c59e2f2515f6a025e5e021f7c34eea5504ffb.tar.xz org.eclipse.jetty.project-427c59e2f2515f6a025e5e021f7c34eea5504ffb.zip |
Merge remote-tracking branch 'origin/jetty-7' into jetty-8
-rw-r--r-- | jetty-server/src/main/java/org/eclipse/jetty/server/session/HashSessionManager.java | 55 | ||||
-rw-r--r-- | jetty-server/src/main/java/org/eclipse/jetty/server/session/HashedSession.java | 19 |
2 files changed, 41 insertions, 33 deletions
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/HashSessionManager.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/HashSessionManager.java index 638559ba97..937c4f0093 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/HashSessionManager.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/HashSessionManager.java @@ -38,6 +38,7 @@ import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import org.eclipse.jetty.server.handler.ContextHandler; +import org.eclipse.jetty.util.IO; import org.eclipse.jetty.util.log.Logger; @@ -521,8 +522,7 @@ public class HashSessionManager extends AbstractSessionManager } finally { - if (in != null) - try {in.close();} catch (Exception x) {__log.ignore(x);} + if (in != null) IO.close(in); if (error != null) { @@ -569,30 +569,41 @@ public class HashSessionManager extends AbstractSessionManager * defaultReadObject */ DataInputStream in = new DataInputStream(is); - String clusterId = in.readUTF(); - in.readUTF(); // nodeId - long created = in.readLong(); - long accessed = in.readLong(); - int requests = in.readInt(); - - if (session == null) - session = (HashedSession)newSession(created, accessed, clusterId); - session.setRequests(requests); - int size = in.readInt(); - if (size>0) + try { - ClassLoadingObjectInputStream ois = new ClassLoadingObjectInputStream(in); - for (int i=0; i<size;i++) + String clusterId = in.readUTF(); + in.readUTF(); // nodeId + long created = in.readLong(); + long accessed = in.readLong(); + int requests = in.readInt(); + + if (session == null) + session = (HashedSession)newSession(created, accessed, clusterId); + session.setRequests(requests); + int size = in.readInt(); + if (size>0) { - String key = ois.readUTF(); - Object value = ois.readObject(); - session.setAttribute(key,value); + ClassLoadingObjectInputStream ois = new ClassLoadingObjectInputStream(in); + try + { + for (int i=0; i<size;i++) + { + String key = ois.readUTF(); + Object value = ois.readObject(); + session.setAttribute(key,value); + } + } + finally + { + IO.close(ois); + } } - ois.close(); + return session; + } + finally + { + IO.close(in); } - else - in.close(); - return session; } diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/HashedSession.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/HashedSession.java index 173c29617e..3a60680b60 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/HashedSession.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/HashedSession.java @@ -121,6 +121,7 @@ public class HashedSession extends AbstractSession fos = new FileOutputStream(file); willPassivate(); save(fos); + IO.close(fos); if (reactivate) didActivate(); else @@ -129,14 +130,9 @@ public class HashedSession extends AbstractSession catch (Exception e) { saveFailed(); // We won't try again for this session - if (fos != null) - { - // Must not leave the file open if the saving failed - IO.close(fos); - // No point keeping the file if we didn't save the whole session - file.delete(); - throw e; - } + if (fos != null) IO.close(fos); + if (file != null) file.delete(); // No point keeping the file if we didn't save the whole session + throw e; } } } @@ -192,9 +188,10 @@ public class HashedSession extends AbstractSession fis = new FileInputStream(file); _idled = false; _hashSessionManager.restoreSession(fis, this); - - didActivate(); + IO.close(fis); + didActivate(); + // If we are doing period saves, then there is no point deleting at this point if (_hashSessionManager._savePeriodMs == 0) file.delete(); @@ -202,7 +199,7 @@ public class HashedSession extends AbstractSession catch (Exception e) { LOG.warn("Problem de-idling session " + super.getId(), e); - IO.close(fis); + if (fis != null) IO.close(fis);//Must ensure closed before invalidate invalidate(); } } |