定时器中实现数据库表数据移动的功能,Exception in thread "Timer-0" isExist java.lang.NullPointerException定时器中线程报错。

 1 package com.shawnway.trade.marketdata.constants;
 2 import java.sql.SQLException;
 3 import java.util.Calendar;
 4 import java.util.Date;
 5 import java.util.Timer;
 6 import java.util.TimerTask;
 7
 8 import javax.persistence.EntityManager;
 9 import javax.persistence.PersistenceContext;
10
11 import org.slf4j.Logger;
12 import org.slf4j.LoggerFactory;
13 import org.springframework.beans.factory.annotation.Autowired;
14 import org.springframework.stereotype.Component;
15 import org.springframework.web.bind.annotation.RequestMapping;
16 import org.springframework.web.bind.annotation.RequestMethod;
17 import org.springframework.web.bind.annotation.ResponseBody;
18
19 import com.shawnway.trade.marketdata.services.ChartService;
20
21 @Component
22 public class TimerConfig {
23         @Autowired
24         private ChartService chartService;
25         @PersistenceContext
26         private  EntityManager em;
27         public TimerConfig(ChartService ct){//关键点解决 null指针错误,
28             chartService=ct;
29         }
30       // Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)
31       //每天的24:00:00执行迁移操作
32     public void init() {
33         Calendar calendar = Calendar.getInstance();
34         calendar.set(Calendar.HOUR_OF_DAY, 15); // 控制时
35         calendar.set(Calendar.MINUTE, 3);    // 控制分
36         calendar.set(Calendar.SECOND, 0);    // 控制秒
37
38         Date time = calendar.getTime();
39
40         Timer timer = new Timer();
41         timer.scheduleAtFixedRate(new TimerTask() {
42
43           public void run() {
44               System.out.println("处理器开始运行");
45
46             try {
47                 moveStableMes();
48             } catch (SQLException e) {
49                 // TODO Auto-generated catch block
50                 e.printStackTrace();
51             }
52           }
53         }, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行
54     }
55       @RequestMapping(value ="/move/moveStableMes", method = RequestMethod.GET)
56       @ResponseBody
57     public  void moveStableMes() throws SQLException{
58         //首先判定存储表是否存在,如果存在则转移数据
59         //如果不存在,先创建该存储数据表,在转移数据
60         //情况临时存储表。(临时表是用来保存当天的数据。)
61         Calendar c = Calendar.getInstance();
62         int year=c.get(c.YEAR);
63         int month=c.get(c.MONTH)+1;
64         int today = c.get(c.DAY_OF_MONTH);
65         String tbname="";
66         if(month<=9)
67             tbname="market_data_candlechart_"+Integer.toString(year)+"0"+Integer.toString(month);//数据库的名字
68         else
69             tbname="market_data_candlechart_"+Integer.toString(year)+Integer.toString(month);//数据库的名字
70         String temperTB="market_data_candlechart";//存储临时信息的表名
71         System.out.println("执行到了isExist");
72         boolean flag=chartService.isExist(tbname);//判定对应的数据库是否存在
73         System.out.println("isExist结束");
74         if(flag){//如果已经存在了,就可以直接把临时表中的数据插入到对应的表中
75             chartService.moveMesToOldTB(tbname,temperTB);//将临时表中的数据移动到tbname名称的表中。
76         }else{
77             chartService.createTemperTB(tbname);//如果不存在,需要先创建一个对应名称的表
78             chartService.moveMesToOldTB(tbname,temperTB);//将临时表中的数据移动到tbname名称的表中。
79         }
80         //转移完数据后,清洗临时表的数据
81         chartService.deletTemperTB(temperTB);
82     }
83
84 }
 1 package com.shawnway.trade.marketdata;
 2
 3
 4
 5 import java.io.FileNotFoundException;
 6
 7 import org.apache.catalina.Server;
 8 import org.apache.catalina.Service;
 9 import org.apache.catalina.connector.Connector;
10 import org.apache.catalina.valves.RemoteIpValve;
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.boot.SpringApplication;
13 import org.springframework.boot.autoconfigure.SpringBootApplication;
14 import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
15 import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
16 import org.springframework.boot.context.embedded.tomcat.TomcatConnectorCustomizer;
17 import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
18 import org.springframework.context.annotation.Bean;
19 import org.springframework.context.annotation.PropertySource;
20 import org.springframework.core.env.Environment;
21
22 import com.shawnway.trade.marketdata.constants.SystemConfig;
23 import com.shawnway.trade.marketdata.constants.TimerConfig;
24 import com.shawnway.trade.marketdata.core.collect.MarketDataCollectHandler;
25 import com.shawnway.trade.marketdata.core.ctp.CTPApiHandler;
26 import com.shawnway.trade.marketdata.core.ctp.CTPGatewayProxy;
27 import com.shawnway.trade.marketdata.core.ctp.CTPMarketDataHandler;
28 import com.shawnway.trade.marketdata.core.ctp.CTPZeroMQHandler;
29 import com.shawnway.trade.marketdata.core.es.EsMarketDataHandler;
30 import com.shawnway.trade.marketdata.core.es.EsunnyApiHandler;
31 import com.shawnway.trade.marketdata.core.es.EsunnyGatewayProxy;
32 import com.shawnway.trade.marketdata.core.sp.SharppointApiHandler;
33 import com.shawnway.trade.marketdata.core.sp.SharppointGatewayProxy;
34 import com.shawnway.trade.marketdata.core.sp.SpMarketDataHandler;
35 import com.shawnway.trade.marketdata.services.ChartService;
36 import com.shawnway.trade.marketdata.services.MapContainer;
37
38 @PropertySource({ "file:${config.dir}/config/web.properties" })
39 @SpringBootApplication
40 public class ApplicationLauncher {
41     @Autowired
42     private Environment env;
43     @Autowired
44     private ChartService chartService;
45
46     @Bean(name = { "timerConfig" }, initMethod = "init")
47     public TimerConfig timerConfig() {
48         System.out.println("timerConfig已经开始运行了~");
49         return new TimerConfig(chartService);//
chartService传入进去,解决空指针的错误


50  } 51 public static void main(String[] args) throws Exception { 52 System.setProperty("config.dir", System.getProperty("user.dir")); 53 final String dir = System.getProperty("config.dir"); 54 System.setProperty("logging.config", dir + "/config/logging.xml"); 55 SpringApplication.run(ApplicationLauncher.class, args); 56  } 57 }
时间: 2024-11-05 18:35:27

定时器中实现数据库表数据移动的功能,Exception in thread "Timer-0" isExist java.lang.NullPointerException定时器中线程报错。的相关文章

ajax请求json数据异常:nested exception is net.sf.json.JSONException: java.lang.reflect.InvocationTargetException] with root cause

ajax请求json数据异常:nested exception is net.sf.json.JSONException: java.lang.reflect.InvocationTargetException] with root cause 1.异常原因:所请求的json数据中包含java.util.date数据类型,但是在后台并没有将其格式转换 2.解决方法:添加工具类DateJsonValueProcessor import java.text.SimpleDateFormat; imp

MySQL数据库中查询数据库表、字段总数量,查询数据总量

最近要查询一些数据库的基本情况,由于以前用oracle数据库比较多,现在换了MySQL数据库,就整理了一部分语句记录下来. 1.查询数据库表数量 1 #查询MySQL服务中数据库表数据量 2 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES GROUP BY table_schema; 3 #查询指定数据库表数量 4 SELECT COUNT(*) TABLES, table_schema FROM infor

mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享

摘要: 下文讲述清空数据库中所有表信息的方法分享,如下所示: 实验环境:sql server 2008 实现思路: 1.禁用所有约束,外键 2.禁用所有触发器 3.删除表数据 4.开启触发器 5.开启约束 CREATE PROCEDURE proc_deleteDateSql /* 生成清除数据库表数据的脚本方法分享 */ AS EXEC sp_MSForEachTable 'ALTER TABLE ? NOCHECK CONSTRAINT ALL' EXEC sp_MSForEachTable

MO拆分计划行程序中写入PRODUCTIONORDERS表数据出现重复导致报错(BUG)20180502

错误提示:ORA-00001: 违反唯一约束条件 (ABPPMGR.C0248833319_6192)ORA-06512: 在 "STG.FP_MO_SPLIT", line 199  ORA-06512: 在 "STG.FP_MO_SPLIT", line 1318 错误描述:MO拆分计划行程序中写入PRODUCTIONORDERS表数据出现重复导致报错(BUG) 存储过程:FP_MO_SPLIT 解决方法: 原文地址:https://www.cnblogs.co

Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法

使用 Struts2 编写页面,遇到一个要长时间运行的接口,因此增加了一个execAndWait ,结果在 Action 中调用 getContext()的时候报告异常 1 ActionContext context = ActionContext.getContext(); 2 ServletContext servletContext = (ServletContext) context.get(ServletActionContext.SERVLET_CONTEXT); //抛空指针异常

cocos2d-x3.2中在Eclipse中java.lang.NullPointerException的问题解决

错误1分析:java.lang.NullPointerException即空指针,没有赋值或者赋值错误导致了空指针引用. 看看有哪里没有初始化造成空指针. 总结:java.lang.NullPointerException引用空指针错误的解决办法是仔细检查代码,看是否有实例没有初始化就 进行了引用. Eclipse的安卓开发调试环境中,不能指出是哪个变量未初始化,以及在源码的那一行,从而增加了新手调试的难度. 一般寻找该问题可通过增加断点逐步运行查找,但是由于出错语句在某个函数的最后一句,因此断

Mybatis中传参包There is no getter for property named &#39;XXX&#39; in &#39;class java.lang.String&#39;

一.发现问题 <select id="queryStudentByNum" resultType="student" parameterType="string"> select num,name,phone from student <where> <if test = " num!=null and num!='' "> AND num = #{num} </if> <

[hadoop] map函数中使用FileSystem对象出现java.lang.NullPointerException的原因及解决办法

问题描述: 在hadoop中处理多个文件,其中每个文件一个map. 我使用的方法为生成一个文件,文件中包含所有要压缩的文件在HDFS上的完整路径.每个map 任务获得一个路径名作为输入. 在eclipse中调试时,map中处理hdfs上的文件用到的FileSystem对象为整个class中的静态成员变量,在eclipse中运行没有错误,打包成jar提交到集群运行,就会在map函数中 FileStatus fileStatus = tmpfs.getFileStatus(inputdir); 这一

Android中res中的Layout布局文件报空指针问题layout_galazuser_center.xml: java.lang.NullPointerException

错误信息:只截取了一部分java.lang.NullPointerException at android.graphics.Canvas_Delegate.restoreTo(Canvas_Delegate.java:1175) at android.graphics.Canvas_Delegate.restoreToCount(Canvas_Delegate.java:268) at android.graphics.Canvas.restoreToCount(Canvas.java) at