最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JCrontab簡單入門實(shí)例詳解

 更新時(shí)間:2017年12月14日 11:05:11   作者:易雪寒  
這篇文章主要為大家詳細(xì)介紹了JCrontab簡單入門實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了JCrontab簡單入門,供大家參考,具體內(nèi)容如下

創(chuàng)建一個(gè)JavaWeb項(xiàng)目

1、首先要下載JCrontab的相關(guān)jar包,Jcrontab-2.0-RC0.jar。放到lib文件夾下。

 

2、在src下新建文件jcrontab.properties如下:

 #crontab.xml

文件的目錄,這個(gè)是作業(yè)調(diào)度規(guī)則
org.jcrontab.data.file =E:/EclipseWorkspace/ADemo/WebContent/WEB-INF/crontab.xml
#sax解析驅(qū)動(dòng)類型
org.xml.sax.driver=org.apache.xerces.parsers.SAXParser
#datasource文件類型
org.jcrontab.data.datasource=org.jcrontab.data.XMLSource 

3、在WEB-INF下新建文件crontab.xml

 

<?xml version="1.0" encoding="utf-8"?>
<crontab>
<crontabentry id="2014">
<seconds>0,5,10,15,20,25,30,35,40,45,50,55</seconds>
<minutes>*</minutes>
<hours>*</hours>
<daysofmonth>*</daysofmonth>
<months>*</months>
<daysofweek>*</daysofweek>
<years>*</years>
<bussinesdays>true</bussinesdays>
<startDate></startDate>
<endDate></endDate>
<class>xu.crontab.Crontab1</class>
<method>run</method>
<parameters></parameters>
<description></description>
</crontabentry>
</crontab>

以上屬性自己百度一下,<seconds>0,5,10,15,20,25,30,35,40,45,50,55</seconds>這個(gè)是秒數(shù)是5的倍數(shù)就調(diào)用作業(yè) 

4、web.xml配置如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>ADemo</display-name>
 
<servlet>
<servlet-name>LoadOnStartupServlet</servlet-name>
<servlet-class>xu.crontab.LoadCrontabServlet</servlet-class>
<init-param>
<param-name>PROPERTIES_FILE</param-name>
<!--此處路徑是絕對(duì)路徑 -->
<param-value>E:\EclipseWorkspace\ADemo\src\jcrontab.properties</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>LoadOnStartupServlet</servlet-name>
<url-pattern>/Startup</url-pattern>
</servlet-mapping>
</web-app>

5、在xu.crontab包下新建兩個(gè)java文件(文件位置見最上的截圖)【其他java文件不用理會(huì)】

 

LoadCrontabServlet.java

package xu.crontab;
 
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
 
import org.jcrontab.Crontab;
import org.jcrontab.log.Log;
 
public class LoadCrontabServlet extends HttpServlet {
 
/**
 *
 */
private static final long serialVersionUID = 1L;
private Crontab cron = null;
 
public void init(ServletConfig config) throws ServletException {
super.init(config);
 
try {
System.out.print("Working?...");
process();
System.out.println("OK");
} catch (Exception e) {
throw new ServletException(e);
}
}
 
protected InputStream createPropertiesStream(String name) throws IOException {
return new FileInputStream(name);
}
 
public void process() {
 
String propz = "jcrontab.properties";
 
String props = getServletConfig().getInitParameter("PROPERTIES_FILE");
if (props == null) {
props = propz;
}
 
Properties propObj = new Properties();
try {
InputStream input = createPropertiesStream(props);
propObj.load(input);
} catch (IOException ioe) {
ioe.printStackTrace();
}
ServletConfig c = getServletConfig();
Enumeration keys = c.getInitParameterNames();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
propObj.setProperty(key, c.getInitParameter(key));
}
 
cron = Crontab.getInstance();
 
try {
ShutdownHook();
cron.init(propObj);
} catch (Exception e) {
Log.error(e.toString(), e);
}
}
 
 
public void ShutdownHook() throws Exception {
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
doStop();
}
});
}
 
public void destroy() {
doStop();
}
 
public void doStop() {
Log.info("Shutting down...");
cron.uninit(100);
Log.info("Stoped");
}
}
 

Crontab1.java

package xu.crontab;
 
import java.util.Date;
 
public class Crontab1 {
  public static void run(String[] args) {
    System.out.println(new Date()+"-----> hello world!!!");
  }
}

啟動(dòng)tomcat后即可看到作業(yè)每隔5秒就調(diào)用一下,希望你們順利。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot?異步線程間傳遞上下文方式

    SpringBoot?異步線程間傳遞上下文方式

    這篇文章主要介紹了SpringBoot?異步線程間傳遞上下文方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java數(shù)組遍歷 刪除remove(示例代碼)

    java數(shù)組遍歷 刪除remove(示例代碼)

    java數(shù)組遍歷 刪除remove。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-10-10
  • Java實(shí)現(xiàn)視頻自定義裁剪功能

    Java實(shí)現(xiàn)視頻自定義裁剪功能

    這篇文章主要介紹了如何通過java實(shí)現(xiàn)視頻裁剪,可以將視頻按照自定義尺寸進(jìn)行裁剪,文中的示例代碼簡潔易懂,感興趣的可以了解一下
    2022-01-01
  • SpringBoot項(xiàng)目中公共字段填充的實(shí)現(xiàn)

    SpringBoot項(xiàng)目中公共字段填充的實(shí)現(xiàn)

    本文主要介紹了SpringBoot項(xiàng)目中公共字段填充的實(shí)現(xiàn),利用SpringBoot的Aop思想和自定義注解和反射機(jī)制的方法來實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • SpringSecurity+JWT實(shí)現(xiàn)前后端分離的使用詳解

    SpringSecurity+JWT實(shí)現(xiàn)前后端分離的使用詳解

    這篇文章主要介紹了SpringSecurity+JWT實(shí)現(xiàn)前后端分離的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 一文解析Java中的方法重寫

    一文解析Java中的方法重寫

    子類繼承父類后,可以在子類中書寫一個(gè)與父類同名同參的方法,從而實(shí)現(xiàn)對(duì)父類中同名同參數(shù)的方法的覆蓋,我們把這一過程叫做方法的重寫。本文將分析一下Java中的方法重寫,感興趣的可以了解一下
    2022-07-07
  • java讀取html文件,并獲取body中所有的標(biāo)簽及內(nèi)容的案例

    java讀取html文件,并獲取body中所有的標(biāo)簽及內(nèi)容的案例

    這篇文章主要介紹了java讀取html文件,并獲取body中所有的標(biāo)簽及內(nèi)容的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Spring Cloud Feign內(nèi)部實(shí)現(xiàn)代碼細(xì)節(jié)

    Spring Cloud Feign內(nèi)部實(shí)現(xiàn)代碼細(xì)節(jié)

    Feign 的英文表意為“假裝,偽裝,變形”, 是一個(gè)http請(qǐng)求調(diào)用的輕量級(jí)框架,可以以Java接口注解的方式調(diào)用Http請(qǐng)求,而不用像Java中通過封裝HTTP請(qǐng)求報(bào)文的方式直接調(diào)用。接下來通過本文給大家分享Spring Cloud Feign內(nèi)部實(shí)現(xiàn)代碼細(xì)節(jié),感興趣的朋友一起看看吧
    2021-05-05
  • SpringBoot項(xiàng)目如何把接口參數(shù)中的空白值替換為null值(推薦)

    SpringBoot項(xiàng)目如何把接口參數(shù)中的空白值替換為null值(推薦)

    這篇文章主要介紹了SpringBoot項(xiàng)目如何把接口參數(shù)中的空白值替換為null值(推薦),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 1小時(shí)快速上手RabbitMQ(簡介及安裝過程)

    1小時(shí)快速上手RabbitMQ(簡介及安裝過程)

    RabbitMQ簡稱MQ全稱是Message Queue(消息隊(duì)列),是在消息的傳輸過程中保存消息的容器,多用于分布式系統(tǒng)之間進(jìn)行通信,本文給大家講解了RabbitMQ簡介與安裝,結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友跟隨小編一起看看吧
    2023-01-01

最新評(píng)論

长治县| 富蕴县| 蕉岭县| 旅游| 乐至县| 辛集市| 榆社县| 独山县| 济宁市| 株洲市| 涿鹿县| 阳东县| 固阳县| 水城县| 泽州县| 池州市| 冀州市| 墨脱县| 清河县| 遂川县| 高陵县| 阳原县| 尤溪县| 鄯善县| 凉城县| 穆棱市| 舞钢市| 五华县| 鲁甸县| 同德县| 淮阳县| 石渠县| 册亨县| 永胜县| 洱源县| 兴仁县| 贵州省| 永兴县| 鹤山市| 新野县| 讷河市|