在J2EE中,web應用總有定時更新數據或者緩存的時候,除了spring中用的quartz 外還有線程方式,可能很少被關注.package com.dtserver.client.listener; import java.util.Timer; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; /** DTServer各種線程與定時任務的啓動 */ public class ServerSocketListener implements ServletContextListener { //定時 private Timer timer; //在服務器啓動時,啓動服務器線程。 try { interval = Integer.valueOf(XmlUtil.getScanDtDataInterval()) * 60000;//三分鐘一次 //interval = 30000; } catch (Exception exception) { interval = 3 * 60000; } timer.schedule(new SendData(), 0, interval); } }被調用的類
package com.dtserver.client.logic;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import java.util.TimerTask;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class SendData extends TimerTask {
private static final Log log = LogFactory.getLog(SendData.class);
private static final String ASURA_FILE_NAME = "/config/webservice_url.properties";
private final static Properties props;
static {
props = new Properties();
try {
props.load(WebFrameAction.class
.getResourceAsStream(XXX));
} catch (IOException e) {
throw new RuntimeException("can't load systemconfig.properties", e);
}
}
@SuppressWarnings("unchecked")
@Override
public void run() {
log.info("開始上傳的時間" + new Date());
}
}
web.xml
要想在web項目中啓動必須在這裏配入口.
<!--服務器啓動時,啓動服務器線程-->
<listener>
<description>Socket服務器線程隨服務器啓動而啓動</description>
<listener-class>com.dtserver.client.listener.ServerSocketListener</listener-class>
</listener>
看效果去