View Javadoc
1   /**
2    * This Source Code Form is subject to the terms of the Mozilla Public
3    * License, v. 2.0. If a copy of the MPL was not distributed with this
4    * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5    *
6    * If it is not possible or desirable to put the notice in a particular
7    * file, then You may include the notice in a location (such as a LICENSE
8    * file in a relevant directory) where a recipient would be likely to look
9    * for such a notice.
10  
11   * 
12   */
13   
14  /*  ---------------------------------------------------------------------------
15   *  U.S. Government, Department of the Army
16   *  Army Materiel Command
17   *  Research Development Engineering Command
18   *  Communications Electronics Research Development and Engineering Center
19   *  ---------------------------------------------------------------------------
20   */
21  
22  package org.miloss.fgsms.auxsrv;
23  
24  import javax.servlet.ServletContextEvent;
25  import javax.servlet.ServletContextListener;
26  
27  import org.miloss.fgsms.common.Utility;
28  import org.apache.log4j.Level;
29  import org.miloss.fgsms.common.Logger;
30  import org.quartz.JobDetail;
31  import org.quartz.Scheduler;
32  import org.quartz.SchedulerException;
33  import org.quartz.Trigger;
34  import org.quartz.TriggerUtils;
35  import org.quartz.impl.StdSchedulerFactory;
36  
37  /**
38   *Starts 6 of the fgsms server processes, deprecated since RC6, use {component}Scheduler.java
39   * @author AO
40   */
41  @Deprecated
42  public class JobStarter implements ServletContextListener {
43  
44      private Scheduler sc;
45      Logger log = Logger.getLogger("fgsms.Aux");
46  
47      public void contextInitialized(ServletContextEvent sce) {
48          try {
49              sc = new StdSchedulerFactory().getScheduler();
50              String jmxurl = sce.getServletContext().getInitParameter("fgsms.qpid.jmx.connectionurl"); //this pulls from context-param
51              String intervalInSeconds = sce.getServletContext().getInitParameter("fgsms.qpid.jmx.interval");
52              String jmxusername = sce.getServletContext().getInitParameter("fgsms.qpid.jmx.username");
53              String jmxpassword = sce.getServletContext().getInitParameter("fgsms.qpid.jmx.encryptedpassword");
54              try {
55  
56                  sc.deleteJob("Uddi Publisher", "fgsms Aux Services ");
57                  sc.deleteJob("Status Bueller", "fgsms Aux Services ");
58                  sc.deleteJob("Data Pruner", "fgsms Aux Services ");
59                  sc.deleteJob("NTSLA", "fgsms Aux Services ");
60                  sc.deleteJob("Statistic Aggregator", "fgsms Aux Services ");
61                  sc.deleteJob("JMX QPID", "fgsms Aux Services ");
62              } catch (Exception ex) {
63              }
64              JobDetail job = new JobDetail("Federation Publisher", "fgsms Aux Services ", org.miloss.fgsms.auxsrv.FederationScheduler.class);
65              Trigger triger = TriggerUtils.makeMinutelyTrigger(5);
66              triger.setName("Federation Publisher Trigger");
67              sc.scheduleJob(job, triger);
68              log.log(Level.INFO, "Federation Publisher job added");
69  
70              job = new JobDetail("Data Pruner", "fgsms Aux Services ", org.miloss.fgsms.auxsrv.DataPrunerScheduler.class);
71              triger = TriggerUtils.makeMinutelyTrigger(5);
72              triger.setName("Data Pruner Trigger");
73              sc.scheduleJob(job, triger);
74              log.log(Level.INFO, "Data Pruner job added");
75  
76              job = new JobDetail("Status Bueller", "fgsms Aux Services ", org.miloss.fgsms.auxsrv.BuellerScheduler.class);
77              triger = TriggerUtils.makeSecondlyTrigger(10);
78              triger.setName("Status BuellerTrigger");
79              sc.scheduleJob(job, triger);
80              log.log(Level.INFO, "Status Buellerjob added");
81  
82              job = new JobDetail("NTSLA", "fgsms Aux Services ", org.miloss.fgsms.auxsrv.NTSLAProcessorScheduler.class);
83              triger = TriggerUtils.makeMinutelyTrigger(5);
84              triger.setName("NTSLA Trigger");
85              sc.scheduleJob(job, triger);
86              log.log(Level.INFO, "NTSLA job added");
87  
88              job = new JobDetail("Statistic Aggregator", "fgsms Aux Services ", org.miloss.fgsms.auxsrv.StatisticsAggregatorScheduler.class);
89              triger = TriggerUtils.makeMinutelyTrigger(5);
90              triger.setName("Stat Agg Trigger");
91              sc.scheduleJob(job, triger);
92              log.log(Level.INFO, "Stats Agg job added");
93  
94              if (!Utility.stringIsNullOrEmpty(jmxurl)) {
95                  job = new JobDetail("JMX QPID", "fgsms Aux Services ", org.miloss.fgsms.auxsrv.QpidJMXScheduler.class);
96                 job.getJobDataMap().put("connecturl", jmxurl);
97                 job.getJobDataMap().put("username", jmxusername);
98                 job.getJobDataMap().put("encryptedpassword", jmxpassword);
99                 try{
100                 triger = TriggerUtils.makeSecondlyTrigger(Integer.parseInt(intervalInSeconds));
101                }
102                catch (Exception ex)
103                {
104                    log.log(Level.WARN, "the configuration parameter for fgsms.qpid.jmx.interval is " + intervalInSeconds + " and could not be parsed as an integer. Defaulting to 30 second pings");
105                    triger = TriggerUtils.makeSecondlyTrigger(30);
106                }
107                 triger.setName("JMX QPID Trigger");
108                 
109                 sc.scheduleJob(job, triger);
110                 log.log(Level.INFO, "JMX QPID added");
111             }
112 
113             if (sc.isShutdown()) {
114                 log.log(Level.WARN, "starting quartz");
115             }
116             sc.start();
117         } catch (Exception ex) {
118             log.log(Level.WARN, "error scheduling UDDI Publisher", ex);
119         }
120 
121     }
122 
123     public void contextDestroyed(ServletContextEvent sce) {
124         try {
125             sc = new StdSchedulerFactory().getScheduler();
126             sc.unscheduleJob("Statistic Aggregator", "fgsms Aux Services ");
127             sc.deleteJob("Statistic Aggregator", "fgsms Aux Services ");
128             sc.unscheduleJob("NTSLA", "fgsms Aux Services ");
129             sc.deleteJob("NTSLA", "fgsms Aux Services ");
130             sc.unscheduleJob("Status Bueller", "fgsms Aux Services ");
131             sc.deleteJob("Status Bueller", "fgsms Aux Services ");
132 
133             sc.unscheduleJob("JMX QPID", "fgsms Aux Services ");
134             sc.deleteJob("JMX QPID", "fgsms Aux Services ");
135 
136 
137             sc.unscheduleJob("Data Pruner", "fgsms Aux Services ");
138             sc.deleteJob("Data Pruner", "fgsms Aux Services ");
139             sc.unscheduleJob("Uddi Publisher", "fgsms Aux Services ");
140             sc.deleteJob("Uddi Publisher", "fgsms Aux Services ");
141             log.log(Level.WARN, "Undeploying fgsms Aux Services Succeeded. Jobs removed from Quartz scheduler.");
142         } catch (SchedulerException ex) {
143             log.log(Level.WARN, "error unscheduling UDDI Publisher", ex);
144         }
145     }
146 }