|
本帖最后由 wgs7909 于 2017-2-15 15:26 编辑
情景描述:1、我自己实现了一个tomcat的监听类,在监听类里,在监听类里面调用了一个定时类,代码如下:
- public class CLContextListener implements ServletContextListener {
- private Timer timer = null;
- private static String path = System.getProperty("user.dir");
- public void contextDestroyed(ServletContextEvent event) {
- // 在这里关闭监听器,所以在这里销毁定时器。
- timer.cancel();
- event.getServletContext().log("定时器销毁");
- }
- public void contextInitialized(ServletContextEvent event) {
- // TODO 自动生成的方法存根
- // 在这里初始化监听器,在tomcat启动的时候监听器启动,可以在这里实现定时器功能
- timer = new Timer(true);
- event.getServletContext().log("定时器已启动");// JAVA定时执行任务(Tomcat 下的定时任务)
- timer.schedule(new GetWeightByCL(event.getServletContext()), 0, 5 * 1000);
- event.getServletContext().log("已经添加任务");
- ServletContext sc = event.getServletContext();
- System.out.println(sc.getContextPath()+sc.getServletContextName());// user.dir指定了当前的路径
- }
复制代码- public class GetWeightByCL extends TimerTask {
- private static final String DATASOURCE_tenso = "tenso";
- private static final String TABLE_userinfo = "userinfo";
- private static final String TABLE_sendinfo = "imgdata";
- private static String path = System.getProperty("user.dir");
- public static void main(String[] args) throws WriteException, IOException {
- // // TODO 自动生成的方法存根
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Table table = null;
- System.out.println(path);// user.dir指定了当前的路径
- }
- public GetWeightByCL(ServletContext context) {
- System.out.println("构造函数 GetWeightByCL");
- }
- @Override
- public void run() {
- // TODO 自动生成的方法存根
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
- String date = sdf.format(new Date());
- System.out.println(path);// user.dir指定了当前的路径
- System.out.println("this is run " + date);
- // 通过java提供的标准的jdbc连接方法,获取数据库的连接对象,再调用起步提供的query方法,查询数据库。
- String url = "jdbc:mysql://127.0.0.1:3306/tenso";
- String username = "root";
- String password = "x5";
- Connection conn = null;
- Table table = null;
- try {
- conn = DriverManager.getConnection(url, username, password);
- String sql = "SELECT * from sendinfo where ISNULL(weight) and ISNULL(bulk)";
- table = DataUtils.queryData(conn, sql, null, null, null, null);
- System.out.println(table.getRows().size());
- } catch (SQLException se) {
- System.out.println("数据库连接失败!");
- se.printStackTrace();
- } finally {
- try {
- conn.close();
- } catch (SQLException e) {
- // TODO 自动生成的 catch 块
- e.printStackTrace();
- }
- }
- }
复制代码
2、定时类里写了一个数据库连接查询方法,直接在定时类里写一个main方法,调用run()方法,正常运行查询。但是如果通过tomcat的监听类来调用它的话,就会报错。错误信息提示:因为没有找到mysql的连接类。这个错误原因我已经验证过了,我把WEB项目里的mysql-connector-java-5.1.36-bin.jar删除了,就会报同样的错误 。
3、谁能帮我解决这个问题,200元的微信红包,马上发过去。。。。
|
-
评分
-
查看全部评分
|