ana*_*h85 3 tomcat struts quartz-scheduler
我正在使用struts和quartz框架来安排工作.它工作正常.
但是当我停止Tomcat(6.0.26)时,它会在控制台上抛出错误
"Web应用程序似乎已经启动了一个名为[.....]的线程,但未能阻止它.这很可能会导致内存泄漏.
任何人都知道如何优雅地处理这个......
目前我的struts config.xml看起来像这样:
<plug-in className="com.example.scheduler.SchedulerPlugin">
<set-property property="startOnLoad" value="true"/>
<set-property property="startupDelay" value="0"/>
</plug-in>
确切知道的最好方法是发送一个SIGQUIT(kill -3)程序并分析输出以查看哪个线程仍在运行.
您的作业(在Quartz线程之一上运行)很可能不会对关闭信号做出反应并继续工作.对于长时间工作,您可以jobExecutionContext.getScheduler().isShutdown()
定期检查或编程您的工作,以便InterruptableJob
正确应对中断.
您需要调用 scheduler.shutdown(true) 来告诉 Quartz 等待任何正在进行的作业完成执行。
此外,一些 tomcat 用户报告说,他们还需要在关闭调用后暂停线程一秒钟左右,以便在 tomcat 尝试检测线程是否仍在运行之前让其他线程的 cpu 有时间进行清理。
请参阅此处的讨论:http : //forums.terracotta.org/forums/posts/list/3479.page
归档时间: |
|
查看次数: |
6210 次 |
最近记录: |