JAVA程序定时运行_hanCSDN_20130424

来源:互联网 发布:深圳cnc编程招聘 编辑:程序博客网 时间:2024/06/05 23:56

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";@Overridepublic 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();}@Overrideprotected 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>");}@Overridepublic 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;//初始化当前时间到下载时间之间的时间差 }}




 

原创粉丝点击