From 447b83515ae498f46e9d959e7c07f733647fdf06 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Mon, 09 Feb 2026 10:00:24 +0800
Subject: [PATCH] init
---
src/main/java/cn/net/communion/dbdatasync/App.java | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 118 insertions(+), 0 deletions(-)
diff --git a/src/main/java/cn/net/communion/dbdatasync/App.java b/src/main/java/cn/net/communion/dbdatasync/App.java
new file mode 100644
index 0000000..c5d4a61
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/App.java
@@ -0,0 +1,118 @@
+package cn.net.communion.dbdatasync;
+
+import java.lang.reflect.Field;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.quartz.CronTrigger;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.SchedulerFactory;
+import org.quartz.impl.StdSchedulerFactory;
+
+import static org.quartz.CronScheduleBuilder.cronSchedule;
+import static org.quartz.TriggerBuilder.newTrigger;
+import static org.quartz.JobBuilder.newJob;
+import cn.net.communion.dbdatasync.dbhelper.Factory;
+import cn.net.communion.dbdatasync.entity.DbInfo;
+import cn.net.communion.dbdatasync.entity.JobInfo;
+/**
+ * 读取xml配置文件
+ * @author Administrator
+ *
+ */
+public class App
+{
+
+ private DbInfo srcDb;
+ private DbInfo destDb;
+ private List<JobInfo> jobList;
+ private String code;
+ private static Logger logger = Logger.getLogger(App.class);
+
+ public void init(){
+
+ srcDb = new DbInfo();
+ destDb = new DbInfo();
+ jobList = new ArrayList<JobInfo>();
+ SAXReader reader = new SAXReader();
+ try {
+ //读取xml的配置文件名,并获取其里面的节点
+ Element root = reader.read("jobs.xml").getRootElement();
+ Element src = root.element("source");
+ Element dest = root.element("dest");
+ Element jobs = root.element("jobs");
+ //遍历job即同步的表
+ for(Iterator it = jobs.elementIterator("job"); it.hasNext();){
+ jobList.add((JobInfo) elementInObject((Element)it.next(), new JobInfo()));
+ }
+ //
+ elementInObject(src, srcDb);
+ elementInObject(dest, destDb);
+ code = root.element("code").getTextTrim();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public Object elementInObject(Element e, Object o) throws IllegalArgumentException, IllegalAccessException{
+ Field[] fields = o.getClass().getDeclaredFields();
+ for(int index = 0; index < fields.length; index++){
+ fields[index].setAccessible(true);
+ fields[index].set(o, e.element(fields[index].getName()).getTextTrim());
+ }
+ return o;
+ }
+
+ public void start(){
+ for(int index = 0; index < jobList.size(); index++){
+ JobInfo jobInfo = jobList.get(index);
+ String logTitle = "[" + code + "]" + jobInfo.getName() + " ";
+ try{
+ SchedulerFactory sf = new StdSchedulerFactory();
+ Scheduler sched = sf.getScheduler();
+ JobDetail job = newJob(DataTask.class).withIdentity("job-" + jobInfo.getName(), code).build();
+ job.getJobDataMap().put("srcDb", srcDb);
+ job.getJobDataMap().put("destDb", destDb);
+ job.getJobDataMap().put("jobInfo", jobInfo);
+ job.getJobDataMap().put("logTitle", logTitle);
+ logger.info(jobInfo.getCron());
+ CronTrigger trigger = newTrigger()
+ .withIdentity("trigger-" + jobInfo.getName(), code)
+ .withSchedule(cronSchedule(jobInfo.getCron())).build();
+ sched.scheduleJob(job, trigger);
+ sched.start();
+ }catch(Exception e){
+ logger.info(logTitle + e.getMessage());
+ logger.info(logTitle + " run failed");
+ continue;
+ }
+ }
+ }
+ public static void main(String[] args )
+ {
+ // 设置默认编码为 UTF-8
+ System.setProperty("file.encoding", "UTF-8");
+
+ App app = new App();
+ app.init();
+ app.start();
+
+ }
+
+}
--
Gitblit v1.9.3