Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Bartel2015-12-11 00:42:29 +0000
committerJan Bartel2015-12-11 00:42:29 +0000
commit31ea1704a1fdaef6f7d862dfacb905c5ac4728a3 (patch)
treec44fc7cac5efe7628c95942115d7d42ddb61014e /jetty-server/src/main/java/org/eclipse/jetty
parent4793be634ff4a17fe5e7c3c6f34725fe11dec06f (diff)
downloadorg.eclipse.jetty.project-31ea1704a1fdaef6f7d862dfacb905c5ac4728a3.tar.gz
org.eclipse.jetty.project-31ea1704a1fdaef6f7d862dfacb905c5ac4728a3.tar.xz
org.eclipse.jetty.project-31ea1704a1fdaef6f7d862dfacb905c5ac4728a3.zip
Make calling passivate/active depend on type of session data store; fix tests
Diffstat (limited to 'jetty-server/src/main/java/org/eclipse/jetty')
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionIdManager.java6
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionStore.java8
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/CachingSessionDataStore.java9
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/ContextId.java2
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/FileSessionDataStore.java11
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/HashSessionIdManager.java9
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionDataStore.java13
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionIdManager.java6
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/NullSessionDataStore.java10
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionDataStore.java7
-rw-r--r--jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionManager.java9
11 files changed, 73 insertions, 17 deletions
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionIdManager.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionIdManager.java
index 9c39970352..0a0f9e921e 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionIdManager.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionIdManager.java
@@ -46,13 +46,15 @@ public abstract class AbstractSessionIdManager extends AbstractLifeCycle impleme
protected SessionScavenger _scavenger;
/* ------------------------------------------------------------ */
- public AbstractSessionIdManager()
+ public AbstractSessionIdManager(Server server)
{
+ _server = server;
}
/* ------------------------------------------------------------ */
- public AbstractSessionIdManager(Random random)
+ public AbstractSessionIdManager(Server server, Random random)
{
+ this(server);
_random=random;
}
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionStore.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionStore.java
index a489940d8d..39b580e32e 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionStore.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/AbstractSessionStore.java
@@ -232,13 +232,15 @@ public abstract class AbstractSessionStore extends AbstractLifeCycle implements
throw new IllegalArgumentException ("Put key="+id+" session="+(session==null?"null":session.getId()));
session.setSessionManager(_manager);
-
+
//if the session is new, the data has changed, or the cache is considered stale, write it to any backing store
if ((session.isNew() || session.getSessionData().isDirty() || isStale(session)) && _sessionDataStore != null)
{
- session.willPassivate();
+ if (_sessionDataStore.isPassivating())
+ session.willPassivate();
_sessionDataStore.store(id, session.getSessionData());
- session.didActivate();
+ if (_sessionDataStore.isPassivating())
+ session.didActivate();
}
doPutIfAbsent(id,session);
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/CachingSessionDataStore.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/CachingSessionDataStore.java
index bc17018146..f68d81252b 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/CachingSessionDataStore.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/CachingSessionDataStore.java
@@ -156,6 +156,15 @@ public class CachingSessionDataStore extends AbstractSessionDataStore
super.doStop();
}
+ /**
+ * @see org.eclipse.jetty.server.session.SessionDataStore#isPassivating()
+ */
+ @Override
+ public boolean isPassivating()
+ {
+ return true;
+ }
+
}
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/ContextId.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/ContextId.java
index ae95dce815..6824ebc2e7 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/ContextId.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/ContextId.java
@@ -37,7 +37,7 @@ public class ContextId
public static ContextId getContextId (String node, Context context)
{
- return new ContextId(node, getContextPath(context), getVirtualHost(context));
+ return new ContextId((node==null?"":node), getContextPath(context), getVirtualHost(context));
}
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/FileSessionDataStore.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/FileSessionDataStore.java
index 4e49f6b782..bbef34e356 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/FileSessionDataStore.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/FileSessionDataStore.java
@@ -221,7 +221,7 @@ public class FileSessionDataStore extends AbstractSessionDataStore
File file = null;
if (_storeDir != null)
{
- file = new File(_storeDir, id);
+ file = new File(_storeDir, _contextId.toString()+"_"+id);
if (file.exists())
file.delete();
@@ -274,6 +274,15 @@ public class FileSessionDataStore extends AbstractSessionDataStore
if (!_storeDir.exists())
_storeDir.mkdirs();
}
+
+ /**
+ * @see org.eclipse.jetty.server.session.SessionDataStore#isPassivating()
+ */
+ @Override
+ public boolean isPassivating()
+ {
+ return true;
+ }
}
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/HashSessionIdManager.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/HashSessionIdManager.java
index cddcb5924d..70d94259e4 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/HashSessionIdManager.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/HashSessionIdManager.java
@@ -21,6 +21,7 @@ package org.eclipse.jetty.server.session;
import java.util.Set;
+import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.util.ConcurrentHashSet;
/**
@@ -30,6 +31,14 @@ import org.eclipse.jetty.util.ConcurrentHashSet;
*/
public class HashSessionIdManager extends AbstractSessionIdManager
{
+ /**
+ * @param server
+ */
+ public HashSessionIdManager(Server server)
+ {
+ super(server);
+ }
+
private final Set<String> _ids = new ConcurrentHashSet<String>();
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionDataStore.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionDataStore.java
index e8be2b19c3..e73e7bba2f 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionDataStore.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionDataStore.java
@@ -1020,6 +1020,19 @@ public class JDBCSessionDataStore extends AbstractSessionDataStore
{
_unloadables.clear();
}
+
+
+
+
+
+ /**
+ * @see org.eclipse.jetty.server.session.SessionDataStore#isPassivating()
+ */
+ @Override
+ public boolean isPassivating()
+ {
+ return true;
+ }
}
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionIdManager.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionIdManager.java
index 8c7bf55365..55d2a3df9d 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionIdManager.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/JDBCSessionIdManager.java
@@ -144,14 +144,12 @@ public class JDBCSessionIdManager extends org.eclipse.jetty.server.session.Abstr
public JDBCSessionIdManager(Server server)
{
- super();
- _server=server;
+ super(server);
}
public JDBCSessionIdManager(Server server, Random random)
{
- super(random);
- _server=server;
+ super(server,random);
}
public SessionIdTableSchema getSessionIdTableSchema()
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/NullSessionDataStore.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/NullSessionDataStore.java
index c7d9897d52..35de7f0f6c 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/NullSessionDataStore.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/NullSessionDataStore.java
@@ -75,4 +75,14 @@ public class NullSessionDataStore extends AbstractSessionDataStore
return candidates; //whatever is suggested we accept
}
+
+ /**
+ * @see org.eclipse.jetty.server.session.SessionDataStore#isPassivating()
+ */
+ @Override
+ public boolean isPassivating()
+ {
+ return false;
+ }
+
}
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionDataStore.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionDataStore.java
index 7130060dbb..78c014c356 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionDataStore.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionDataStore.java
@@ -93,4 +93,11 @@ public interface SessionDataStore extends LifeCycle
public Set<String> getExpired (Set<String> candidates);
+
+ /**
+ * True if this type of datastore will passivate session objects
+ * @return
+ */
+ public boolean isPassivating ();
+
}
diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionManager.java b/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionManager.java
index eb50d4eee5..2314456a15 100644
--- a/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionManager.java
+++ b/jetty-server/src/main/java/org/eclipse/jetty/server/session/SessionManager.java
@@ -233,8 +233,6 @@ public class SessionManager extends ContainerLifeCycle implements org.eclipse.je
if (_sessionStore == null)
throw new IllegalStateException("No session store configured");
- if (_sessionIdManager == null)
- throw new IllegalStateException("No session id manager");
_context=ContextHandler.getCurrentContext();
_loader=Thread.currentThread().getContextClassLoader();
@@ -255,7 +253,7 @@ public class SessionManager extends ContainerLifeCycle implements org.eclipse.je
try
{
Thread.currentThread().setContextClassLoader(serverLoader);
- _sessionIdManager=new HashSessionIdManager();
+ _sessionIdManager=new HashSessionIdManager(server);
server.setSessionIdManager(_sessionIdManager);
server.manage(_sessionIdManager);
_sessionIdManager.start();
@@ -302,10 +300,9 @@ public class SessionManager extends ContainerLifeCycle implements org.eclipse.je
tmp=_context.getInitParameter(org.eclipse.jetty.server.SessionManager.__CheckRemoteSessionEncoding);
if (tmp!=null)
_checkingRemoteSessionIdEncoding=Boolean.parseBoolean(tmp);
-
- _contextId = ContextId.getContextId(_sessionIdManager.getWorkerName(), _context);
}
+ _contextId = ContextId.getContextId(_sessionIdManager.getWorkerName(), _context);
if (_sessionStore instanceof AbstractSessionStore)
((AbstractSessionStore)_sessionStore).setSessionManager(this);
@@ -985,7 +982,7 @@ public class SessionManager extends ContainerLifeCycle implements org.eclipse.je
return; // couldn't get/load a session for this context with that id
}
- _sessionTimeStats.set(round((System.currentTimeMillis() - session.getCreationTime())/1000.0));
+ _sessionTimeStats.set(round((System.currentTimeMillis() - session.getSessionData().getCreated())/1000.0));
session.invalidateAndRemove();
}
catch (Exception e)

Back to the top