Wir haben eine Java-Anwendung, die Quartz für die Planung von Jobs verwendet. Die von uns verwendete Quarzversion ist: quarz-2.2.1Wiederholen Quartz Scheduler starten bei Datenbankverbindungsfehler
Die Quarzkonfiguration verwendet den JDBC-Jobspeicher.
Wenn die Datenbankverbindung nach unten ist (aufgrund des intermittierenden Netzausfalls) zum Zeitpunkt der Start-Methode Aufruf auf Quarz-Scheduler Objekt, schlägt es mit folgenden Ausnahme:
2017-05-28 00:05:45 org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.JobPersistenceException: Couldn't recover jobs: The connection is closed. [See nested exception: com.microsoft.sqlserver.jdbc.SQLServerException: The connection is closed.]]
2017-05-28 00:05:45 at org.quartz.impl.jdbcjobstore.JobStoreSupport.schedulerStarted(JobStoreSupport.java:692)
2017-05-28 00:05:45 at org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:567)
2017-05-28 00:05:45 at org.quartz.impl.StdScheduler.start(StdScheduler.java:142)
Um diese Quarz-Scheduler, um sicherzustellen, erfolgreich gestartet wurde, haben wir einen erneuten Versuch in unserem Code hinzugefügt, der nach jeder Sekunde einen Aufruf zum Starten der Methode auf dem Quarz-Scheduler-Objekt vornimmt. Wenn die Datenbankverbindung besteht, ist die Methode zum Starten des Aufrufs von quartz scheduler erfolgreich (es werden keine Ausnahmen ausgelöst), aber die zugeordneten Trigger, die sich in der Datenbank befinden, werden nicht gestartet, und es wird kein Job ausgelöst.
Irgendeine Idee, was könnte das Problem hier sein? Jede Hilfe soll geschätzt werden.
Hier ist die Quarz-Konfiguration Bitte beachten Sie, dass wir bereits Validierungsabfrage umgehen crappy Verbindungen (wegen intermittierenden Netzwerkausfall)
#============================================================================
# Configure Main Scheduler Properties
#============================================================================
org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.scheduler.skipUpdateCheck=true
#============================================================================
# Configure ThreadPool
#============================================================================
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 50
org.quartz.threadPool.threadPriority = 5
#============================================================================
# Configure JobStore
#============================================================================
org.quartz.jobStore.misfireThreshold = 60000
org.quartz.jobStore.maxMisfiresToHandleAtATime = 15
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.useProperties = false
org.quartz.jobStore.dataSource = aBPM
org.quartz.jobStore.tablePrefix = ABPM_
org.quartz.jobStore.isClustered = false
org.quartz.jobStore.useDBLocks = false
org.quartz.jobStore.acquireTriggersWithinLock = true
#============================================================================
# Configure Datasources
#============================================================================
org.quartz.dataSource.aBPM.driver = org.hsqldb.jdbcDriver
org.quartz.dataSource.aBPM.URL = jdbc:hsqldb:file:embeddedDb/db/abpmquartz
org.quartz.dataSource.aBPM.user = sa
org.quartz.dataSource.aBPM.encryptPassword = yes
org.quartz.dataSource.aBPM.password = fMFVvEFk3gFmM9ewWQkTNg==
org.quartz.dataSource.aBPM.maxConnections = 55
org.quartz.dataSource.aBPM.validationQuery= SELECT 1
Hallo Aman, es ist fast zwei Monate her, seit du diese Frage gepostet hast und ich habe sie beantwortet. Wenn Sie meine Antwort gefunden haben, wäre es nett von Ihnen, sie als akzeptiert zu markieren (der Check unter den Abstimmpfeilen). Vielen Dank! – walen