Tomcat不影响启动时间 启动完成后执行一个操作的实现方法

11 篇文章 0 订阅
6 篇文章 0 订阅
关于Tomcat启动后台服务时候,在不影响启动时间的情况下,启动完成执行一个操作

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

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

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

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

@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
// TODO Auto-generated method stub
}

public void executeA() throws JobExecutionException {
// TODO Auto-generated method stub
.........
}

Spring配置文件中配置的任务

<bean id="initJob" class="com.xxx.services.InitJob" />
<!--定时器任务配置(开始)-->
<!--配置JOB-->
<bean id="initJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="initJob" />
<property name="targetMethod" value="executeA" />
<!-- <property name="arguments" /> -->
</bean>
<!--配置Trigger-->
<bean id="initTrigger"
class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="initJobDetail" />
<property name="startDelay" value="1000" />
<property name="repeatInterval" value="0" />
<property name="repeatCount" value="0" />
</bean>
<!--配置Scheduler-->
<bean id="schedulerFactory"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean" autowire="no">
<property name="triggers">
<list>
<ref bean="initTrigger" />
</list>
</property>
<property name="autoStartup" value="true"/>
</bean>
<!--定时器任务配置(结束)-->

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

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

另外,再记录一个关于Quartz两种配置JobDetail的方法,直接在代码中创建JobDetail,会无法注入相应的接口实现,在稍后的博客中介绍
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值