一般我們要建立工作排程,依執行的目的,可以利用window系統本身執行執行檔或資料庫
SQL Server執行SQL語法。以我現在想做的目的是在tomcat環境下執行SQL語法,不過由於
環境不是我在管的,因此要設定window系統來執行的話,還得一台一台設或教對方設,實
在有點麻煩;再者,若直接以SQL Server系統排程來執行SQL語法雖然也OK,但是這個系
統有很多單位各自都有架設,等於每個點的SQL Server本身都要設定。到後來,還是以更動
到自身的程式來完成此一目的,交付給對方時好比平常更新程式一樣簡單,也不用設定!
一、設定web.xml
請在web.xml內設定您要執行的servlet,它得在tomcat重新啟用時去執行,因此您可以如下
設定
在這一支設定檔內,請注意load-on-startup標籤,設了這個標籤之後,表示當tomcat一起用時
,就會去執行該servlet設定對應到的程式!
二、Servlet
這一支程式扮演的角色是,透過tomcat的執行,我會請他再去執行一支繼承Java timertask的
程式,如此一來就會處於等待的情況下去執行該支程式!
語法如下:
使用java.util.Timer與java.util.Calender來控管哪時要執行ExecSQL class!
PS. 24*60*60*1000表示為多久的區間(以毫秒表示之)
三、ExecSQL class
要透過timer來執行該支class,得先對該class做extends java.util.TimerTask,如下:
請將您要執行的動作包在run method內!
如此一來,簡單的tomcat排程就此達成,算是一層一層的設定下才可以完成地!
雖然比起設定SQL Server來執行語法來的繁瑣,但是起碼不用到對方的環境去做設定!
SQL Server執行SQL語法。以我現在想做的目的是在tomcat環境下執行SQL語法,不過由於
環境不是我在管的,因此要設定window系統來執行的話,還得一台一台設或教對方設,實
在有點麻煩;再者,若直接以SQL Server系統排程來執行SQL語法雖然也OK,但是這個系
統有很多單位各自都有架設,等於每個點的SQL Server本身都要設定。到後來,還是以更動
到自身的程式來完成此一目的,交付給對方時好比平常更新程式一樣簡單,也不用設定!
一、設定web.xml
請在web.xml內設定您要執行的servlet,它得在tomcat重新啟用時去執行,因此您可以如下
設定
<servlet>
<description>When tomcat start then timer schedule work.</description>
<display-name>TimeServlet</display-name>
<servlet-name>TimeServlet</servlet-name>
<servlet-class>com.util.TimeServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
....
<servlet-mapping>
<servlet-name>TimeServlet</servlet-name>
<url-pattern>/TimeServlet</url-pattern>
</servlet-mapping>
在這一支設定檔內,請注意load-on-startup標籤,設了這個標籤之後,表示當tomcat一起用時
,就會去執行該servlet設定對應到的程式!
二、Servlet
這一支程式扮演的角色是,透過tomcat的執行,我會請他再去執行一支繼承Java timertask的
程式,如此一來就會處於等待的情況下去執行該支程式!
語法如下:
private final Timer timer = new Timer();
public void init(ServletConfig config) throws ServletException {
super.init(config);
//每天23:55:50
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 55);
c.set(Calendar.SECOND, 50);
timer.schedule(new ExecSQL(), c.getTime(), 24*60*60*1000);
logger.info("啟動清空某SQL table's排程");
}
使用java.util.Timer與java.util.Calender來控管哪時要執行ExecSQL class!
PS. 24*60*60*1000表示為多久的區間(以毫秒表示之)
三、ExecSQL class
要透過timer來執行該支class,得先對該class做extends java.util.TimerTask,如下:
public class ExecSQL extends TimerTask{
....
public void run() {
//實際要執行的動作
}
}
請將您要執行的動作包在run method內!
如此一來,簡單的tomcat排程就此達成,算是一層一層的設定下才可以完成地!
雖然比起設定SQL Server來執行語法來的繁瑣,但是起碼不用到對方的環境去做設定!
留言
張貼留言