Squ*_*Cog 60 java multithreading tomcat
我对Tomcat不是很熟悉,在我看来它基本上被抽象为cgi服务器,可以在调用之间保存JVM - 我知道它可以做更多的事情.
我正在寻找一种在Tomcat服务器启动时启动后台线程的方法,它会定期更新服务器上下文(在我的特定情况下,这是一个从其他服务中侦听心跳并更新可用性信息的线程,但可以想象各种用途).
有没有标准的方法来做到这一点?上下文的启动和更新/查询?
任何指向相关文档和/或代码示例的指针都将非常感激.
Chr*_*ill 79
如果要在部署WAR时启动线程,可以在web.xml中定义上下文侦听器:
<web-app>
<listener>
<listener-class>com.mypackage.MyServletContextListener</listener-class>
</listener>
</web-app>
Run Code Online (Sandbox Code Playgroud)
然后实现那样的类:
public class MyServletContextListener implements ServletContextListener {
private MyThreadClass myThread = null;
public void contextInitialized(ServletContextEvent sce) {
if ((myThread == null) || (!myThread.isAlive())) {
myThread = new MyThreadClass();
myThread.start();
}
}
public void contextDestroyed(ServletContextEvent sce){
try {
myThread.doShutdown();
myThread.interrupt();
} catch (Exception ex) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
Thi*_*ilo 12
我正在寻找一种在Tomcat服务器启动时启动后台线程的方法
我想您正在寻找一种在Tomcat启动Web应用程序时启动后台线程的方法.
这可以使用ServletContextListener完成.它在web.xml中注册,并在您的应用程序启动或停止时调用.然后,您可以使用常规Java方法创建(并稍后停止)您的Thread,以创建一个Thread(或ExecutionService).
小智 5
把<load-on-startup>1</load-on-startup>在<servlet>在web.xml块将迫使你的servlet的init()为Tomcat启动时,就会立即发生,而不是等待到达的第一条请求.如果要从中生成后台线程,这非常有用init().
| 归档时间: |
|
| 查看次数: |
41314 次 |
| 最近记录: |