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

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>
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
 
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();
	        }
	}
}
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
 
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 !