Issue Details (XML | Word | Printable)

Key: QUARTZ-153
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Chris Bonham
Reporter: Chris Bonham
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
Quartz Scheduler

JobSchedulingDataProcessor.DateConverter overrides other Converters

Created: 09/Mar/05 08:34 AM   Updated: 13/Mar/07 01:04 AM
Component/s: Core
Affects Version/s: 1.4.4
Fix Version/s: 1.4.5

Environment: JBoss 3.2.4, Windows XP SP2, JDK 1.4.2_05
Issue Links:
Duplicate
 


 Description  « Hide
When loading Quartz through the QuartzInitializerServlet, the DateConverter set to parse the dates in XML overrides a DateConverter setup for the main application, causing a ConversionException:

org.apache.commons.beanutils.ConversionException: Unparseable date: "01/01/1920"
at org.quartz.xml.JobSchedulingDataProcessor$DateConverter.convert(JobSchedulingDataProcessor.java:984)
at org.apache.commons.beanutils.BeanUtils.copyProperty(BeanUtils.java:447)
at org.apache.commons.beanutils.BeanUtils.copyProperties(BeanUtils.java:239)
at org.apache.struts.action.ForwardAction.execute(ForwardAction:80)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:72)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.jboss.web.tomcat.security.JBossSecurityMgrRealm.invoke(JBossSecurityMgrRealm.java:275)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:535)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.text.ParseException: Unparseable date: "01/01/1920"
at java.text.DateFormat.parse(DateFormat.java:335)
at org.quartz.xml.JobSchedulingDataProcessor$DateConverter.parseDate(JobSchedulingDataProcessor.java:996)
at org.quartz.xml.JobSchedulingDataProcessor$DateConverter.convert(JobSchedulingDataProcessor.java:973)
... 44 more

I propose to fix it by only setting the JobSchedulingDataProcessor.DateConverter to convert Dates while the Digester is parsing the XML. I'll also change it for the TimeZoneConverter to be consistent.

 All   Comments   Change History      Sort Order: Ascending order - Click to sort in descending order
Jignesh Patel added a comment - 11/Mar/07 08:07 AM
Hi,

I am new to Quartz and got the same error, in the last comment it is written that this can be fix by setting JobSchedulingDataProcessor.DateConverter to convert Dates.

But how to do this?

I have following quartz-jobs.xml
------------------------
<?xml version='1.0' encoding='utf-8'?>
<quartz>
  <job>
    <job-detail>
     <name>DailyRoutine_Job_2</name>
     <group>DEFAULT</group>
     <description>
          DailyRoutine Job 2
     </description>
     <job-class>
            com.test.PlugInDumbJob
     </job-class>
     <volatility>false</volatility>
     <durability>false</durability>
     <recover>false</recover>
     <job-data-map allows-transient-data="true">
       <entry>
         <key>DocumentType</key>
         <value>DOCSIMAGE</value>
       </entry>
     </job-data-map>
    </job-detail>

    <trigger>
<cron>
<name>DailyRoutine_Trigger_2</name>
<group>DEFAULT</group>
<job-name>DailyRoutine_Job_2</job-name>
<job-group>DEFAULT</job-group>
<start-time>2006-11-21</start-time>
<end-time>2050-01-01</end-time>
<cron-expression>0 53 11 * * *</cron-expression>
</cron>
    </trigger>
  </job>
</quartz>
------------------------

And I am using following code to schedule a job:
------------------------
JobSchedulingDataProcessor processor = new JobSchedulingDataProcessor( true, true , true );
processor.processFileAndScheduleJobs( "quartz-jobs.xml", scheduler, true );
------------------------

Here i am passing "scheduler" as a default quartz scheduler loaded from QuartzInitializerServlet.

And I am getting following error:
------------------------
2007-03-11 18:06:07,936 ERROR [org.apache.commons.digester.Digester] End event threw exception
org.apache.commons.beanutils.ConversionException: Unparseable date: "2006-11-21"
at org.quartz.xml.JobSchedulingDataProcessor$DateConverter.convert(JobSchedulingDataProcessor.java:1199)
at org.quartz.xml.JobSchedulingDataProcessor$SimpleConverterRule.end(JobSchedulingDataProcessor.java:1025)
at org.apache.commons.digester.Digester.endElement(Digester.java:1130)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1647)
at org.quartz.xml.JobSchedulingDataProcessor.processFile(JobSchedulingDataProcessor.java:430)
at org.quartz.xml.JobSchedulingDataProcessor.processFileAndScheduleJobs(JobSchedulingDataProcessor.java:499)
at org.quartz.xml.JobSchedulingDataProcessor.processFileAndScheduleJobs(JobSchedulingDataProcessor.java:485)
at com.pms.scheduler.ITMSJobManager.processJobsFromDirectory(ITMSJobManager.java:68)
at com.pms.server.ITMSInitializationServlet.init(ITMSInitializationServlet.java:155)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
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.ContainerBase.addChildInternal(ContainerBase.java:760)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
at org.apache.catalina.core.StandardContext.init(StandardContext.java:5285)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
at org.jboss.web.tomcat.tc6.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:302)
at org.jboss.web.tomcat.tc6.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:129)
at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:355)
at org.jboss.web.deployers.WebModule.startModule(WebModule.java:88)
at org.jboss.web.deployers.WebModule.start(WebModule.java:66)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:184)
at $Proxy0.start(Unknown Source)
at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)
at org.jboss.system.microcontainer.ServiceControllerContextAction.install(ServiceControllerContextAction.java:46)
at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:226)
at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:198)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:709)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:429)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:538)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:472)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:320)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:190)
at org.jboss.system.ServiceController.doChange(ServiceController.java:656)
at org.jboss.system.ServiceController.start(ServiceController.java:431)
at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:124)
at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:85)
at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:44)
at org.jboss.deployers.plugins.deployers.helpers.AbstractSimpleRealDeployer.deploy(AbstractSimpleRealDeployer.java:53)
at org.jboss.deployers.plugins.deployer.AbstractSimpleDeployer.commitDeploy(AbstractSimpleDeployer.java:52)
at org.jboss.deployers.plugins.deployer.DeployerWrapper.commitDeploy(DeployerWrapper.java:145)
at org.jboss.deployers.plugins.deployment.MainDeployerImpl.commitDeploy(MainDeployerImpl.java:440)
at org.jboss.deployers.plugins.deployment.MainDeployerImpl.process(MainDeployerImpl.java:381)
at org.jboss.system.server.profileservice.ProfileServiceBootstrap.loadProfile(ProfileServiceBootstrap.java:366)
at org.jboss.system.server.profileservice.ProfileServiceBootstrap.bootstrap(ProfileServiceBootstrap.java:246)
at org.jboss.kernel.plugins.bootstrap.AbstractBootstrap.run(AbstractBootstrap.java:89)
at org.jboss.system.server.profileservice.ServerImpl.doStart(ServerImpl.java:401)
at org.jboss.system.server.profileservice.ServerImpl.start(ServerImpl.java:340)
at org.jboss.Main.boot(Main.java:210)
at org.jboss.Main$1.run(Main.java:508)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.text.ParseException: Unparseable date: "2006-11-21"
at java.text.DateFormat.parse(DateFormat.java:335)
at org.quartz.xml.JobSchedulingDataProcessor$DateConverter.parseDate(JobSchedulingDataProcessor.java:1211)
at org.quartz.xml.JobSchedulingDataProcessor$DateConverter.convert(JobSchedulingDataProcessor.java:1188)
... 85 more
------------------------

Please help me.

Thanks,
Jignesh

Henri Yandell added a comment - 12/Mar/07 11:06 AM
Jignesh, this issue was closed in Quartz 1.4.5 according to the issue tracker, so could you bring it up on the user forum instead; or upgrade to Quartz 1.4.5 if you are on an earlier version.

Jignesh Patel added a comment - 13/Mar/07 01:04 AM
Thanks Henri,

I have linked this issue with new issue# QUARTZ-567.