读书人

Tomcat不影响启动时间 起动完成后执行

发布时间: 2013-02-24 17:58:56 作者: rapoo

Tomcat不影响启动时间 启动完成后执行一个操作的实现方法
关于Tomcat启动后台服务时候,在不影响启动时间的情况下,启动完成执行一个操作

主要思路是对后台进行一些初始化操作
但是,有可能初始化操作的时间长度是不可控的,甚至可能是在循环的操作
所以试过了如下方法是不太合适的
如:
1.配置一个Servlet默认自动启动
2.配置一个Listener来启动
3.实现Spring的InitializingBean接口
但是,这三种方法,都是伴随着Tomcat来启动的,也就是占用Tomcat的启动时间

以上是伴随启动的方法
以下是不影响Tomcat启动的并行方法

其实考虑到伴随启动,就想到了Flex开发通常用到的异步调用
无非就是新创建了一个线程来单独执行,这样Tomcat执行到相应的操作就可以直接继续下去了,不会处于等待的状态,避免了启动超时

具体思路如下
1.创建新的线程去执行(本方法没有实际实验,本文记录的是第二种方法,使用Quartz)
2.使用Quartz来配置一个任务执行
具体配置如下
实现Job接口的任务实现类


以上的配置不详细说明了,不明白意思的属性可以去API文档中查询
http://www.quartz-scheduler.org/api/1.8.5/

这里需要注意的一点就是Job的实现,是必须重写execute方法的,可是我反复实验,在targetMethod的value中写execute,就会报错,找不到execute方法,后来想了想,可能是参数的问题
copy了原来的方法,于是去掉了参数,就好用了
----------------------------

另外,再记录一个关于Quartz两种配置JobDetail的方法,直接在代码中创建JobDetail,会无法注入相应的接口实现,在稍后的博客中介绍

读书人网 >软件架构设计

热点推荐