springプロファイルで構成されているタイマを手動で変更および起動します.


1、業務処理クラスの作成
 
public class TaskTestAction
{
    public void run()
    {
        System.out.println(" ");
    }
}

 
2、springプロファイルにタイマーを配置する
 
<!--   -->
	<bean id="testTask" class="com.wkx.warning.controller.TaskTestAction"></bean>
	
	<!--   -->
	<bean id="testDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject">
			<ref bean="testTask" />
		</property>
		<property name="targetMethod">
			<value>run</value>
		</property>
	</bean>
	
	<!--  ,  -->
	<bean id="testTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
		<property name="jobDetail">
			<ref bean="testDetail" />
		</property>
		<!--  ,  -->
		<property name="repeatInterval">
			<value>5000</value>
		</property>
	</bean>
	<!--   -->
	<bean id="testScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref local="testTrigger" />
			</list>
		</property>
		<property name="autoStartup" value="false"/>
		<property name="quartzProperties">
			<props>
				<prop key="org.quartz.threadPool.threadCount">2</prop>
			</props>
		</property>
	</bean>
	
	<!-- MAP ,  -->
	<bean name="testMap" class="java.util.HashMap">
		<constructor-arg>
			<map>
				<entry key="testScheduler" value-ref="testScheduler" />
			</map>
		</constructor-arg>
	</bean>

 
3、controllerコードでmapオブジェクトを取得し、タイマ情報を変更して起動する
 
// scheMap spring 
Scheduler std = scheMap.get("testScheduler");
//  
SimpleTrigger t = (SimpleTrigger)std.getTrigger("testTrigger", Scheduler.DEFAULT_GROUP);
//  
t.setRepeatInterval(10000);
//  
std.rescheduleJob("testTrigger", Scheduler.DEFAULT_GROUP, t);
std.start();

注意:以上のscheMapはプロファイルから取得され、spring注入により取得できます.たとえば、
 
@Resource(name = "testMap")
 private Map<String, Scheduler> scheMap;

スプリングプロファイルを自分で読み込むこともできます
 
ApplicationContext ac = new FileSystemXmlApplicationContext("D:/apache-tomcat-7.0.25/webapps/ManageSystem/WEB-INF/conf/applicationContext.xml");
Map<String, StdScheduler> scheMap = (Map<String, StdScheduler>)ac.getBean("testMap");