Spring定时程序

以Java Application的形式在本地开发环境运行定时程序:

PropertyConfigurator.configure(ScheduleQuartz.class.getClassLoader().getResource("config/log4j.properties"));
ContextManager.setContext(new ClassPathXmlApplicationContext("/config/applicationContext.xml"));

将以上代码置于main方法里即可,假设为com.liaofeng.ScheduleQuartz类的main方法。
上面只是启动应用程序,但定时程序做为Bean配置在Spring的配置文件applicationContext.xml里面:

<bean id="placeOrderJobBean" class="com.liaofeng.quartz.PlaceOrder">
<property name="placeOrderFace" ref="placeOrderFace"/>
</bean>

<bean id="qplaceOrderJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="placeOrderJobBean"/>
<property name="targetMethod" value="run"/>
<property name="concurrent" value="false"/>
</bean>
<bean id="placeOrderTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="qplaceOrderJob"/>
</property>
<property name="cronExpression">
<value>0 0/5 01-23 * * ?</value>
</property>
</bean>


这样,类com.liaofeng.quartz.PlaceOrder里的run()方法将从1点开始,每5分钟运行一次。

在Linux/Unix下部署此定时程序,假设目录结构如下:
placeOrder
|--config
|--lib
|--run.sh
config目录用于放置配置文件,比如log4j.properties和applicationContext.xml,lib下面则放置依赖的Jar包。一般,我们将上面的应用程序打包,放置在lib目录下。run.sh文件则用于启动定时程序。一般情况下我们使用java命令直接启动定时程序,但在程序依赖很多jar包的情况下,指定java命令的classpath参数就显得相当麻烦,这是我们可以使用shell脚本来完成这个工作,代替我们启动Java程序:
[code]
jarpath=""

for _FNAME in /appDir/placeOrder/lib/*.jar
do
jarpath=$jarpath:$_FNAME
done

CLASSPATH=$CLASSPATH:$jarpath
export CLASSPATH
echo -n $CLASSPATH

export PATH=/opt/java1.5/bin:$PATH

java -Xms128m -Xmx256m -XX:+UseGetTimeOfDay -classpath $CLASSPATH com.liaofeng.ScheduleQuartz &

exit 0
[/code]

注意java com.liaofeng.ScheduleQuartz &,这里以&结尾,防止程序运行完一次后就退出,有了&就是一直运行。但因为这个&的存在,第一次启动的时候即使报错,在命令行里也可能不打印启动时的错误信息,所以建议第一次运行时不带该&,等程序调试通过了再加上&。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值