﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-细心!用心!耐心!-文章分类-任务调度器</title><link>http://www.blogjava.net/jesson2005/category/19861.html</link><description>吾非文人，乃市井一俗人也，读百卷书，跨江河千里，故申城一游； 
一两滴辛酸，三四年学业，五六点粗墨，七八笔买卖，九十道人情。</description><language>zh-cn</language><lastBuildDate>Sat, 24 Mar 2007 22:43:13 GMT</lastBuildDate><pubDate>Sat, 24 Mar 2007 22:43:13 GMT</pubDate><ttl>60</ttl><item><title>如何利用Spring中任务执行器</title><link>http://www.blogjava.net/jesson2005/articles/98541.html</link><dc:creator>张金鹏</dc:creator><author>张金鹏</author><pubDate>Wed, 07 Feb 2007 03:23:00 GMT</pubDate><guid>http://www.blogjava.net/jesson2005/articles/98541.html</guid><wfw:comment>http://www.blogjava.net/jesson2005/comments/98541.html</wfw:comment><comments>http://www.blogjava.net/jesson2005/articles/98541.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jesson2005/comments/commentRss/98541.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jesson2005/services/trackbacks/98541.html</trackback:ping><description><![CDATA[
		<p>-----------&gt;Spring配置文件的参考:<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "<a href="http://www.springframework.org/dtd/spring-beans.dtd">http://www.springframework.org/dtd/spring-beans.dtd</a>"&gt;</p>
		<p>&lt;beans&gt;<br />    &lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"&gt;<br />  &lt;property name="driverClassName"&gt;<br />   &lt;value&gt;${jdbc.driverClassName}&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="url"&gt;<br />   &lt;value&gt;${jdbc.url}&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="username"&gt;<br />   &lt;value&gt;${jdbc.username}&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="password"&gt;<br />   &lt;value&gt;${jdbc.password}&lt;/value&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br />    &lt;bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"&gt;<br />  &lt;property name="locations"&gt;<br />   &lt;list&gt;<br />    &lt;value&gt;classpath:/config/jdbc.properties&lt;/value&gt;<br />    &lt;value&gt;classpath:/config/customer.properties&lt;/value&gt;<br />   &lt;/list&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;bean id="ftpHandle" class="com.stt.dosp.datacollect.remote.FtpHandle"<br />  abstract="false" singleton="true" lazy-init="default"<br />  autowire="default" dependency-check="default"&gt;<br />  &lt;property name="server"&gt;<br />   &lt;value type="java.lang.String"&gt;${ftp.ip}&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="user"&gt;<br />   &lt;value type="java.lang.String"&gt;${ftp.user}&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="password"&gt;<br />   &lt;value type="java.lang.String"&gt;${ftp.password}&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="remotePath"&gt;<br />   &lt;value type="java.lang.String"&gt;${ftp.remotePath}&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="localPath"&gt;<br />   &lt;value type="java.lang.String"&gt;${ftp.localPath}&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="temp"&gt;<br />   &lt;value type="java.lang.String"&gt;${ftp.temp}&lt;/value&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;bean id="fileHandle"<br />  class="com.stt.dosp.datacollect.local.FileHandle" abstract="false"<br />  singleton="true" lazy-init="default" autowire="default"<br />  dependency-check="default"&gt;<br />  &lt;property name="ftpHandle"&gt;<br />   &lt;ref bean="ftpHandle" /&gt;<br />  &lt;/property&gt;<br />  &lt;property name="batchSize"&gt;<br />   &lt;value type="java.lang.Long"&gt;${local.batch}&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="backupDir"&gt;<br />   &lt;value type="java.lang.String"&gt;${local.backup}&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="doubleNameFix"&gt;<br />   &lt;value type="java.lang.String"&gt;<br />    ${local.double.name.fix}<br />   &lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="insertSQL"&gt;<br />   &lt;value type="java.lang.String"&gt;${db.insert}&lt;/value&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;bean id="connectFtpServerTask"<br />  class="com.stt.dosp.datacollect.schedule.ConnectFtpServerTask"<br />  abstract="false" singleton="true" lazy-init="default"<br />  autowire="default" dependency-check="default"&gt;<br />  &lt;property name="ftpHandle"&gt;<br />   &lt;ref bean="ftpHandle" /&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br />    <br />    &lt;bean id="collectLocalTask"<br />  class="com.stt.dosp.datacollect.schedule.CollectLocalTask"<br />  abstract="false" singleton="true" lazy-init="default"<br />  autowire="default" dependency-check="default"&gt;<br />  &lt;property name="fileHandle"&gt;<br />   &lt;ref bean="fileHandle" /&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;bean id="ftpConnectCheck" class="org.springframework.scheduling.timer.ScheduledTimerTask"&gt;<br />  &lt;property name="timerTask"&gt;<br />   &lt;ref bean="connectFtpServerTask" /&gt;<br />  &lt;/property&gt;<br />  &lt;property name="period"&gt;<br />   &lt;value&gt;${ftp.task.period}&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="delay"&gt;<br />   &lt;value&gt;${ftp.task.delay}&lt;/value&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;bean id="localFileCheck" class="org.springframework.scheduling.timer.ScheduledTimerTask"&gt;<br />  &lt;property name="timerTask"&gt;<br />   &lt;ref bean="collectLocalTask" /&gt;<br />  &lt;/property&gt;<br />  &lt;property name="period"&gt;<br />   &lt;value&gt;${local.task.period}&lt;/value&gt;<br />  &lt;/property&gt;<br />  &lt;property name="delay"&gt;<br />   &lt;value&gt;${local.task.delay}&lt;/value&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;bean id="timerBean" class="org.springframework.scheduling.timer.TimerFactoryBean"&gt;<br />  &lt;property name="scheduledTimerTasks"&gt;<br />   &lt;list&gt;    <br />    &lt;ref bean="ftpConnectCheck" /&gt;<br />    &lt;ref bean="localFileCheck" /&gt;<br />   &lt;/list&gt;<br />  &lt;/property&gt;<br /> &lt;/bean&gt;<br /> <br /> &lt;/beans&gt;<br /><br /><br /><br /><br />---------&gt;启动类参考:<br />/**<br /> * 启动类<br /> * @author zhangjp<br /> * @version 1.0<br /> */<br />public class StartMain {</p>
		<p> /**<br />  * @param args<br />  */<br />  public static void main(String[] args) {<br />   /*<br />  只需要初始化一个taskBean就可以加载ScheduledTimerTask任务队列<br />   "&lt;list&gt;    <br />       &lt;ref bean="ftpConnectCheck" /&gt;<br />        &lt;ref bean="localFileCheck" /&gt;<br />      &lt;/list&gt;"<br />    里的所有任务<br />  */<br />   SpringBeanFactory.getBean("connectFtpServerTask");  <br />   do{<br />         try {<br />                Thread.sleep(1000); <br />   //因为main类是一个进程,所以要使main不退出,加一个阻塞<br />   //(使用Thread.sleep(1000); 或者Timer timer = new Timer();都可以)<br />           } catch (InterruptedException e) {<br />                // TODO Auto-generated catch block<br />                   e.printStackTrace();<br />           }<br />   }while(true);<br /> <br /> }</p>
		<p>}<br /><br /><br />----------&gt;运行启动类(可以编写各个平台的shell脚本,如 ".bat" ".sh"文件)<br />.bat脚本参考(windows):-----&gt;<br />@Echo Off<br />title dosp_collect</p>
		<p>If %1.==CPGEN. GoTo :CPGEN</p>
		<p>Rem ============= CLASSPATH ===================<br />Echo Generating classpath ...<br />Set CLASSPATH=<br />For %%X in (dospcollect-lib/*.jar) Do Call %0 CPGEN dospcollect-lib\%%X<br />For %%X in (common-lib/*.jar) Do Call %0 CPGEN common-lib\%%X</p>
		<p>Rem ============= START DOSP COLLECT SERVER ===================<br />Echo Starting Dosp Collect Server ...<br />java  -Xms128m -Xmx256m  -classpath %CLASSPATH% com.stt.dosp.datacollect.startup.StartMain<br />GoTo :END</p>
		<p>Rem ============= CLASSPATH HELP ===================<br />Rem This target is used to concatenate the classpath parts <br />:CPGEN<br />Set CLASSPATH=%CLASSPATH%;%2</p>
		<p>Rem ============= END ===================<br />Rem Target needed to jump to the end of the file<br />:END<br /><br /><br />.sh脚本参考(linux/unix)-----&gt;<br />#!/bin/bash</p>
		<p># don't run  DOSP COLLECT Server as root<br />if [ $UID -eq 0 ] ; then<br /> echo<br /> echo "For security reasons you should not run this script as root!"<br /> echo<br /> exit 1<br />fi </p>
		<p># go to current directory<br />cd `dirname $0`/..</p>
		<p># defining some variables<br />COMMON_LIB="common-lib"<br />DOSP_LIB="dospcollect-lib"</p>
		<p># generating the proper classpath<br />echo "Generating classpath ..."<br />CLASSPATH=""<br />for N in $COMMON_LIB/*.jar; do CLASSPATH="$CLASSPATH$N:"; done <br />for N in $DOSP_LIB/*.jar; do CLASSPATH="$CLASSPATH$N:"; done </p>
		<p># startup  DOSP COLLECT Server<br />echo "Starting  Dosp-Collect Server ..."<br />java  -Xms128m -Xmx256m -classpath $CLASSPATH com.stt.dosp.datacollect.startup.StartMain<br /></p>
<img src ="http://www.blogjava.net/jesson2005/aggbug/98541.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jesson2005/" target="_blank">张金鹏</a> 2007-02-07 11:23 <a href="http://www.blogjava.net/jesson2005/articles/98541.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>