对于计划任务,但没有链接的任务,启动 Adobe ColdFusion 10 服务(在 Windows 上)时,我在异常日志中收到以下错误。如何解决此问题并找到错误根源?
"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”
最佳答案
您可以在这里做几件事。您可以编写一个 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 的链接。
关于coldfusion - 默认QuartzScheduler_Worker "Task invokehandler could not be chained",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25855337/