DefaultQuartzScheduler_Worker“无法链接任务invokehandler”

时间:2014-09-15 19:19:24

标签: coldfusion quartz-scheduler coldfusion-10

对于计划任务,但没有链接,我在启动Adobe ColdFusion 10服务时(在Windows上)在exception.log中得到以下错误。如何解决此错误来源?

"Error","DefaultQuartzScheduler_Worker-2","09/15/14","15:12:02",,"Task invokehandler could not be chained"
java.lang.Exception: Task invokehandler could not be chained
    at coldfusion.scheduling.CronTask.onCompleteTask(CronTask.java:214)
    at coldfusion.scheduling.CronTask.execute(CronTask.java:130)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:213)

注意:我得到三个几乎相同的错误唯一的区别是它在上面的错误中显示“Worker-2”,我也得到“Worker-1”和“Worker-3”

2 个答案:

答案 0 :(得分:1)

你可以在这里做几件事。您可以编写一个ColdFusion页面来检查计划任务的运行状况并手动监视该页面(Check health of scheduled tasks)。当然,该代码本身也可以是计划任务。或者,您可以在各个点向日程安排的任务添加日志记录,以“查看”他们正在执行的操作。我更喜欢后者。

对于最简单的日志记录,您可以在“日志记录设置”页面下检查ColdFusion管理员中的“为计划任务启用日志记录”。这将创建一个名为 scheduler.log 的新日志文件。此选项将报告任务何时启动,何时结束,是否有错误等。此日志仍仅包含通用信息,例如任务名称和用于执行任务的线程名称。这本身可能对你没什么帮助,但它会告诉你哪个线程正在运行哪个任务。

有关更多详细信息,您需要在计划任务代码中添加自己的日志记录。我通常在代码执行期间将日志代码放在主要点上; “开始”,“检索数据”,“更新数据库”,“编写文件”,“完成”等等。然后,只要您需要检查任务发生了什么,您只需阅读日志文件即可查看。

以下是一些示例代码:

<cftry>
    <cflog file="your_file_name" type="information" text="Starting scheduled job xyz">

    ... code ...

    <cflog file="your_file_name" type="information" text="Step 123">

    ... code ...

    <cflog file="your_file_name" type="information" text="Step 456">

    ... code ...

    <cflog file="your_file_name" type="information" text="Scheduled job xyz finished successfully">

    <cfcatch type="any">
        <cflog file="your_file_name" type="error" text="Error: #cfcatch.Type#, #cfcatch.Message#, #cfcatch.Detail#">
        <!--- I usually send an email to myself for errors as well using <cfmail ... /> --->
    </cfcatch>
</cftry>

这是指向documentation for the <cflog> tag的链接。

答案 1 :(得分:1)

在使用迁移向导升级到较新的ColdFusion版本后,我发现任务invokehandler在异常日志中无法链接时出现相同的错误。这似乎是由在计划任务导入期间插入文本 invokehandler 引起的。

使用以下步骤解决此问题:

  1. 登录ColdFusion管理员
  2. 编辑每个计划任务(单击铅笔图标)并执行以下操作:
    1. 向下滚动并点击显示高级设置
    2. 完成字段
    3. 中删除 invokedhandler 文本
    4. 点击提交
  3. 编辑完所有计划任务后,此时应立即停止错误。