jcrontab 目前有提供存取文件或数据库,把执行结果寄发 email,简单地设置在 Tomcat,Resin,Jetty 及 JBoss 之上,更是可以取代 cron 单独去执行,也提供了良好的效能 ^^~
下载位置 jcrontab on sourceforge.net
基本上,我拿放在 tomcat 的例子来解释,在 web.xml 中设置
<!-- This is the loadOnStartupServlet in order to launch jcrontab with the application server --> <servlet> <servlet-name>LoadOnStartupServlet</servlet-name> <servlet-class>org.jcrontab.web.loadCrontabServlet</servlet-class> <!-- can overwrite the parameters from jcrontab.properties --> <!-- simply adding here the right parameters --> <init-param> <param-name>org.jcrontab.data.file</param-name> <param-value>c:/tomcat4/webapps/jcrontab/WEB-INF/jcrontab.properties</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- Mapping of the StartUp Servlet --> <servlet-mapping> <servlet-name>LoadOnStartupServlet</servlet-name> <url-pattern>/Startup</url-pattern> </servlet-mapping>
至于 jcrontab.properties 的设置,就可以决定你的 cron 的属性要去哪里取 crontab 资料
# 这是设置你的 crontab 数据来源 文件类 org.jcrontab.data.file = c:/tomcat4/webapps/jcrontab/WEB-INF/crontab org.jcrontab.data.datasource = org.jcrontab.data.FileSource org.jcrontab.Crontab.refreshFrequency = 3 # 这是设置你的 crontab 数据来源 数据库类 postgesql #org.jcrontab.data.GenericsqlSource.driver = org.postgresql.Driver #org.jcrontab.data.GenericsqlSource.url = jdbc:postgresql://yourmachine.jcrontab.org:5432/jcrontab # 这是设置你的 crontab 数据来源 数据库类 MysqL #org.jcrontab.data.GenericsqlSource.driver = org.gjt.mm.MysqL.Driver #org.jcrontab.data.GenericsqlSource.url = jdbc:MysqL://yourmachine.jcrontab.org:3306/jcrontab #org.jcrontab.data.GenericsqlSource.username = iolalla #org.jcrontab.data.GenericsqlSource.password = yourpassword #org.jcrontab.data.datasource = org.jcrontab.data.GenericsqlSource #org.jcrontab.data.GenericsqlSource.dbDataSource=yourDS # 这是设置你的 crontab 处理完要发信给谁 #org.jcrontab.sendMail.to=iolalla@yahoo.com #org.jcrontab.sendMail.from=jcrontab@yoursystem.com #org.jcrontab.sendMail.smtp.host=smtp.yahoo.com #org.jcrontab.sendMail.smtp.user= yourSMTPusername #org.jcrontab.sendMail.smtp.password=yourSMTPpassword # 这是设置你的 crontab Logger 模式 #org.jcrontab.log.Logger=jcrontabplugin.jEditLogger org.jcrontab.log.Logger=org.jcrontab.log.Log4JLogger org.jcrontab.log.log4J.Properties=c:/tomcat4/webapps/jcrontab/WEB-INF/log4j.properties #org.jcrontab.data.FileOpener=file # 这是设置你的 crontab 参考的假日文件 #org.jcrontab.data.holidaysource=org.jcrontab.data.HoliDayFileSource #org.jcrontab.data.holidaysfilesource={$HOME}.jcrontab/holidays #To change this plz refer to java.text.SimpleDateFormat #org.jcrontab.data.dateFormat=dd/MM/yyyy
至于,cron 这个文件设置的方法和 unix-like 的 crontab 文件是一样的,大家可以参考去查询,类似以下这样,代表每半小时,或奇数时候就会执行
30 1,3,5,7,9,11,13,15,17,19,21,23 * * * org.jcrontab.tests.TaskTest2 halfOddHours
如果要采用数据库,一定要建立 events 这个 table
CREATE TABLE events ( second VARCHAR(64) DEFAULT '0',minute VARCHAR(64) DEFAULT '*',hour VARCHAR(64) DEFAULT '*',dayofmonth VARCHAR(64) DEFAULT '*',month VARCHAR(64) DEFAULT '*',dayofweek VARCHAR(64) DEFAULT '*',year VARCHAR(64) DEFAULT '*',task VARCHAR(255),extrainfo VARCHAR(255),businessDays VARCHAR(6) DEFAULT 'true' );
当所有环境设置完成后,接著,你就可以在 web.xml 设置是否启动 jcrontab 帮你作工作排程,如果你没有设置 load-on-startup,可以通过手动启动 by /Startup,至于你要设置其它的,例如 email,也可以在 cron 那个文件处理一下 ^^~
原文链接:https://www.f2er.com/postgresql/196601.html