<listener-class>org.zkoss.performance.monitor.PerformanceMeter</listener-class>\r
</listener>\r
<listener>\r
- <listener-class>user.jobengine.zk.util.LifeCycleListener</listener-class>\r
+ <listener-class>user.jobengine.zk.util.SessionCleanupListener</listener-class>\r
</listener>\r
+ <listener>\r
+ <listener-class>user.jobengine.zk.util.WebAppCleanupListener</listener-class>\r
+ </listener>\r
+ <listener>\r
+ <listener-class>user.jobengine.zk.util.DesktopCleanupListener</listener-class>\r
+ </listener>\r
+<!-- <listener> -->\r
+<!-- <listener-class>user.jobengine.zk.util.LifeCycleListener</listener-class> -->\r
+<!-- </listener> -->\r
+<!-- <listener> -->\r
+<!-- <listener-class>org.zkoss.zk.ui.http.HttpSessionListener</listener-class> -->\r
+<!-- </listener> -->\r
+<!-- <listener> -->\r
+<!-- <listener-class>user.jobengine.zk.util.SessionListener</listener-class> -->\r
+<!-- </listener> -->\r
\r
</zk>
\ No newline at end of file
--- /dev/null
+package user.jobengine.zk.util;\r
+\r
+import org.apache.logging.log4j.LogManager;\r
+import org.apache.logging.log4j.Logger;\r
+import org.zkoss.zk.ui.Desktop;\r
+import org.zkoss.zk.ui.util.DesktopCleanup;\r
+\r
+public class DesktopCleanupListener implements DesktopCleanup {\r
+ private static final Logger logger = LogManager.getLogger();\r
+\r
+ @Override\r
+ public void cleanup(Desktop desktop) throws Exception {\r
+ logger.info("Invoked");\r
+ SessionUtil.cleanup();\r
+ }\r
+\r
+}
\ No newline at end of file
import org.zkoss.zk.ui.Sessions;\r
\r
import user.jobengine.server.IJobChangedListener;\r
+import user.jobengine.server.JobEngine;\r
\r
public class SessionUtil {\r
private static Logger logger = LogManager.getLogger();\r
private static final String LOCAL_JOBSUBMITTERS = "local_jobsubmitters";\r
private static final String USERPRINCIPAL = "userPrincipal";\r
private static final String AUTH_LOCATION = "mediacube.auth.location";\r
- public static final String JOBLISTENERLIST = "joblistenerlist";\r
+ public static final String JOBLISTENERLIST = "joblistenerlist";\r
+\r
+ static public void addJobChangedListener(IJobChangedListener listener) {\r
+ ArrayList<IJobChangedListener> list = (ArrayList<IJobChangedListener>) getAttribute(JOBLISTENERLIST);\r
+ if (list == null) {\r
+ list = new ArrayList<IJobChangedListener>();\r
+ setAttribute(JOBLISTENERLIST, list);\r
+ }\r
+ if (!list.contains(listener)) {\r
+ list.add(listener);\r
+ }\r
+ }\r
\r
public static boolean authenticate(String account, String password) {\r
Properties cfg = getConfiguration();\r
return users.contains(String.format("%s:%s", account, password));\r
}\r
\r
+ static public void cleanup() {\r
+ ArrayList<IJobChangedListener> list = (ArrayList<IJobChangedListener>) getAttribute(SessionUtil.JOBLISTENERLIST);\r
+ if (list != null) {\r
+ for (IJobChangedListener listener : list) {\r
+ JobEngine.getInstance().removeJobChangedEventListener(listener);\r
+ }\r
+ setAttribute(SessionUtil.JOBLISTENERLIST, null);\r
+ }\r
+ }\r
+\r
static public Object getAttribute(String name) {\r
//HttpSession session = (HttpSession) (Executions.getCurrent()).getDesktop().getSession().getNativeSession();\r
Session zkSession = Sessions.getCurrent();\r
session.setAttribute(name, obj);\r
}\r
\r
-\r
- static public void addJobChangedListener(IJobChangedListener listener){\r
- ArrayList<IJobChangedListener> list = (ArrayList<IJobChangedListener>)getAttribute(JOBLISTENERLIST);\r
- if(list == null){\r
- list = new ArrayList<IJobChangedListener>();\r
- setAttribute(JOBLISTENERLIST, list);\r
- }\r
- if(!list.contains(listener)){\r
- list.add(listener);\r
- }\r
- }\r
- \r
- \r
- \r
}
\ No newline at end of file