Problème Servlet / Quartz
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:
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:
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:
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:
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.