IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Servlets/JSP Java Discussion :

Problème Servlet / Quartz


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 81
    Par défaut 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 : 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.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 81
    Par défaut
    Il n'y a personne qui sait utiliser Quartz ? ça m'aiderai vraiment car la je galère pas mal et j'ai vraiment besoin de résoudre ce problème :\

  3. #3
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Si tu disais à quoi correspond "MyServlet.java:29" ça pourrait aider aussi ...

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 81
    Par défaut
    Merci chtiq de t'interessé à mon cas, je viens d'éditer mon post, pour ne pas flooder, j'ai changer quelque peu mon appli, mais toujours des problèmes...

  5. #5
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Le problème n'est plus le même, là il ne trouve pas ta classe Servlet...
    Ta classe MyWebApp est dans quel package ??

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 81
    Par défaut
    il est bien dans son package, la servlet fonctionne mais au niveau de quartz il y a un problème :\ mais je n'arrive pas à trouver pourquoi

  7. #7
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Dans ton fichier web.xml, le paramètre servlet-class doit être : nom_package.NomServlet

    Dans la servlet, il faudrait également définir la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void init(ServletConfig config) 
    {
       ...
    }
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 81
    Par défaut
    Merci de ton aide, mais la fonction init() est déjà définit... Et pour le web.xml je pense que tu as raison (un détail de réglé ^^),et toujours une erreur.

    Je vous montre l'erreur que je récupère quand je l'appel depuis le navigateur.

    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
    javax.servlet.ServletException: "Servlet.init()" pour la servlet Webapp a généré une exception
    	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	java.lang.Thread.run(Thread.java:619)
     
     
    cause mère 
     
    java.lang.NoClassDefFoundError: javax/transaction/UserTransaction
    	org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1104)
    	org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1355)
    	WebApp.Webapp.init(Webapp.java:60)
    	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	java.lang.Thread.run(Thread.java:619)
    Et le problème vient de cette ligne je pense, que l'on utilise le fichier quartz .properties ou non :
    WebApp.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    factory = new StdSchedulerFactory();



    Ps : MyWebapp = Webapp ( j'ai juste refait mon projet pour verifer )

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Ca ressemble à un jar (de Quartz) qui ne serait pas dans /WEB-INF/lib
    Peux-tu vérifier ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 81
    Par défaut
    Ah, c'est juste ce que je viens de trouver avant de lire ton post :p, oui en fait c'est jta.jar qu'il manquait, mais la autre erreur ou j'ai pas eu le tps de travailler dessu

    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
    javax.servlet.ServletException: Thread count must be > 0
    	WebApp.Webapp.init(Webapp.java:91)
    	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	java.lang.Thread.run(Thread.java:619)
     
     
    cause mère 
     
    org.quartz.SchedulerConfigException: Thread count must be > 0
    	org.quartz.simpl.SimpleThreadPool.initialize(SimpleThreadPool.java:232)
    	org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1154)
    	org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1355)
    	WebApp.Webapp.init(Webapp.java:63)
    	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    	org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    	org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    	org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    	org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    	org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    	java.lang.Thread.run(Thread.java:619)
    serait parce que je n'ai pas implementé de thread ? la class scheduler n'instancie pas un thread ? dans tous les cas je vais verifier je vous tiens au courant^^

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    En regardant la doc de Quartz j'ai vu qu'il y avait un fichier quartz.properties qui fait référence à un nombre de thread.
    Tu ne l'aurais pas oublié par hasard ?

    http://www.onjava.com/pub/a/onjava/2...tz.html?page=2
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2006
    Messages : 81
    Par défaut
    Oui Merci beaucoup , c'etait bien ça , la je n'ai plus de problème je vais pouvoir me lancer dans les jobs et jobstore. A bientot

  13. #13
    Futur Membre du Club
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Par défaut
    pouvez vous m'aider j'ai eu le meme probleme :org.quartz.SchedulerConfigException: Thread count must be > 0
    pourtant j'ai changer dans le fichier quartz.properties (org.quartz.threadPool.threadCount =10)

    merci d'avance.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème API Quartz
    Par yaya0057 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 06/10/2009, 23h38
  2. problème servlet enregistrement
    Par stofeben dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 04/06/2007, 16h18
  3. problème servlet xml
    Par youp_db dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 02/10/2006, 15h46
  4. problème servlet + JDBC sur tomcat
    Par pellec dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 09/08/2006, 09h45
  5. [Débutant] Problème servlet simple
    Par davycrocket dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 30/06/2004, 09h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo