01: package com.lutris.appserver.server.session;
02:
03: import java.util.Hashtable;
04:
05: /**
06: * <p>Title: </p>
07: * <p>Description: Save in memory active and passive sessions during restart Enhydra applications </p>
08: * <p>Copyright: Copyright (c) 2002</p>
09: * <p>Company: </p>
10: * @author Dacha (damir@uns.ns.ac.yu) & Tufa (tufex@uns.ns.ac.yu)
11: * @version 1.1
12: */
13:
14: public class MemoryPersistence {
15:
16: private static Hashtable managers = new Hashtable();
17: private static Hashtable classLoaders = new Hashtable();
18:
19: private MemoryPersistence() {
20: }
21:
22: /**
23: * Called when application restart.
24: *
25: * @param appName
26: * application name.
27: * @see #putSessionManager
28: */
29: static public SessionManager getSessionManager(String appName) {
30: if (managers.containsKey(appName))
31: return (SessionManager) managers.remove(appName);
32: else
33: return null;
34: }
35:
36: /**
37: * Called when application shutdown.
38: *
39: * @param appName
40: * application name
41: * @param sessMgr
42: * application's SessionManager
43: * @see #getSessionManager
44: */
45: static public void putSessionManager(String appName,
46: SessionManager sessMgr) {
47: managers.put(appName, sessMgr);
48: }
49:
50: /**
51: * Get ClassLoader (MultiClassLoader) for Enhydra Application.
52: * This ClassLoader was set when application started first time.
53: * ClassLoader is saved, because we need it to support MemoryPersistence.
54: * @param appName application name
55: * @return ClassLoader for given application name
56: */
57: static public ClassLoader getClassLoader(String appName) {
58: if (classLoaders.containsKey(appName))
59: return ((ClassLoader) classLoaders.get(appName));
60: else
61: return null;
62: }
63:
64: /**
65: * When application first time startup, it sets ClassLoader and use them
66: * next time is restarting.
67: * @param appName application name
68: * @param cl ClassLoader or NULL
69: */
70: static public void setClassLoader(String appName, ClassLoader cl) {
71: classLoaders.put(appName, cl);
72: }
73:
74: /**
75: * If SessionManager.MemoryPersistence = false in conf file, don't need to save
76: * MultiClassLoader. This method is called when application shutdown.
77: * @param appName application name.
78: */
79: static public void removeClassLoader(String appName) {
80: classLoaders.remove(appName);
81: }
82:
83: /**
84: * When EnhydraServer stoped clean all.
85: */
86: static public void shutdown() {
87: managers = new Hashtable();
88: classLoaders = new Hashtable();
89: }
90: }
|