Quartz Scheduler(Java) - 限制XML定义的作业

时间:2015-01-29 14:36:01

标签: java cron scheduler

在我使用Quartz Scheduler运行的简单Java Web应用程序中,我在XML中定义了大约25个作业。

我注意到有一段时间我的一些工作没有按计划运行。 cron表达式肯定是正确的,xml文件肯定是正确定义的 - xml解析插件非常挑剔,并没有提到任何错误。

我把所有这些工作归类为单独的文件。为了尝试找出问题,我决定创建一个文件来容纳所有工作。执行此操作后,似乎文件中的前5个作业运行。

第6个作业不会运行,但是如果我将它向上移动到文件中的一个位置(到第5个位置) - 它会正确运行。

Quartz.properties:

org.quartz.scheduler.skipUpdateCheck: true

# ----------------------------- XML Trigger Files ------------------#
org.quartz.plugin.jobInitializer.fileNames = all_jobs.xml

# ----------------------------- Threads --------------------------- #
# How many jobs can run at the same time?
org.quartz.threadPool.threadCount=500

# ----------------------------- Plugins --------------------------- #
# Class to load the configuration data for each job and trigger.
# In this example, the data is in an XML file.
org.quartz.plugin.jobInitializer.class=org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin

是否存在某种特定于XML中定义的作业的线程限制,我显然不知道这些限制?

非常感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

XML中必定存在一些错误。通常Quartz会在重新读取XML的Factory工作时记录它。 Quartz XML解析器非常特别,你提到作业的属性是什么顺序,比如在哪里应该提到触发器的misfire-instruction等等。请查找错误,你很容易找到错误。

答案 1 :(得分:0)

看起来我的xml定义中确实存在错误。我的另一个问题(tomcat最近没有记录错误)使我无法看到XMLSchulingDataProcessorPlugin关于格式错误的XML的通知。

我将应用程序部署到另一台服务器作为最后的手段,并且发现我在触发器定义中意外地交换了作业名称的触发器名称,导致Quartz忽略该作业以及在其下面定义的作业。 / p>

希望这有助于某人!