tomcat后台线程
问题描述:
我有一个tomcat 6.20实例正在运行,并且想通过后台线程发送邮件来阻止邮件发送功能阻止请求。tomcat后台线程
有什么办法可以在后台执行线程,同时仍然允许正常的页面流发生。
该应用程序是用ICEfaces编写的。
谢谢。
答
- 使用
java.util.concurrent.Executors.newCachedThreadPool
(或其他工厂方法之一)在您的控制器/ servlet的初始化方法的Executor
创建。 - 当请求时,包裹邮件发送逻辑在
java.lang.Runnable
- 提交
Runnable
到Executor
这将在后台执行的发送。请记得在启动时创建一个Executor,并在所有请求之间共享;不要每次都创建一个新的Executor(你可以,但会有点慢和浪费)。
答
我找到了出路。这些标签
@PostConstruct()
和
@PreDestroy()
创建2种方法,在你的servlet返回void并接受任何参数。 将第一个标记放置在第一个方法的正上方,将第二个标记放置在第二个标记的上方。
的标签
的@PostConstruct方法由容器之前实现类开始响应Web服务客户端称为Essense。
@PreDestroy方法在端点从操作中移除之前由容器调用。
在PostConstruction()方法中,使用runnable接口创建线程,并使其运行在无限循环中,除非某个布尔变量的值为false。
使用PreDestroy()方法将布尔变量设置为false。
这应该是j.u.c.Executors.newCachedThreadPool(带有s),但除此之外:同意 – WMR 2009-07-28 14:22:49