Bonjour, le titre n'est peut-être pas totalement clair mais je m'explique.
J'essaie actuellement d'initialiser une variable de context.
this.getServletContext().setAttribute("variable","value");
À la fois dès l'initialisation de mon instance et à chaque X minutes.
Donc dans mon fichier web.XML
La classe QuartzServlet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <servlet> <servlet-name>QuartzInitializer</servlet-name> <display-name>Quartz Initializer Servlet</display-name> <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> // le Cron <servlet> <servlet-name>QuartzServlet</servlet-name> <display-name>Quartz Servlet</display-name> <servlet-class>ca.qc.projet.titre.QuartzServlet</servlet-class> <init-param> <param-name>cronExpr</param-name> <param-value>0 0/2 * * * ?</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> // L'initialisation <servlet> <servlet-name>ScheduledJobs</servlet-name> <servlet-class>ca.qc.projet.titre.ScheduledJobs</servlet-class> <load-on-startup>3</load-on-startup> </servlet>
et finalement ma classe ScheduledJobs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public class QuartzServlet extends GenericServlet { public void init(ServletConfig config) throws ServletException { try { super.init(config); try { JobDetail jd = new JobDetail("job1", null, ScheduledJobs.class); CronTrigger cronTrigger = new CronTrigger("trigger1", "group1"); String cronExpr = null; // Get the cron Expression as an Init parameter cronExpr = getInitParameter("cronExpr"); cronTrigger.setCronExpression(cronExpr); Scheduler sched = StdSchedulerFactory.getDefaultScheduler(); sched.scheduleJob(jd, cronTrigger); } catch (Exception e) { e.printStackTrace(); } } catch (Throwable e) { e.printStackTrace(); } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public class ScheduledJobsextends HttpServlet implements Job { private static final Log logger = LogFactory.getLog(ScheduledJobs.class); public void init() throws ServletException { set_session("init"); } public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { set_session("execute"); } public void set_session(String via){ logger.error("lancement de la methode via : "+via); try{ this.getServletContext().setAttribute("variable","valeur"); } catch (Exception ex) { logger.error("Erreur : " + ex); } } }
Bref tout ce beau code pour dire que à l'initialisation c'est la methode init()
qui est lancé et tout fonctionne très très bien.
Ensuite 2 minutes après c'est execute()
et rendu au this.getServletContext()...
J'ai une erreur de java.lang.NullPointerException
Es-ce qu'il y aurais une raison ? Quelque chose que init possède et que execute n'a pas et devrais avoir ?
En vous remerciant !
Partager