DbBackupQuartzJob.java
3.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package com.fh.controller.fhdb.timingbackup;
import java.util.Date;
import java.util.Map;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
import com.fh.controller.base.BaseController;
import com.fh.service.fhdb.brdb.impl.BRdbService;
import com.fh.service.fhdb.timingbackup.impl.TimingBackUpService;
import com.fh.util.DbFH;
import com.fh.util.FileUtil;
import com.fh.util.PageData;
import com.fh.util.Tools;
/** quartz 定时任务调度 数据库自动备份工作域
* @author FH 3 13 59679 0 Q
* @date 2016-4-10
*/
public class DbBackupQuartzJob extends BaseController implements Job{
@Override
@SuppressWarnings("unchecked")
public void execute(JobExecutionContext context) throws JobExecutionException {
// TODO Auto-generated method stub
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
Map<String,Object> parameter = (Map<String,Object>)dataMap.get("parameterList"); //获取参数
String TABLENAME = parameter.get("TABLENAME").toString();
TABLENAME = TABLENAME.equals("all")?"":TABLENAME;
//普通类从spring容器中拿出service
WebApplicationContext webctx=ContextLoader.getCurrentWebApplicationContext();
BRdbService brdbService = (BRdbService)webctx.getBean("brdbService");
PageData pd = new PageData();
try {
String kackupPath = DbFH.getDbFH().backup(TABLENAME).toString();//调用数据库备份
if(Tools.notEmpty(kackupPath) && !"errer".equals(kackupPath)){
pd.put("FHDB_ID", this.get32UUID()); //主键
pd.put("USERNAME", "系统"); //操作用户
pd.put("BACKUP_TIME", Tools.date2Str(new Date())); //备份时间
pd.put("TABLENAME", TABLENAME.equals("")?"整库":TABLENAME); //表名or整库
pd.put("SQLPATH", kackupPath); //存储位置
pd.put("DBSIZE", FileUtil.getFilesize(kackupPath)); //文件大小
pd.put("TYPE", TABLENAME.equals("")?1:2); //1: 备份整库,2:备份某表
pd.put("BZ", "定时备份操作"); //备注
brdbService.save(pd); //存入备份记录
}else{
shutdownJob(context,pd,parameter,webctx);
}
} catch (Exception e) {
logger.error(e.toString(), e);
try {
shutdownJob(context,pd,parameter,webctx);
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
/**把定时备份任务状态改为关闭
* @param pd
* @param parameter
* @param webctx
*/
public void shutdownJob(JobExecutionContext context, PageData pd, Map<String,Object> parameter, WebApplicationContext webctx){
try {
context.getScheduler().shutdown(); //备份异常时关闭任务
TimingBackUpService timingbackupService = (TimingBackUpService)webctx.getBean("timingbackupService");
pd.put("STATUS", 2); //改变定时运行状态为2,关闭
pd.put("TIMINGBACKUP_ID", parameter.get("TIMINGBACKUP_ID").toString()); //定时备份ID
timingbackupService.changeStatus(pd);
} catch (Exception e) {
e.printStackTrace();
}
}
}