Tom*_*ffi 13 java quartz-scheduler tomcat6
对于我的webapp,我使用Quartz.当我部署应用程序时,一切正常.当我取消部署应用程序时,Quartz线程不会被销毁.
日志是:
信息:停止服务Catalina
严重:Web应用程序[/ example]似乎已经启动了一个名为[DefaultQuartzScheduler_Worker-1]的线程,但未能阻止它.这很可能造成内存泄漏.2010年7月12日下午6:30:40 org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
任何人都可以告诉我如何强制这些线程的销毁行动?
谢谢,
托马索
我发现对我来说问题是石英正在关闭但是webapp没有等到石英完成它才关闭所以Tomcat决定它已经让线程运行并抱怨.
所以我像这样管理我的调度程序:
Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();
...do some stuff with the scheduler...
scheduler.shutdown(true);
Run Code Online (Sandbox Code Playgroud)
注意关闭的boolean参数是至关重要的部分.如果你删除它true来调用no-arg版本或将其设置为false,你的webapp将不会等待石英在关闭之前甩掉.
TL; DR:打电话scheduler.shutdown(true)让你的webapp等待石英完成.
你是如何启动石英的?
假设您没有使用像 Spring 这样方便的包装器,您可能希望<listener>在应用程序的 web.xml 中使用 a ,以便 Quartz 可以收到应用程序启动和关闭的通知。
例如,请参见QuartzInitializerListener或QuartzInitializerServlet 。
| 归档时间: |
|
| 查看次数: |
11947 次 |
| 最近记录: |