对于计划任务,但没有链接,我在启动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”
答案 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>
答案 1 :(得分:1)
在使用迁移向导升级到较新的ColdFusion版本后,我发现任务invokehandler在异常日志中无法链接时出现相同的错误。这似乎是由在计划任务导入期间插入文本 invokehandler 引起的。
使用以下步骤解决此问题:
编辑完所有计划任务后,此时应立即停止错误。