JAVA程序定时运行_hanCSDN_20130424

1.建一个web工程。

2.建立一个Servlet类,并配置web.xml。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>wslyjk</display-name>
  <!-- 从接口获取网上留言 -->
  <servlet>
    <servlet-name>servletgetwsly</servlet-name>
    <servlet-class>com.zrar.servlet.ServletGetWsly</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  <servlet-name>servletgetwsly</servlet-name>
  <url-pattern>/servletgetwsly</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


 

3.ServletGetWsly类。
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zrar.wslyjk.service.GetWslyService;

/**
 * 外网留言数据导入
 */

public class ServletGetWsly extends HttpServlet{

	
	private static final long serialVersionUID = 1L;
	private static final String CONTENT_TYPE = "text/html; charset=GBK";
	
	
	@Override
	public void init() throws ServletException {
		int iInterval = 10;
        try {
            iInterval = Integer.valueOf(PropertyManager.getProperty("intervalTime")).
                intValue();
        }
        catch (Exception e) {
            System.out.println("参数[interval]设置错误,必须为整数");
            iInterval = 10;
        }
        
        GetWslyService getWsly = new GetWslyService(iInterval); //间隔 10 秒执行
        getWsly.start();

	}
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
        response.setContentType(CONTENT_TYPE);
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>ServletLuceneGateWay</title></head>");
        out.println("<body bgcolor=\"#ffffff\">");
        out.println("<p>The servlet has received a GET. This is the reply.</p>");
        out.println("</body></html>");
	}
	@Override
	public void destroy() {
	}	
}

4.GetWslyService类

import java.util.Timer;
import java.util.TimerTask;

import com.zrar.system.Log;

/**
 * 
 * @author hanjun
 * 功能:根据webservice地址获得外网留言数据,并存入12333数据库中
 *
 */
public class GetWslyService {
	
	private final Timer timer = new Timer(); //定时器
    private final int minutes; //间隔时间,单位为分钟

    /**
     * 构造函数
     * @param minutes int
     */
    public GetWslyService(int minutes) {
        this.minutes = minutes;
    }

    /**
     * 数据操作程序的入口
     * 定时器开始执行
     *
     */
    public void start() {
        timer.schedule(new TimerTask() {
            java.text.SimpleDateFormat formatter
                = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            public void run() {
                Log.print(formatter.format(new java.util.Date()) +
                          ":Timer Start.................................");
                startGetWslyService();
                Log.print(formatter.format(new java.util.Date()) +
                          ":Timer Stop.................................");
            }
        }

        , 0, minutes * 1000);
    }

    /**
     * 开始lucene导库网关
     */
    public void startGetWslyService() {
        Log.print("开始从远程Webservice导入数据...........................");
        try
        {
           //开始处理业务
        }catch(Exception e)
        {
            Log.print("导入数据异常...........................");
        }
        Log.print("结束导入数据...........................");
    }

}

总结:web项目的servlet可以在web工程被发布时就自启动,然后再调用其他类,主要通过java.util.timer类来定时执行程序。

增加可以控制什么时候启动的:

package com.zrar.test;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Test {
	
	private static int P_HOUR = 23;    //执行任务开始时间(时) 
	private static int P_MINUTE = 0;   //执行任务开始时间(分) 
	private static int P_SECOND = 0;   //执行任务开始时间(秒) 
	private static long delay;        //延时时间值(当前系统时间到下载时间之间的时间差毫秒数)
	public static void main(String[] args) {
		init();
	}
	/**  
	 * 初始化参数 
	 *  
	 * @return  
	*/ 
	public static void init(){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		//声明一个Calendar对象  
		Calendar cal = Calendar.getInstance();  
		//设置时间       
		cal.set(Calendar.HOUR_OF_DAY, P_HOUR);        
		cal.set(Calendar.MINUTE, P_MINUTE);        
		cal.set(Calendar.SECOND, P_SECOND);        
		Date date = new Date();        
		//获取设定的时间        
		date = cal.getTime();        
		//声明当前时间        
		Date now = new Date();        
		//获取设定的时间和当前的时间差(毫秒数)        
		long interval = date.getTime() - now.getTime();        
		//如果当前时间大于下载时间,则将下载时间设置为下一个下载时间        
		if (interval < 0) {            
			cal.add(Calendar.DAY_OF_MONTH, 1);//将天数加1            
			date = cal.getTime();            
			//获取设定的时间和当前的时间差(毫秒数)            
			interval = date.getTime() - now.getTime();        
			}               
		//初始化开始下载时间        
		delay = interval;//初始化当前时间到下载时间之间的时间差 
		}
	}




 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值