2009-07-28 111 views
1

我有一个tomcat 6.20实例正在运行,并且想通过后台线程发送邮件来阻止邮件发送功能阻止请求。tomcat后台线程

有什么办法可以在后台执行线程,同时仍然允许正常的页面流发生。

该应用程序是用ICEfaces编写的。

谢谢。

回答

3
  1. 使用java.util.concurrent.Executors.newCachedThreadPool(或其他工厂方法之一)在您的控制器/ servlet的初始化方法的Executor创建。
  2. 当请求时,包裹邮件发送逻辑在java.lang.Runnable
  3. 提交RunnableExecutor

这将在后台执行的发送。请记得在启动时创建一个Executor,并在所有请求之间共享;不要每次都创建一个新的Executor(你可以,但会有点慢和浪费)。

+0

这应该是j.u.c.Executors.newCachedThreadPool(带有s),但除此之外:同意 – WMR 2009-07-28 14:22:49

0

我找到了出路。这些标签

@PostConstruct() 

@PreDestroy() 

创建2种方法,在你的servlet返回void并接受任何参数。 将第一个标记放置在第一个方法的正上方,将第二个标记放置在第二个标记的上方。

的标签

的@PostConstruct方法由容器之前实现类开始响应Web服务客户端称为Essense。

@PreDestroy方法在端点从操作中移除之前由容器调用。

在PostConstruction()方法中,使用runnable接口创建线程,并使其运行在无限循环中,除非某个布尔变量的值为false。

使用PreDestroy()方法将布尔变量设置为false。