Springタイマ

2707 ワード

Javaアプリケーションの形式でローカル開発環境でタイミングプログラムを実行する:

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

以上のコードをmainメソッドに置けばよい,comと仮定する.liaofeng.ScheduleQuartzクラスのmainメソッド.
上はアプリケーションを起動するだけですが、タイミングプログラムはBeanとしてSpringのプロファイルアプリケーションContextに構成されています.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ディレクトリは、log 4 jなどのプロファイルを配置するために使用される.propertiesとアプリケーションContext.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&,ここでは&で終わり,プログラムが1回実行されると終了し,実行されるのを防止する.ただし、この&の存在により、初回起動時にエラーが報告されても、コマンドラインに起動時のエラー情報が印刷されない場合がありますので、初回実行時にこの&を持たず、プログラムデバッグが通過した後に&を加えることをお勧めします.