資訊首頁要1個小時靜態化一次,之前做法很齷齪,今天用了spring中來配置quartz。看一下簡單例子吧:
- <!-- quartz配置 -->
- <bean id="indexTask" class="com.tsts168.sunyanan.app.index.support.IndexTask"></bean>
- <!-- 定義調用對象和調用對象的方法 -->
- <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
- <!-- 調用的類 -->
- <property name="targetObject">
- <ref bean="indexTask"/>
- </property>
- <!-- 調用類中的方法 -->
- <property name="targetMethod">
- <value>run</value>
- </property>
- <property name="concurrent" value="false" />
- </bean>
- <!-- 定義觸發時間 -->
- <bean id="doTime" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
- <property name="jobDetail">
- <ref bean="jobtask"/>
- </property>
- <!-- repeat every 1小時 3600000 -->
- <property name="repeatInterval" value="3600000" />
- </bean>
- <!-- 總管理類 如果將lazy-init='false'那麼容器啟動就會執行發送器 -->
- <bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
- <property name="triggers">
- <list>
- <ref bean="doTime"/>
- </list>
- </property>
- </bean>
- package com.tsts168.sunyanan.app.index.support;
- import java.util.Date;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import com.tsts168.sunyanan.app.common.util.HtmlUtil;
- import com.tsts168.sunyanan.app.index.manager.IndexManager;
- /*
- * 首頁2小時產生一次的調度
- *
- */
- public class IndexTask {
- private Log log = LogFactory.getLog(IndexTask.class);
-
- @SuppressWarnings("deprecation")
- public void run() {
-
- // 產生靜態頁面
- ApplicationContext scontext = new ClassPathXmlApplicationContext("applicationContext.xml");
- IndexManager manager = (IndexManager) scontext.getBean("indexManager");
- Object obj = manager.service(null);
- HtmlUtil hutil = new HtmlUtil();
-
- hutil.writeIndexHtml(System.getProperty("tsts.root") + "/template", System.getProperty("tsts.root"), obj);
- log.warn("產生首頁at: " + (new Date()).toLocaleString());
- }
- }
就不多做介紹了,很明了