X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=server%2Fcompbio%2Flisteners%2FContextListener.java;h=f673e307819d09846c7c1746a160bdd97929f405;hb=7de49cca0d2c7525f698001533e0b48193715413;hp=c3109a7234356684882e1db8a000a0341772a5fd;hpb=6b59d49dbcca1616d74c2814d87faf47e3aa7cf2;p=proteocache.git diff --git a/server/compbio/listeners/ContextListener.java b/server/compbio/listeners/ContextListener.java index c3109a7..f673e30 100644 --- a/server/compbio/listeners/ContextListener.java +++ b/server/compbio/listeners/ContextListener.java @@ -3,6 +3,7 @@ package compbio.listeners; import java.io.IOException; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import javax.servlet.ServletContextEvent; @@ -25,15 +26,20 @@ import compbio.util.Util; */ @WebListener public class ContextListener implements ServletContextListener { - private ScheduledExecutorService webjob_scheduler; - private ScheduledExecutorService localjob_scheduler; - private ScheduledExecutorService update_scheduler; + //private ScheduledExecutorService webjob_scheduler; + //private ScheduledExecutorService localjob_scheduler; + //private ScheduledExecutorService update_scheduler; + private ScheduledExecutorService executor; + private ScheduledFuture webjobs; + private ScheduledFuture localjobs; + private ScheduledFuture updates; CassandraNativeConnector db = new CassandraNativeConnector(); private static PropertyHelper ph = ProteoCachePropertyHelperManager.getPropertyHelper(); private static Logger log = Logger.getLogger(ContextListener.class); public static boolean READ_WEB_JPRED = false; public static boolean READ_LOCALFILE_JPRED = false; public static boolean FILL_NEWTABLE = false; + public static boolean UPDATE_TABLE = false; private static boolean initBooleanValue(String key) { assert key != null; @@ -57,11 +63,25 @@ public class ContextListener implements ServletContextListener { READ_WEB_JPRED = initBooleanValue("cassandra.jpred.web.update"); READ_LOCALFILE_JPRED = initBooleanValue("cassandra.jpred.local.update"); FILL_NEWTABLE = initBooleanValue("cassandra.newtables.update"); - + UPDATE_TABLE = initBooleanValue("cassandra.version.update"); + + executor = Executors.newScheduledThreadPool(3); + if (UPDATE_TABLE) { + System.out.println("Initializating update version parameter"); + //update_scheduler = Executors.newSingleThreadScheduledExecutor(); + //update_scheduler.schedule(new Runnable() { + executor.schedule(new Runnable() { + @Override + public void run() { + updater.FillNewParameter(); + } + }, 10, TimeUnit.SECONDS); + } if (FILL_NEWTABLE) { System.out.println("Initializating new table update scheduler"); - update_scheduler = Executors.newSingleThreadScheduledExecutor(); - update_scheduler.schedule(new Runnable() { + //update_scheduler = Executors.newSingleThreadScheduledExecutor(); + //update_scheduler.schedule(new Runnable() { + executor.schedule(new Runnable() { @Override public void run() { updater.FillNewTable(); @@ -87,7 +107,7 @@ public class ContextListener implements ServletContextListener { } final int updateperiod = ProteoCachePropertyHelperManager.getIntProperty(ph.getProperty("cassandra.jpred.web.period")); - webjob_scheduler = Executors.newSingleThreadScheduledExecutor(); + //webjob_scheduler = Executors.newSingleThreadScheduledExecutor(); System.out.println("Initializating web job scheduler"); System.out.println(" initial delay = " + initialdelay + " seconds"); System.out.println(" update rate = " + updaterate + " seconds"); @@ -96,7 +116,8 @@ public class ContextListener implements ServletContextListener { else System.out.println(" update period = 5 days"); - webjob_scheduler.scheduleAtFixedRate(new Runnable() { + //webjob_scheduler.scheduleAtFixedRate(new Runnable() { + webjobs = executor.scheduleAtFixedRate(new Runnable() { @Override public void run() { try { @@ -131,7 +152,7 @@ public class ContextListener implements ServletContextListener { } final int updateperiod = ProteoCachePropertyHelperManager.getIntProperty(ph.getProperty("cassandra.jpred.local.period")); - localjob_scheduler = Executors.newSingleThreadScheduledExecutor(); + //localjob_scheduler = Executors.newSingleThreadScheduledExecutor(); System.out.println("Initializating local job scheduler"); System.out.println(" initial delay = " + initialdelay + " seconds"); System.out.println(" update rate = " + updaterate + " seconds"); @@ -139,7 +160,8 @@ public class ContextListener implements ServletContextListener { System.out.println(" update period = " + updateperiod + " days"); else System.out.println(" update period = 5 days"); - localjob_scheduler.scheduleAtFixedRate(new Runnable() { + //localjob_scheduler.scheduleAtFixedRate(new Runnable() { + localjobs = executor.scheduleAtFixedRate(new Runnable() { @Override public void run() { try { @@ -161,6 +183,7 @@ public class ContextListener implements ServletContextListener { /** * @see ServletContextListener#contextDestroyed(ServletContextEvent) */ + /* public void contextDestroyed(ServletContextEvent arg0) { db.Closing(); System.out.println("Shut down ProteoCache......"); @@ -172,5 +195,21 @@ public class ContextListener implements ServletContextListener { } update_scheduler.shutdownNow(); } - + */ + public void contextDestroyed(ServletContextEvent arg0) { + db.Closing(); + try { + System.out.println("Shut down ProteoCache......"); + if (READ_WEB_JPRED) { + webjobs.cancel(true); + } + if (READ_LOCALFILE_JPRED) { + localjobs.cancel(true); + } + executor.shutdown(); + executor.awaitTermination(3, TimeUnit.SECONDS); + } catch (InterruptedException e) { + log.warn(e.getMessage(), e); + } + } }