java定时器实现实时访问数据库以免数据库链接超时

import java.util.TimerTask;

import java.sql.*;

/**
 * 
 * @desc <p>
 * 			访问数据库的任务
 *       </p>
 * @author ynshun
 * @e_mail:ynshun@163.com
 * @version 1.0
 * @date 2013-8-1 13:47:14
 */
public class ConnDBTask extends TimerTask {
	private static boolean isRunning = false;

	String driver = "com.mysql.jdbc.Driver";
	String url = "jdbc:mysql://localhost:3306/qhwxcs_djy";
	String userName = "root";
	String passWord = "1";

	public void run() {

		if (!isRunning) {
			isRunning = true;
			System.out.println("开始执行任务..."); // 开始任务
			try {
				Class.forName(driver);
				Connection conn;
				try {
					conn = DriverManager.getConnection(url, userName, passWord);
					if (!conn.isClosed())
						System.out.println("Succeeded connecting to the Database!");
					Statement statement = conn.createStatement();
					String sql = "select * from t_user";
					ResultSet rs = statement.executeQuery(sql);
					if (rs.next()) {
						System.out.println("List<User> is not null!");
					}
					rs.close();
					conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
			System.out.println("执行任务完成..."); // 任务完成
			isRunning = false;
		} else {
			System.out.println("上一次任务执行还未结束..."); // 上一次任务执行还未结束
		}
	}
}

 

 

 

import java.util.Timer;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

/**
 * @desc <p> 
 *			定时访问数据库以防止数据库连接超时
 * 		</p>
 * @author ynshun
 * @e_mail:ynshun@163.com
 * @version 1.0
 * @date 2013-8-1 14:12:41
 */
@WebListener
public class TimeManager implements ServletContextListener {
	public static final long NO_DELAY = 0; // 无延迟
	private Timer timer; // 定时器

	/**
	 * 在Web应用启动时初始化任务
	 */
	@Override
	public void contextInitialized(ServletContextEvent event) {
		timer = new Timer("访问数据库", true); // 定义定时器
		timer.schedule(new ConnDBTask(), NO_DELAY, 14400000); // 启动备份任务,每4个小时执行一次
	}

	/**
	 * 在Web应用结束时停止任务
	 */
	@Override
	public void contextDestroyed(ServletContextEvent event) {
		timer.cancel(); // 定时器销毁
	}
}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值