Quartz的配置问题
环境:Tomcat 6.0.10 + Quartz 1.6.0
quartz_reminder.xml:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE quartz PUBLIC "-//Quartz Enterprise Job Scheduler//DTD Job Scheduling Data 1.0//EN" "http://www.quartzscheduler.org/dtd/job_scheduling_data_1_0.dtd"><quartz> <job> <job-detail> <name>Job_DataTransmit</name> <group>DEFAULT</group> <job-class>scheduling.QuartzStart</job-class> </job-detail> <trigger> <cron> <name>Trigger_DataTransmit</name> <group>DEFAULT</group> <job-name>Job_DataTransmit</job-name> <job-group>DEFAULT</job-group> <cron-expression> 0 0 17 * * ? </cron-expression> </cron> </trigger> </job> </quartz>
quartz.properties :
## Configure Main Scheduler Properties#org.quartz.scheduler.instanceName = DataTransmitorg.quartz.scheduler.instanceId = one## Configure ThreadPool #org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPoolorg.quartz.threadPool.threadCount = 5org.quartz.threadPool.threadPriority = 4## Configure JobStore #org.quartz.jobStore.misfireThreshold = 5000org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore# ===========================================================================# Configure SchedulerPlugins ===============================================# ===========================================================================org.quartz.plugin.triggHistory.class =org.quartz.plugins.history.LoggingTriggerHistoryPluginorg.quartz.plugin.triggHistory.triggerFiredMessage = Trigger{1}.{0}firedjob{6}.{5}at:{4,date,HH:mm:ssMM/dd/yyyy}org.quartz.plugin.triggHistory.triggerCompleteMessage = Trigger{1}.{0}completedfiringjob{6}.{5}at{4,date,HH:mm:ssMM/dd/yyyy}withresultingtriggerinstructioncode:{9}org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPluginorg.quartz.plugin.jobInitializer.fileName =/quartz_reminder.xmlorg.quartz.plugin.jobInitializer.overWriteExistingJobs = falseorg.quartz.plugin.jobInitializer.failOnFileNotFound = trueorg.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPluginorg.quartz.plugin.shutdownhook.cleanShutdown = true启动Tomcat加载及错误信息:
INFO : 2007-11-21 17:37:16,937: QuartzScheduler[line:542]: Scheduler QuartzScheduler_$_one shutting down.INFO : 2007-11-21 17:37:16,937: QuartzScheduler[line:470]: Scheduler QuartzScheduler_$_one paused.INFO : 2007-11-21 17:37:16,953: QuartzScheduler[line:592]: Scheduler QuartzScheduler_$_one shutdown complete.WARN : 2007-11-21 17:37:18,890: JobInitializationPlugin[line:140]: The "filename" plugin property is deprecated. Please use "filenames" in the future.INFO : 2007-11-21 17:37:19,000: QuartzScheduler[line:209]: Quartz Scheduler v.1.6.0 created.INFO : 2007-11-21 17:37:19,015: ShutdownHookPlugin[line:128]: Registering Quartz shutdown hook.INFO : 2007-11-21 17:37:19,015: JobInitializationPlugin[line:280]: Registering Quartz Job Initialization Plug-in.INFO : 2007-11-21 17:37:19,015: RAMJobStore[line:141]: RAMJobStore initialized.INFO : 2007-11-21 17:37:19,046: StdSchedulerFactory[line:1208]: Quartz scheduler 'DataTransmit' initialized from default resource file in Quartz package: 'quartz.properties'INFO : 2007-11-21 17:37:19,046: StdSchedulerFactory[line:1212]: Quartz scheduler version: 1.6.0INFO : 2007-11-21 17:37:19,484: JobSchedulingDataProcessor[line:489]: Parsing XML file: /D:/Tomcat/tomcat-6.0/webapps/myquartz/WEB-INF/classes/quartz_reminder.xml with systemId: /D:/Tomcat/tomcat-6.0/webapps/myquartz/WEB-INF/classes/quartz_reminder.xml validating: false validating schema: jar:file:/D:/Tomcat/tomcat-6.0/webapps/myquartz/WEB-INF/lib/quartz-1.6.0.jar!/org/quartz/xml/job_scheduling_data_1_5.xsdERROR: 2007-11-21 17:37:26,078: Digester[line:1558]: Parse Fatal Error at line 6 column 7: The markup declarations contained or pointed to by the document typedeclaration must be well-formed.org.xml.sax.SAXParseException: The markup declarations contained or pointed to by the document type declaration must be well-formed. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388) at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1400) at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDecls(XMLDTDScannerImpl.java:2003) at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.scanDTDExternalSubset(XMLDTDScannerImpl.java:320) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1169) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1066) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:986) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) at org.apache.commons.digester.Digester.parse(Digester.java:1647) at org.quartz.xml.JobSchedulingDataProcessor.processFile(JobSchedulingDataProcessor.java:496) at org.quartz.xml.JobSchedulingDataProcessor.processFileAndScheduleJobs(JobSchedulingDataProcessor.java:565) at org.quartz.plugins.xml.JobInitializationPlugin.processFile(JobInitializationPlugin.java:392) at org.quartz.plugins.xml.JobInitializationPlugin.start(JobInitializationPlugin.java:324) at org.quartz.plugins.SchedulerPluginWithUserTransactionSupport.start(SchedulerPluginWithUserTransactionSupport.java:144) at org.quartz.core.QuartzScheduler.startPlugins(QuartzScheduler.java:2139) at org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:450) at org.quartz.impl.StdScheduler.start(StdScheduler.java:146) at org.quartz.ee.servlet.QuartzInitializerServlet.init(QuartzInitializerServlet.java:165) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4044) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350) at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3083) at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:404) at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1279) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1571) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1580) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1580) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1560) at java.lang.Thread.run(Thread.java:619)ERROR: 2007-11-21 17:37:26,093: JobInitializationPlugin[line:398]: Error scheduling jobs: The markup declarations contained or pointed to by the document type declaration must be well-formed.org.xml.sax.SAXParseException: The markup declarations contained or pointed to by the document type declaration must be well-formed. at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1231) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) at org.apache.commons.digester.Digester.parse(Digester.java:1647) at org.quartz.xml.JobSchedulingDataProcessor.processFile(JobSchedulingDataProcessor.java:496) at org.quartz.xml.JobSchedulingDataProcessor.processFileAndScheduleJobs(JobSchedulingDataProcessor.java:565) at org.quartz.plugins.xml.JobInitializationPlugin.processFile(JobInitializationPlugin.java:392) at org.quartz.plugins.xml.JobInitializationPlugin.start(JobInitializationPlugin.java:324) at org.quartz.plugins.SchedulerPluginWithUserTransactionSupport.start(SchedulerPluginWithUserTransactionSupport.java:144) at org.quartz.core.QuartzScheduler.startPlugins(QuartzScheduler.java:2139) at org.quartz.core.QuartzScheduler.start(QuartzScheduler.java:450) at org.quartz.impl.StdScheduler.start(StdScheduler.java:146) at org.quartz.ee.servlet.QuartzInitializerServlet.init(QuartzInitializerServlet.java:165) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1161) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4044) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4350) at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3083) at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:404) at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1279) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1571) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1580) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1580) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1560) at java.lang.Thread.run(Thread.java:619)INFO : 2007-11-21 17:37:26,109: QuartzScheduler[line:455]: Scheduler DataTransmit_$_one started.<?xml version="1.0" encoding="UTF-8"?><quartz> <job> <job-detail> <name>Job_DataTransmit</name> <group>DEFAULT</group> <job-class>scheduling.QuartzStart</job-class> </job-detail> <trigger> <cron> <name>Trigger_DataTransmit</name> <group>DEFAULT</group> <job-name>Job_DataTransmit</job-name> <job-group>DEFAULT</job-group> <cron-expression> 0 57 14 * * ? </cron-expression> </cron> </trigger> </job> </quartz>这是修改后的文件,只需要把“<!DOCTYPE quartz PUBLIC "-//Quartz Enterprise Job Scheduler//DTD Job Scheduling Data 1.0//EN" "http://www.quartzscheduler.org/dtd/job_scheduling_data_1_0.dtd">"删除掉即可。
不知道是不是跟Quartz的版本有关系? 2 楼 zhangzhaofeng 2008-01-07 对quartz_reminder.xml的解析出问题了
可以参见一下
JobSchedulingDataProcessor.calss
JobSchedulingDataProcessor.class