`
liaofeng_xiao
  • 浏览: 126135 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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程序:
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


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

相关推荐

Global site tag (gtag.js) - Google Analytics