Bonjour,

Je dois développer un planificateur de tâches avec quartz en java sous une servlet pour qu'il puisse démarrer en même temps que le serv apache, mais il y a quelque chose qui ne va pas. Je vous montre la source.

MyWebApp.java

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
ublic class MyWebApp extends HttpServlet {
 
    public static final String QUARTZ_FACTORY_KEY = "org.quartz.impl.StdSchedulerFactory.KEY";
    private boolean performShutdown;
    private Scheduler scheduler;
	Calendar cal = Calendar.getInstance();
 
 
    public MyWebApp()
    {
        performShutdown = true;
        scheduler = null;
    }
 
    public void init(ServletConfig cfg)
        throws ServletException
    {
        super.init(cfg);
        System.out.println("Quartz Initializer Servlet loaded, initializing Scheduler...");
        try
        {
            String configFile = cfg.getInitParameter("config-file");
            String shutdownPref = cfg.getInitParameter("shutdown-on-unload");
            if(shutdownPref != null)
            {
                performShutdown = Boolean.valueOf(shutdownPref).booleanValue();
            }
            StdSchedulerFactory factory;
            if(configFile != null)
            {
                factory = new StdSchedulerFactory(configFile);
            } else
            {
                factory = new StdSchedulerFactory();
            }
            scheduler = factory.getScheduler();
            String startOnLoad = cfg.getInitParameter("start-scheduler-on-load");
            if(startOnLoad == null || Boolean.valueOf(startOnLoad).booleanValue())
            {
 
			if(scheduler.isStarted()){
			System.out.println("~~~~~~~~~~~~~~~~~~This is the Alarm message Scheduler Already started~~~~~~~~~~~~~~~~~~~``");	}
			scheduler.start();
                System.out.println("TriggerMail Started  for 3 and 3.15");
            } else
            {
                System.out.println("Scheduler has not been started. Use scheduler.start()");
            }
            String factoryKey = cfg.getInitParameter("servlet-context-factory-key");
            if(factoryKey == null)
            {
                factoryKey = "org.quartz.impl.StdSchedulerFactory.KEY";
            }
            System.out.println("Storing the Quartz Scheduler Factory in the servlet context at key: " + factoryKey);
            cfg.getServletContext().setAttribute(factoryKey, factory);
        }
        catch(Exception e)
        {
            System.out.println("Quartz Scheduler failed to initialize: " + e.toString());
            throw new ServletException(e);
        }
    }
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
<servlet>
<servlet-name>MyWebApp</servlet-name>
<display-name>MyWebApp</display-name>
<servlet-class>MyWebApp</servlet-class>
<load-on-startup>2</load-on-startup>
<init-param>
<param-name>config-file</param-name>
<param-value>quartz.properties</param-value>
</init-param>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>start-scheduler-on-load</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
quartz.properties
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
#==========================================================================
# Configure Main Scheduler Properties
#==========================================================================
org.quartz.scheduler.instanceName = SchedulerDeTest
org.quartz.scheduler.instanceId = scheduler1
#==========================================================================
# Configure ThreadPool
#==========================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = -1
org.quartz.threadPool.threadPriority = 5
Pour le message d'erreur

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
Exception lors de l'allocation pour la servlet MyWebApp
java.lang.NoClassDefFoundError: MyWebApp (wrong name: MyWebApp/MyWebApp)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1812)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:866)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1319)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1198)
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1034)
        at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:757)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:130)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:619)
Si vous pouviez m'aider ^^, si le plus probable vient de tomcat5.0 où directement du fichier java où encore des fichiers annexe tels que quartz.properties (sur lequel j'ai un doute sur son fonctionnement) et web.xml.