From 7388adfa9a673d571e8d477e3891706993aa5db4 Mon Sep 17 00:00:00 2001 From: chenlw <874313221@qq.com> Date: Mon, 13 Feb 2017 15:51:28 +0800 Subject: [PATCH] =?UTF-8?q?2017.2.7=E5=87=BA=E5=B7=AE=E8=BF=87=E7=A8=8B?= =?UTF-8?q?=E4=B8=AD=E4=BC=8D=E9=93=AD+=E9=99=88=E7=AB=8B=E6=96=87?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=9A=84=E4=BB=A3=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DataModelController.java | 23 +- .../platform/service/OracleStatusService.java | 16 +- .../service/impl/CheckoutServiceImpl.java | 15 +- .../impl/OracleExtractServiceImpl.java | 325 +++++++++--------- .../thread/ThreadCheckoutStandardOracle.java | 209 ++++++----- src/com/platform/utils/Configs.java | 1 + src/com/platform/utils/ConfigsLoader.java | 2 + src/com/platform/utils/GanymedSSH.java | 3 + 8 files changed, 311 insertions(+), 283 deletions(-) diff --git a/src/com/platform/controller/DataModelController.java b/src/com/platform/controller/DataModelController.java index 99e7d879..1ae675a9 100644 --- a/src/com/platform/controller/DataModelController.java +++ b/src/com/platform/controller/DataModelController.java @@ -42,6 +42,7 @@ import com.platform.service.IVolumeService; import com.platform.service.OracleExtractTask; import com.platform.service.OracleStatusService; import com.platform.utils.CacheSetCantDelete; +import com.platform.utils.Configs; import com.platform.utils.Constant; import com.platform.utils.ThreadVolumeImm; import com.platform.utils.UtilsHelper; @@ -109,7 +110,7 @@ public class DataModelController extends BaseController { * @param res * @param req * @return - * @throws Exception + * @throws Exception */ @RequestMapping("/data.json") @ResponseBody @@ -159,11 +160,11 @@ public class DataModelController extends BaseController { if (null != data && data.length > 0) { List list = new ArrayList(); List errList = new ArrayList(); - //判断是否有 不能删除的。 + // 判断是否有 不能删除的。 for (String dataId : data) { - if(CacheSetCantDelete.containsId(dataId)) + if (CacheSetCantDelete.containsId(dataId)) errList.add(dataId); - else + else list.add(dataId); } if (list.size() > 0) { @@ -175,7 +176,7 @@ public class DataModelController extends BaseController { mode.put("err", errList); req.setStatus(500); } - + } return mode; } @@ -196,8 +197,7 @@ public class DataModelController extends BaseController { if (oraclesName != null) for (String rcName : oraclesName) { log.info("执行连接\t" + rcName); - String cmd = "kubectl label --overwrite rc " + rcName - + " status=0"; + String cmd = "kubectl label --overwrite rc " + rcName + " status=0"; List rList = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd); StringBuffer sb = new StringBuffer(); @@ -243,7 +243,8 @@ public class DataModelController extends BaseController { public String volumeList() throws Exception { log.info("-----/volume/list------"); String rest = volumeService.getAllvolume(); - new ThreadVolumeImm("ThreadVolumeImm-in-VolumeController-volumeList").start(); + new ThreadVolumeImm("ThreadVolumeImm-in-VolumeController-volumeList") + .start(); return rest; } @@ -292,7 +293,7 @@ public class DataModelController extends BaseController { if (isConnect) { req.setStatus(200); if (null != form.getInneed() && form.getInneed().size() > 0) { - for (OracleConnectorParams oracleParams : form.getInneed()) { + for (OracleConnectorParams oracleParams : form.getInneed()) { BasedTask task = new OracleExtractTask( oracleParams.getName(), form.getTarget(), oracleParams, OracleExtract); @@ -462,10 +463,10 @@ public class DataModelController extends BaseController { public Object getExtractLog(@RequestParam("rcName") String name, HttpServletRequest res, HttpServletResponse req) throws Exception { log.info("---------/oracle/extract/log-------------------"); - String result = logReadService.readLog(name); + String result = logReadService.readLog(name); // "查看相应日志" Map log = new HashMap(); - log.put(name, result+"\r\n"); + log.put(name, result + "\r\n"); return log; } } diff --git a/src/com/platform/service/OracleStatusService.java b/src/com/platform/service/OracleStatusService.java index b2a908ed..4e5256b5 100644 --- a/src/com/platform/service/OracleStatusService.java +++ b/src/com/platform/service/OracleStatusService.java @@ -16,9 +16,11 @@ import com.platform.oracle.OracleConnector; import com.platform.utils.Configs; import com.platform.utils.Constant; -/** 计时 尝试连接oracle的时间,(超过10分钟判断失败) +/** + * 计时 尝试连接oracle的时间,(超过10分钟判断失败) + * * @author chen - * + * */ public class OracleStatusService { private static Map alliveTask = new Hashtable(); @@ -41,8 +43,7 @@ public class OracleStatusService { public void cancelToOracle(String replicasName, String operate) { if (operate.equals("stop")) { - String cmd = "kubectl label --overwrite rc " + replicasName - + " status=0"; + String cmd = "kubectl label --overwrite rc " + replicasName + " status=0"; List rList = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd); StringBuffer sb = new StringBuffer(); @@ -120,8 +121,7 @@ public class OracleStatusService { killAlliveTask(taskName); // client.updateOrAddReplicasLabelById(taskName, "status", "1"); // //更新ReplicationController标签,将oracle状态标示未1(0:启动中,1:失败,2:成功) - String cmd = "kubectl label --overwrite rc " + taskName - + " status=1"; + String cmd = "kubectl label --overwrite rc " + taskName + " status=1"; List rList = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd); StringBuffer sb = new StringBuffer(); @@ -144,8 +144,8 @@ public class OracleStatusService { + ocp.getPassword()); String message = "失败"; if (flag && alliveTask.containsKey(taskName)) { - String cmd = "kubectl label --overwrite rc " - + taskName + " status=2"; + String cmd = "kubectl label --overwrite rc " + taskName + + " status=2"; // client.updateOrAddReplicasLabelById(taskNSyame, // "status", "2"); List rList = Constant.ganymedSSH diff --git a/src/com/platform/service/impl/CheckoutServiceImpl.java b/src/com/platform/service/impl/CheckoutServiceImpl.java index a783abf1..8cf3e12b 100644 --- a/src/com/platform/service/impl/CheckoutServiceImpl.java +++ b/src/com/platform/service/impl/CheckoutServiceImpl.java @@ -76,9 +76,9 @@ public class CheckoutServiceImpl implements ICheckoutService { List checks = new ArrayList(); List result = preDataInfoDao.findAllCollect(); DataInfoEntity data = new DataInfoEntity(); - Calendar c2 = Calendar.getInstance(); + Calendar c2 = Calendar.getInstance(); // 时间设置为 半年前的时间 - c2.set(Calendar.MONTH, getMonBeforeHalfYear(c2.get(Calendar.MONTH))); + this.getMonBeforeHalfYear(c2); String time = DateForm.date2StringByDay(c2.getTime()); data.setCollectingTime(time); // data.setCollectingTime(collectingTime); @@ -124,7 +124,7 @@ public class CheckoutServiceImpl implements ICheckoutService { CheckoutEntity cksql = new CheckoutEntity(); Calendar c2 = Calendar.getInstance(); // 时间设置为 半年前的时间 - c2.set(Calendar.MONTH, getMonBeforeHalfYear(c2.get(Calendar.MONTH))); + this.getMonBeforeHalfYear(c2); String time = DateForm.date2StringByDay(c2.getTime()); cksql.setCollectingTime(time); cksql.setCityName(city); @@ -451,12 +451,9 @@ public class CheckoutServiceImpl implements ICheckoutService { * @param num * @return */ - private int getMonBeforeHalfYear(int num){ - num -= Configs.dataBefore; - if (num <= 0) { - num = num + 12; - } - return num; + private int getMonBeforeHalfYear(Calendar c2){ + c2.set(Calendar.DAY_OF_YEAR, c2.get(Calendar.DAY_OF_YEAR) -(Configs.dataBefore*30)); + return 1; } private String isY(String str1, String str2) { diff --git a/src/com/platform/service/impl/OracleExtractServiceImpl.java b/src/com/platform/service/impl/OracleExtractServiceImpl.java index 66fc6597..e124009f 100644 --- a/src/com/platform/service/impl/OracleExtractServiceImpl.java +++ b/src/com/platform/service/impl/OracleExtractServiceImpl.java @@ -87,8 +87,8 @@ public class OracleExtractServiceImpl implements IOracleExtractService { dataInfoDao.updateExtract(data); collectOracle.setName("J" + collectOracle.getName().replace("-", "_")); - String cmd = "kubectl label --overwrite rc " - + replicasName + " isExtract=1"; + String cmd = "kubectl label --overwrite rc " + replicasName + + " isExtract=1"; // sql日志记录时间: FileOperateHelper .fileWrite( @@ -127,7 +127,8 @@ public class OracleExtractServiceImpl implements IOracleExtractService { Configs.CONSOLE_LOGGER.info(sb.toString()); data.setExtractStatus(2); dataInfoDao.updateExtract(data); - DataInfoEntity tmpdata = dataInfoDao.findById(data.getId()); + DataInfoEntity tmpdata = dataInfoDao.findById(data + .getId()); data.setId(tmpdata.getSrcId()); dataInfoDao.updateExtract(data); } @@ -141,29 +142,27 @@ public class OracleExtractServiceImpl implements IOracleExtractService { data.setId(tmpdata.getSrcId()); dataInfoDao.updateExtract(data); log.error(Custom4exception.OracleSQL_Except, e); - } - finally{ - //去掉保存的当前数据id, - CacheSetCantDelete.removeExtractId(collectOracle.getDataId()); + } finally { + // 去掉保存的当前数据id, + CacheSetCantDelete.removeExtractId(collectOracle + .getDataId()); String msg = "汇总结束"; if (2 != data.getExtractStatus()) { - msg +=" 汇总有异常!状态重置为待汇总 "; + msg += " 汇总有异常!状态重置为待汇总 "; data.setExtractStatus(0); dataInfoDao.updateExtract(data); - DataInfoEntity tmpdata = dataInfoDao.findById(data.getId()); + DataInfoEntity tmpdata = dataInfoDao.findById(data + .getId()); data.setId(tmpdata.getSrcId()); dataInfoDao.updateExtract(data); } // sql日志记录时间: - FileOperateHelper - .fileWrite( - Configs.EXTRACT_LOG_LOCALTION - + collectOracle.getName() - + ".log", - "\r\n "+msg+" >>>>>>> " - + DateForm - .date2StringBysecond(new Date()) - + "\r\n\r\n\n"); + FileOperateHelper.fileWrite( + Configs.EXTRACT_LOG_LOCALTION + + collectOracle.getName() + ".log", + "\r\n " + msg + " >>>>>>> " + + DateForm.date2StringBysecond(new Date()) + + "\r\n\r\n\n"); } } isSuccess = true; @@ -200,166 +199,160 @@ public class OracleExtractServiceImpl implements IOracleExtractService { List dataInfolist, GatherOracleInfo oracleConnect) throws Exception { boolean isSuccess = false; - // map转 bean(汇总库信息-带tableName的) - GatherOracleInfo oracleModel = oracleConnect; - // 采集库连接参数 - List datainfos = dataInfolist; - if (datainfos.size() == 0) { - return false; - } - Connection conn = OracleConnector.connectionBuilder( - "jdbc:oracle:thin:@" + oracleModel.getIp() + ":" - + oracleModel.getPort() + ":" - + oracleModel.getDatabaseName(), - oracleModel.getUser(), oracleModel.getPassword(), - dataInfolist.get(0)); - if (null == conn) { - FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION - + dataInfolist.get(0).getName() + ".log", - "创建oracle连接失败: [" + conn + "]\r\n"); - return false; - } - for (OracleConnectorParams collectOracle : datainfos) { - String replicasName = collectOracle.getName(); - DataInfoEntity data = new DataInfoEntity(); - try { - if (null != collectOracle.getDataId() - && !"".equals(collectOracle.getDataId())) { - data.setId(Integer.valueOf(collectOracle.getDataId())); - // 设置为 标准表 抽取中 - data.setCheckoutFlag(Constant.CHECKOUTFLAG_SIX); - data.setStandardExtractStatus("1"); - dataInfoDao.update(data); - collectOracle.setName("CQ" - + collectOracle.getName().replace("-", "_")); - String cmd = "kubectl annotate --overwrite rc " - + replicasName + " standardExtractStatus=1"; - // sql日志记录时间: - FileOperateHelper - .fileWrite( - Configs.EXTRACT_STANDARD_LOG_LOCALTION - + collectOracle.getName() - + ".log", - "\r\n 开始抽取标准表 \r\n " - + DateForm - .date2StringBysecond(new Date()) - + "\n\r\n"); - List rList = Constant.ganymedSSH - .execCmdWaitAcquiescent(cmd); - StringBuffer sb = new StringBuffer(); - for (String string : rList) - sb.append(string).append("\n"); - Configs.CONSOLE_LOGGER.info(sb.toString()); - // client.updateOrAddReplicasLabelById(collectOracle.getName(), - // "isExtract", "1"); - // //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成 - oracleExtract.createStandardDBLink(conn, collectOracle); // 创建dblink - oracleExtract.createStardardTableSpace(conn, collectOracle, - oracleModel); // 创建表空间 - oracleExtract.createOnlyUser(conn, collectOracle, - oracleModel);// 创建 抽取标准表的 用户并授权 - DataInfoEntity tmpdata = dataInfoDao.findById(data - .getId()); - if (null != tmpdata) { - if (Constant.CHECKOUT_STATUS_THREE.equals(tmpdata - .getPayResultLast()) - || Constant.CHECKOUT_STATUS_FIVE - .equals(tmpdata.getPayResultLast())) { - // 抽取中 - data.setPayResultLast(Constant.CHECKOUT_STATUS_SIX); + // map转 bean(汇总库信息-带tableName的) + GatherOracleInfo oracleModel = oracleConnect; + // 采集库连接参数 + List datainfos = dataInfolist; + if (datainfos.size() == 0) { + return false; + } + Connection conn = OracleConnector.connectionBuilder( + "jdbc:oracle:thin:@" + oracleModel.getIp() + ":" + + oracleModel.getPort() + ":" + + oracleModel.getDatabaseName(), oracleModel.getUser(), + oracleModel.getPassword(), dataInfolist.get(0)); + if (null == conn) { + FileOperateHelper.fileWrite(Configs.EXTRACT_LOG_LOCALTION + + dataInfolist.get(0).getName() + ".log", "创建oracle连接失败: [" + + conn + "]\r\n"); + return false; + } + for (OracleConnectorParams collectOracle : datainfos) { + String replicasName = collectOracle.getName(); + DataInfoEntity data = new DataInfoEntity(); + try { + if (null != collectOracle.getDataId() + && !"".equals(collectOracle.getDataId())) { + data.setId(Integer.valueOf(collectOracle.getDataId())); + // 设置为 标准表 抽取中 + data.setCheckoutFlag(Constant.CHECKOUTFLAG_SIX); + data.setStandardExtractStatus("1"); + dataInfoDao.update(data); + collectOracle.setName("CQ" + + collectOracle.getName().replace("-", "_")); + String cmd = "kubectl annotate --overwrite rc " + replicasName + + " standardExtractStatus=1"; + // sql日志记录时间: + FileOperateHelper.fileWrite( + Configs.EXTRACT_STANDARD_LOG_LOCALTION + + collectOracle.getName() + ".log", + "\r\n 开始抽取标准表 \r\n " + + DateForm.date2StringBysecond(new Date()) + + "\n\r\n"); + List rList = Constant.ganymedSSH + .execCmdWaitAcquiescent(cmd); + StringBuffer sb = new StringBuffer(); + for (String string : rList) + sb.append(string).append("\n"); + Configs.CONSOLE_LOGGER.info(sb.toString()); + // client.updateOrAddReplicasLabelById(collectOracle.getName(), + // "isExtract", "1"); + // //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成 + oracleExtract.createStandardDBLink(conn, collectOracle); // 创建dblink + oracleExtract.createStardardTableSpace(conn, collectOracle, + oracleModel); // 创建表空间 + oracleExtract.createOnlyUser(conn, collectOracle, + oracleModel);// 创建 抽取标准表的 用户并授权 + DataInfoEntity tmpdata = dataInfoDao.findById(data.getId()); + if (null != tmpdata) { + if (Constant.CHECKOUT_STATUS_THREE.equals(tmpdata + .getPayResultLast()) + || Constant.CHECKOUT_STATUS_FIVE.equals(tmpdata + .getPayResultLast())) { + // 抽取中 + data.setPayResultLast(Constant.CHECKOUT_STATUS_SIX); + dataInfoDao.update(data); + boolean isExtrac = true; + try { + oracleExtract.extractStandardPayTable(conn, + collectOracle, oracleModel);// 执行抽取 + } catch (Exception e) { + // 改回 校验存在的状态 + data.setPayResultLast(Constant.CHECKOUT_STATUS_THREE); dataInfoDao.update(data); - boolean isExtrac = true; - try { - oracleExtract.extractStandardPayTable(conn, - collectOracle, oracleModel);// 执行抽取 - } catch (Exception e) { - // 改回 校验存在的状态 - data.setPayResultLast(Constant.CHECKOUT_STATUS_THREE); - dataInfoDao.update(data); - isExtrac = false; - } - if (isExtrac) { - // 抽取成功 - data.setPayResultLast(Constant.CHECKOUT_STATUS_SEVEN); - dataInfoDao.update(data); - } + isExtrac = false; } - if (Constant.CHECKOUT_STATUS_THREE.equals(tmpdata - .getExecResultLast()) - || Constant.CHECKOUT_STATUS_FIVE - .equals(tmpdata.getExecResultLast())) { - // 抽取中 - data.setExecResultLast(Constant.CHECKOUT_STATUS_SIX); + if (isExtrac) { + // 抽取成功 + data.setPayResultLast(Constant.CHECKOUT_STATUS_SEVEN); dataInfoDao.update(data); - boolean isExtrac = true; - try { - oracleExtract.extractStandardExecTable( - conn, collectOracle, oracleModel);// 执行抽取 - } catch (Exception e) { - // 改回 校验存在的状态 - data.setExecResultLast(Constant.CHECKOUT_STATUS_THREE); - dataInfoDao.update(data); - isExtrac = false; - } - if (isExtrac) { - data.setExecResultLast(Constant.CHECKOUT_STATUS_SEVEN); - dataInfoDao.update(data); - } } - // client.updateOrAddReplicasLabelById(collectOracle.getName(), - // "isExtract", "2"); - // //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成 - cmd = "kubectl annotate --overwrite rc " - + replicasName + " standardExtractStatus=2"; - rList = Constant.ganymedSSH - .execCmdWaitAcquiescent(cmd); - sb = new StringBuffer(); - for (String string : rList) - sb.append(string).append("\n"); - Configs.CONSOLE_LOGGER.info(sb.toString()); - data.setCheckoutFlag(Constant.CHECKOUTFLAG_SEVEN); - data.setStandardExtractStatus("2"); - dataInfoDao.update(data); - DataInfoEntity tmpSrcData = dataInfoDao.findById(data.getId()); - data.setId(tmpSrcData.getSrcId()); + } + if (Constant.CHECKOUT_STATUS_THREE.equals(tmpdata + .getExecResultLast()) + || Constant.CHECKOUT_STATUS_FIVE.equals(tmpdata + .getExecResultLast())) { + // 抽取中 + data.setExecResultLast(Constant.CHECKOUT_STATUS_SIX); dataInfoDao.update(data); + boolean isExtrac = true; + try { + oracleExtract.extractStandardExecTable(conn, + collectOracle, oracleModel);// 执行抽取 + } catch (Exception e) { + // 改回 校验存在的状态 + data.setExecResultLast(Constant.CHECKOUT_STATUS_THREE); + dataInfoDao.update(data); + isExtrac = false; + } + if (isExtrac) { + data.setExecResultLast(Constant.CHECKOUT_STATUS_SEVEN); + dataInfoDao.update(data); + } } + // client.updateOrAddReplicasLabelById(collectOracle.getName(), + // "isExtract", "2"); + // //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成 + cmd = "kubectl annotate --overwrite rc " + replicasName + + " standardExtractStatus=2"; + rList = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd); + sb = new StringBuffer(); + for (String string : rList) + sb.append(string).append("\n"); + Configs.CONSOLE_LOGGER.info(sb.toString()); + data.setCheckoutFlag(Constant.CHECKOUTFLAG_SEVEN); + data.setStandardExtractStatus("2"); + dataInfoDao.update(data); + DataInfoEntity tmpSrcData = dataInfoDao.findById(data + .getId()); + data.setId(tmpSrcData.getSrcId()); + dataInfoDao.update(data); } - } catch (Exception e) { - - String cmd = "kubectl annotate --overwrite rc " - + replicasName + " standardExtractStatus=0"; - Constant.ganymedSSH.execCmdWaitAcquiescent(cmd); + } + } catch (Exception e) { + + String cmd = "kubectl annotate --overwrite rc " + replicasName + + " standardExtractStatus=0"; + Constant.ganymedSSH.execCmdWaitAcquiescent(cmd); + data.setStandardExtractStatus("0"); + dataInfoDao.update(data); + DataInfoEntity tmpSrcData = dataInfoDao.findById(data.getId()); + data.setId(tmpSrcData.getSrcId()); + dataInfoDao.update(data); + log.error(Custom4exception.OracleSQL_Except, e); + } finally { + // 去掉保存的当前数据id, + CacheSetCantDelete.removeStandardId(collectOracle.getDataId()); + String msg = "抽取标准表结束"; + if (!"2".equals(data.getStandardExtractStatus())) { + msg += " 抽取有异常!状态重置为待抽取 "; data.setStandardExtractStatus("0"); dataInfoDao.update(data); - DataInfoEntity tmpSrcData = dataInfoDao.findById(data.getId()); - data.setId(tmpSrcData.getSrcId()); + DataInfoEntity tmpdata = dataInfoDao.findById(data.getId()); + data.setId(tmpdata.getSrcId()); dataInfoDao.update(data); - log.error(Custom4exception.OracleSQL_Except, e); - } - finally{ - //去掉保存的当前数据id, - CacheSetCantDelete.removeStandardId(collectOracle.getDataId()); - String msg = "抽取标准表结束"; - if (!"2".equals(data.getStandardExtractStatus())) { - msg +=" 抽取有异常!状态重置为待抽取 "; - data.setStandardExtractStatus("0"); - dataInfoDao.update(data); - DataInfoEntity tmpdata = dataInfoDao.findById(data.getId()); - data.setId(tmpdata.getSrcId()); - dataInfoDao.update(data); - } - // sql日志记录时间: - // sql日志记录时间: - FileOperateHelper.fileWrite( - Configs.EXTRACT_STANDARD_LOG_LOCALTION - + collectOracle.getName() + ".log", - " "+msg+" >>>>> " - + DateForm.date2StringBysecond(new Date()) - + "\r\n\r\n\n"); } + // sql日志记录时间: + // sql日志记录时间: + FileOperateHelper.fileWrite( + Configs.EXTRACT_STANDARD_LOG_LOCALTION + + collectOracle.getName() + ".log", + " " + msg + " >>>>> " + + DateForm.date2StringBysecond(new Date()) + + "\r\n\r\n\n"); } - isSuccess = true; + } + isSuccess = true; return isSuccess; } diff --git a/src/com/platform/service/thread/ThreadCheckoutStandardOracle.java b/src/com/platform/service/thread/ThreadCheckoutStandardOracle.java index addbbe7d..d32859eb 100644 --- a/src/com/platform/service/thread/ThreadCheckoutStandardOracle.java +++ b/src/com/platform/service/thread/ThreadCheckoutStandardOracle.java @@ -20,19 +20,22 @@ import com.platform.utils.Configs; import com.platform.utils.Constant; import com.platform.utils.FileOperateHelper; -/** 校验oracle标准表是否存在 +/** + * 校验oracle标准表是否存在 + * * @author chen - * + * */ public class ThreadCheckoutStandardOracle extends Thread { - - public final static Logger log = Configs.CONSOLE_LOGGER.getLogger(ThreadCheckoutStandardOracle.class); - + + public final static Logger log = Configs.CONSOLE_LOGGER + .getLogger(ThreadCheckoutStandardOracle.class); + /** * kuber 客户端 */ private SimpleKubeClient client; - + /** * dataInfo 的数据持久层 */ @@ -43,19 +46,20 @@ public class ThreadCheckoutStandardOracle extends Thread { this.client = new SimpleKubeClient(); this.dataInfoDao = dataInfoDao; } - + @Override public void run() { try { - Thread.sleep(1000*5); + Thread.sleep(1000 * 5); } catch (InterruptedException e2) { log.error(e2); } - //循环11次,每次休眠 + // 循环11次,每次休眠 for (int i = 0; i < 11; i++) { try { - // 数据的 keys (=kuber的应用名称 taskName) - Set taskNames = CacheOracleCheckoutEntity.getCheckKeys(); + // 数据的 keys (=kuber的应用名称 taskName) + Set taskNames = CacheOracleCheckoutEntity + .getCheckKeys(); int lengs = taskNames.size(); if (lengs == 0) { break; @@ -67,31 +71,31 @@ public class ThreadCheckoutStandardOracle extends Thread { } log.info("replicationController标签: " + sbtask.toString()); for (String key : taskNamekeys) { - - // 获得 kuber的 pod + + // 获得 kuber的 pod Pod tmpPod = filterPod(key); if (null == tmpPod) { - log.info("replicationController标签: " + key + " 的 pod 节点不存在!"); + log.info("replicationController标签: " + key + + " 的 pod 节点不存在!"); if (i > 5) { CacheOracleCheckoutEntity.checkRemove(key); } continue; } - // 尝试 连接 oracle + // 尝试 连接 oracle connectOracle(tmpPod, key); - + if (i == 10) { - String cmd = "kubectl label --overwrite rc " + key - + " status=1"; + String cmd = "kubectl label --overwrite rc " + key + " status=1"; List rList = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd); StringBuffer sb = new StringBuffer(); for (String str : rList) sb.append(str).append("\n"); - log.info("更新replicationController标签: " - + key + "\t[标签更新为: 失败]"); + log.info("更新replicationController标签: " + key + + "\t[标签更新为: 失败]"); log.info(sb.toString()); - + String cmd2 = "kubectl annotate --overwrite rc " + key + " checkoutFlag=0"; List rList2 = Constant.ganymedSSH @@ -99,16 +103,17 @@ public class ThreadCheckoutStandardOracle extends Thread { StringBuffer sb2 = new StringBuffer(); for (String str : rList2) sb2.append(str).append("\n"); - log.info("更新replicationController标签: " - + key + "\t[标签更新为: 未校验]"); + log.info("更新replicationController标签: " + key + + "\t[标签更新为: 未校验]"); log.info(sb2.toString()); // 当前key标签对应的 数据服务的记录 - CheckoutEntity tmp = CacheOracleCheckoutEntity.getCheck(key); + CheckoutEntity tmp = CacheOracleCheckoutEntity + .getCheck(key); tmp.setCheckoutFlag(Constant.CHECKOUTFLAG_ZERO); tmp.setPayResultLast(Constant.CHECKOUT_STATUS_ZERO); tmp.setExecResultLast(Constant.CHECKOUT_STATUS_ZERO); try { - //更新数据库 + // 更新数据库 this.updateDataInfo(tmp); } catch (Exception e) { log.error(e); @@ -117,18 +122,19 @@ public class ThreadCheckoutStandardOracle extends Thread { } } catch (Exception e1) { log.error(e1.getStackTrace()); - } - finally{ + } finally { try { - Thread.sleep(1000*60); + Thread.sleep(1000 * 60); } catch (InterruptedException e) { log.error(e); } } } } - - /** 查找 pod 节点 + + /** + * 查找 pod 节点 + * * @param taskName * @return */ @@ -145,39 +151,37 @@ public class ThreadCheckoutStandardOracle extends Thread { } return pod; } - - /** 尝试连接 oracle服务 + + /** + * 尝试连接 oracle服务 + * * @param tmpPod * @param key */ - private void connectOracle(Pod pod, String key) throws Exception{ + private void connectOracle(Pod pod, String key) throws Exception { if (pod != null) { String ip = client.getPodHostIp(pod); int port = client.getPodContainerport(pod); if (ip != null && port != 0) { - String url = "jdbc:oracle:thin:@" + ip + ":" + port - + ":" + Configs.ORACLE_ORCL; + String url = "jdbc:oracle:thin:@" + ip + ":" + port + ":" + + Configs.ORACLE_ORCL; boolean flag = OracleConnector.canConnect(url, // 连接结果返回参数,true标示连接成功,false标示连接失败 Configs.ORACLE_USER, Configs.ORACLE_PSW); - log.info("url:" + url + ",user:" - + Configs.ORACLE_USER + ",password:" - + Configs.ORACLE_PSW); + log.info("url:" + url + ",user:" + Configs.ORACLE_USER + + ",password:" + Configs.ORACLE_PSW); String message = "失败"; - - String cmd3 = "kubectl annotate --overwrite rc " - + key + " checkoutFlag=0"; + + String cmd3 = "kubectl annotate --overwrite rc " + key + " checkoutFlag=0"; List rList3 = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd3); StringBuffer sb3 = new StringBuffer(); for (String str : rList3) sb3.append(str).append("\n"); log.info(sb3.toString()); - log.info("更新replicationController标签: " - + key + "\t[标签更新为:未校验]"); - + log.info("更新replicationController标签: " + key + "\t[标签更新为:未校验]"); + if (flag) { - String cmd = "kubectl label --overwrite rc " - + key + " status=2"; + String cmd = "kubectl label --overwrite rc " + key + " status=2"; // 设置服务为 成功 List rList = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd); @@ -186,61 +190,86 @@ public class ThreadCheckoutStandardOracle extends Thread { sb.append(str).append("\n"); log.info(sb.toString()); message = "成功"; - log.info("更新replicationController标签: " - + key + "\t[标签更新为: 成功]"); - //校验标签 - String cmd2 = "kubectl annotate --overwrite rc " - + key + " checkoutFlag=2"; + log.info("更新replicationController标签: " + key + + "\t[标签更新为: 成功]"); + // 校验标签 + String cmd2 = "kubectl annotate --overwrite rc " + key + + " checkoutFlag=2"; List rList2 = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd2); StringBuffer sb2 = new StringBuffer(); for (String str : rList2) sb2.append(str).append("\n"); log.info(sb2.toString()); - log.info("更新replicationController标签: " - + key + "\t[标签更新为: 校验中]"); - //获得当前 服务对应的 数据 - CheckoutEntity tmp = CacheOracleCheckoutEntity.getCheck(key); + log.info("更新replicationController标签: " + key + + "\t[标签更新为: 校验中]"); + // 获得当前 服务对应的 数据 + CheckoutEntity tmp = CacheOracleCheckoutEntity + .getCheck(key); if (null != tmp) { CacheOracleCheckoutEntity.putExtract(key, tmp); } - // 查询 对应的 2 个标准表 + // 查询 对应的 2 个标准表 OracleConnectorParams oc = new OracleConnectorParams(); - String logName = tmp.getAreaCode().toLowerCase()+"_"+tmp.getSysCode()+"_"+tmp.getDataVersion(); + String logName = tmp.getAreaCode().toLowerCase() + "_" + + tmp.getSysCode() + "_" + tmp.getDataVersion(); oc.setName(logName); try { - Connection conn = OracleConnector.connectionBuilder(url, Configs.ORACLE_USER, Configs.ORACLE_PSW, oc); - //支付--校验 - if (!Constant.CHECKOUT_STATUS_ONE.equals(tmp.getPayResultLast())) { - String paySql = "select * from dba_tables where owner = '"+Configs.COLLECT_STANDARD_TABLE_USER.toUpperCase() - + "' and table_name = '"+Configs.COLLECT_PAY_TABLE.toUpperCase() +"'"; - if(OracleConnector.execUpdateOracleSQL(conn, paySql, - FileOperateHelper.addLastSeparator(Configs.EXTRACT_STANDARD_LOG_LOCALTION)+ logName +"jy.log")){ + Connection conn = OracleConnector.connectionBuilder( + url, Configs.ORACLE_USER, Configs.ORACLE_PSW, + oc); + // 支付--校验 + if (!Constant.CHECKOUT_STATUS_ONE.equals(tmp + .getPayResultLast())) { + String paySql = "select * from dba_tables where owner = '" + + Configs.COLLECT_STANDARD_TABLE_USER + .toUpperCase() + + "' and table_name = '" + + Configs.COLLECT_PAY_TABLE.toUpperCase() + + "'"; + if (OracleConnector + .execUpdateOracleSQL( + conn, + paySql, + FileOperateHelper + .addLastSeparator(Configs.EXTRACT_STANDARD_LOG_LOCALTION) + + logName + "jy.log")) { tmp.setPayResultLast(Constant.CHECKOUT_STATUS_THREE); - } - else { + } else { tmp.setPayResultLast(Constant.CHECKOUT_STATUS_FOUR); } } - //可执行-- 校验 - if (!Constant.CHECKOUT_STATUS_ONE.equals(tmp.getExecResultLast())) { - String execSql = "select * from dba_tables where owner = '"+Configs.COLLECT_STANDARD_TABLE_USER.toUpperCase() - + "' and table_name = '"+Configs.COLLECT_EXEC_TABLE.toUpperCase() +"'"; - if(OracleConnector.execUpdateOracleSQL(conn, execSql, - FileOperateHelper.addLastSeparator(Configs.EXTRACT_STANDARD_LOG_LOCALTION)+ logName +"jy.log")){ + // 可执行-- 校验 + if (!Constant.CHECKOUT_STATUS_ONE.equals(tmp + .getExecResultLast())) { + String execSql = "select * from dba_tables where owner = '" + + Configs.COLLECT_STANDARD_TABLE_USER + .toUpperCase() + + "' and table_name = '" + + Configs.COLLECT_EXEC_TABLE.toUpperCase() + + "'"; + if (OracleConnector + .execUpdateOracleSQL( + conn, + execSql, + FileOperateHelper + .addLastSeparator(Configs.EXTRACT_STANDARD_LOG_LOCALTION) + + logName + "jy.log")) { tmp.setExecResultLast(Constant.CHECKOUT_STATUS_THREE); - }else { + } else { tmp.setExecResultLast(Constant.CHECKOUT_STATUS_FOUR); } } tmp.setCheckoutFlag(Constant.CHECKOUTFLAG_ONE); - // 更新数据库data_info + // 更新数据库data_info updateDataInfo(tmp); - // 将 CacheOracleCheckoutEntity checkMap中的 数据 放入extractMap中 - /*CacheOracleCheckoutEntity.putExtract(key, */CacheOracleCheckoutEntity.checkRemove(key)/*)*/; + // 将 CacheOracleCheckoutEntity checkMap中的 数据 + // 放入extractMap中 + /* CacheOracleCheckoutEntity.putExtract(key, */CacheOracleCheckoutEntity + .checkRemove(key)/* ) */; // 更新kuber状态 - cmd2 = "kubectl annotate --overwrite rc " - + key + " checkoutFlag=1"; + cmd2 = "kubectl annotate --overwrite rc " + key + + " checkoutFlag=1"; // client.updateOrAddReplicasLabelById(taskNSyame, // "status", "2"); rList = Constant.ganymedSSH @@ -250,34 +279,36 @@ public class ThreadCheckoutStandardOracle extends Thread { sb.append(str).append("\n"); log.info(sb.toString()); message = "成功"; - log.info("更新replicationController标签: " - + key + "\t[标签更新为: 已校验]"); + log.info("更新replicationController标签: " + key + + "\t[标签更新为: 已校验]"); } catch (Exception e) { log.error(e); } - // 成功 就 清除 CacheOracleCheckoutEntity 中 的该条记录 + // 成功 就 清除 CacheOracleCheckoutEntity 中 的该条记录 CacheOracleCheckoutEntity.checkRemove(key); } - log.info("连接到数据库服务: " + key - + "\t[连接结果: " + message + "]"); + log.info("连接到数据库服务: " + key + "\t[连接结果: " + message + "]"); } - + } } - - /** 更新 dataInfo表 + + /** + * 更新 dataInfo表 + * * @param checkoutEntity - * @throws Exception + * @throws Exception */ private void updateDataInfo(CheckoutEntity checkoutEntity) throws Exception { DataInfoEntity data = new DataInfoEntity(); - // 状态改为 正则校验 Constant.CHECKOUTFLAG_TWO + // 状态改为 正则校验 Constant.CHECKOUTFLAG_TWO data.setId(checkoutEntity.getDataId()); data.setPayResultLast(checkoutEntity.getPayResultLast()); data.setExecResultLast(checkoutEntity.getExecResultLast()); data.setCheckoutFlag(checkoutEntity.getCheckoutFlag()); dataInfoDao.update(data); - DataInfoEntity tmpdata = dataInfoDao.findById(checkoutEntity.getDataId()); + DataInfoEntity tmpdata = dataInfoDao.findById(checkoutEntity + .getDataId()); data.setId(tmpdata.getSrcId()); dataInfoDao.update(data); } diff --git a/src/com/platform/utils/Configs.java b/src/com/platform/utils/Configs.java index 5a16e1fc..d1ed3c52 100644 --- a/src/com/platform/utils/Configs.java +++ b/src/com/platform/utils/Configs.java @@ -27,6 +27,7 @@ public class Configs { public static String KUBE_MASTER_URL = "http://192.168.0.110:8080/"; // kubernetes集群的maser // URl + public static String KUBE_MASTER_IP="127.0.0.1:8080"; // public static int ORACLE_DEFAULT_PORT = 1521; // oracle的默认端口号 diff --git a/src/com/platform/utils/ConfigsLoader.java b/src/com/platform/utils/ConfigsLoader.java index e2c394fb..dd9f418a 100644 --- a/src/com/platform/utils/ConfigsLoader.java +++ b/src/com/platform/utils/ConfigsLoader.java @@ -63,6 +63,8 @@ public class ConfigsLoader implements ServletContextListener { Configs.GATHER_SERVICE_NAME = properties .getProperty("gather-service-name"); + + Configs.KUBE_MASTER_IP= properties.getProperty("kuberMasterIp"); Configs.TABLE_SUFFIX = properties.getProperty("table-suffix"); diff --git a/src/com/platform/utils/GanymedSSH.java b/src/com/platform/utils/GanymedSSH.java index 611f4e5e..0f34140c 100644 --- a/src/com/platform/utils/GanymedSSH.java +++ b/src/com/platform/utils/GanymedSSH.java @@ -114,6 +114,9 @@ public class GanymedSSH { Session sess = null; try { // conn = getOpenedConnection(host, username, password, port); + if (null != conn) { +// conn=getOpenedConnection(Configs., username, password, port) + } sess = conn.openSession(); // 执锟斤拷cmd sess.execCommand(cmd);