diff --git a/WebContent/WEB-INF/config/config.properties b/WebContent/WEB-INF/config/config.properties index 85206165..a6b21eb0 100644 --- a/WebContent/WEB-INF/config/config.properties +++ b/WebContent/WEB-INF/config/config.properties @@ -56,6 +56,7 @@ gather-table-user-password=user #kuber's url must exist kubeMasterUrl=http://192.168.0.110:8080/ +kubeMasterAddress=192.168.0.110:8080 collect-user-name=system collect-password=oracle @@ -85,34 +86,34 @@ oracle-psw=oracle # windows path #============================================================================================================= -#extract-log-localtion=D:\\test\\log\\ -#extract-standard-log-localtion=D:\\test\\log2\\ -# -#file_upload_path=D:\\test\\ -#file_download_path=D:\\test\\export.xlsx -# -#package_download_path=D:\\test\\ -#package_name=sql_script_standard -# -#sql_script_path_last=D:\\test\\sql_script_last\\ -#sql_script_path_standard=D:\\test\\sql_script_standard\\ +extract-log-localtion=D:\\test\\log\\ +extract-standard-log-localtion=D:\\test\\log2\\ + +file_upload_path=D:\\test\\ +file_download_path=D:\\test\\export.xlsx + +package_download_path=D:\\test\\ +package_name=sql_script_standard + +sql_script_path_last=D:\\test\\sql_script_last\\ +sql_script_path_standard=D:\\test\\sql_script_standard\\ #============================================================================================================= # linux path #============================================================================================================= -# extract's log file location -extract-log-localtion=/home/web_manage/log/ -# standard extract's log file location -extract-standard-log-localtion=/home/web_manage/log2/ -#import excel file's location -file_upload_path=/excel_import_dir/ -#export excel file's location -file_download_path=/excel_export_dir/export.xlsx -#file package download's location -package_download_path=/ -#file package's name -package_name=DefaultDescription -#location of sql script lastest -sql_script_path_last=/DefaultDescription_last/ -#location of sql script standard -sql_script_path_standard=/DefaultDescription/ +## extract's log file location +#extract-log-localtion=/home/web_manage/log/ +## standard extract's log file location +#extract-standard-log-localtion=/home/web_manage/log2/ +##import excel file's location +#file_upload_path=/excel_import_dir/ +##export excel file's location +#file_download_path=/excel_export_dir/export.xlsx +##file package download's location +#package_download_path=/ +##file package's name +#package_name=DefaultDescription +##location of sql script lastest +#sql_script_path_last=/DefaultDescription_last/ +##location of sql script standard +#sql_script_path_standard=/DefaultDescription/ diff --git a/src/com/platform/controller/DataModelController.java b/src/com/platform/controller/DataModelController.java index 99e7d879..6e54c5a7 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,8 @@ 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 --server " + Configs.KUBE_MASTER_ADDRESS + + " label --overwrite rc " + rcName + " status=0"; List rList = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd); StringBuffer sb = new StringBuffer(); @@ -243,7 +244,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 +294,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 +464,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/oracle/OracleConnector.java b/src/com/platform/oracle/OracleConnector.java index d5d9d5aa..49c3b9f5 100644 --- a/src/com/platform/oracle/OracleConnector.java +++ b/src/com/platform/oracle/OracleConnector.java @@ -58,7 +58,18 @@ public class OracleConnector { } catch (CustomException e) { log.error(Custom4exception.OracleSQL_Except, e); } - return (null != result); + if(null != result){ + try { + result.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return true; + } + else{ + return false; + } } public synchronized static ResultSet getSQLExecResultSet(Connection conn, diff --git a/src/com/platform/service/OracleExtractTask.java b/src/com/platform/service/OracleExtractTask.java index 90a68b6c..05d59d92 100644 --- a/src/com/platform/service/OracleExtractTask.java +++ b/src/com/platform/service/OracleExtractTask.java @@ -51,7 +51,8 @@ public class OracleExtractTask extends AbstractOracleExtractTask { createConnectUrl(), gatherOracleInfo.getUser(), gatherOracleInfo.getPassword(), oc); if (null != conn) { - String cmd = "kubectl label --overwrite rc " + oc.getName() + String cmd = "kubectl --server " + Configs.KUBE_MASTER_ADDRESS + + " label --overwrite rc " + oc.getName() + " isExtract=1"; OracleExtract.updateDataExtractStatus(oc, 1); // 更新数据库的状态 FileOperateHelper @@ -72,7 +73,8 @@ public class OracleExtractTask extends AbstractOracleExtractTask { oracleExtract.createTableSpace(conn, oc, gatherOracleInfo); // 创建表空间 oracleExtract.createUser(conn, oc, gatherOracleInfo);// 创建用户并授权 oracleExtract.extractColleDB(conn, oc, gatherOracleInfo);// 执行抽取 - cmd = "kubectl label --overwrite rc " + oc.getName() + cmd = "kubectl --server " + Configs.KUBE_MASTER_ADDRESS + + " label --overwrite rc " + oc.getName() + " isExtract=2"; rList = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd); sb = new StringBuffer(); @@ -88,6 +90,7 @@ public class OracleExtractTask extends AbstractOracleExtractTask { .date2StringBysecond(new Date()) + "]>>>>>>>>>>>>>>>>汇总结束 >>>>>>>>>>>>>>>>>>\r\n\r\n"); OracleExtract.updateDataExtractStatus(oc, 2); // 更新数据库的状态 + conn.close(); // 关闭连接 } } catch (Exception e) { log.error(Custom4exception.OracleSQL_Except, e); diff --git a/src/com/platform/service/OracleStatusService.java b/src/com/platform/service/OracleStatusService.java index b2a908ed..269679ec 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,8 @@ 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 --server " + Configs.KUBE_MASTER_ADDRESS + + " label --overwrite rc " + replicasName + " status=0"; List rList = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd); StringBuffer sb = new StringBuffer(); @@ -120,8 +122,8 @@ 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 --server " + Configs.KUBE_MASTER_ADDRESS + + " label --overwrite rc " + taskName + " status=1"; List rList = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd); StringBuffer sb = new StringBuffer(); @@ -144,8 +146,10 @@ public class OracleStatusService { + ocp.getPassword()); String message = "失败"; if (flag && alliveTask.containsKey(taskName)) { - String cmd = "kubectl label --overwrite rc " - + taskName + " status=2"; + String cmd = "kubectl --server " + + Configs.KUBE_MASTER_ADDRESS + + " label --overwrite rc " + taskName + + " status=2"; // client.updateOrAddReplicasLabelById(taskNSyame, // "status", "2"); List rList = Constant.ganymedSSH diff --git a/src/com/platform/service/impl/OracleExtractServiceImpl.java b/src/com/platform/service/impl/OracleExtractServiceImpl.java index 66fc6597..fc136cac 100644 --- a/src/com/platform/service/impl/OracleExtractServiceImpl.java +++ b/src/com/platform/service/impl/OracleExtractServiceImpl.java @@ -87,8 +87,10 @@ 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 --server " + + Configs.KUBE_MASTER_ADDRESS + + " label --overwrite rc " + replicasName + + " isExtract=1"; // sql日志记录时间: FileOperateHelper .fileWrite( @@ -118,7 +120,8 @@ public class OracleExtractServiceImpl implements IOracleExtractService { // client.updateOrAddReplicasLabelById(collectOracle.getName(), // "isExtract", "2"); // //更新oracle汇总状态,0标示为未汇总,1标示汇总中,2标示汇总完成 - cmd = "kubectl label --overwrite rc " + replicasName + cmd = "kubectl --server " + Configs.KUBE_MASTER_ADDRESS + + " label --overwrite rc " + replicasName + " isExtract=2"; rList = Constant.ganymedSSH.execCmdWaitAcquiescent(cmd); sb = new StringBuffer(); @@ -127,7 +130,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 +145,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; @@ -191,6 +193,7 @@ public class OracleExtractServiceImpl implements IOracleExtractService { // "]\r\n"); } else { isConnect = oracleExtract.testConnect(conn); + conn.close(); // 关闭连接 } return isConnect; } @@ -200,166 +203,164 @@ 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 --server " + + Configs.KUBE_MASTER_ADDRESS + + " 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 --server " + Configs.KUBE_MASTER_ADDRESS + + " 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 --server " + Configs.KUBE_MASTER_ADDRESS + + " 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..b5d591fa 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,48 +71,53 @@ 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 --server " + + Configs.KUBE_MASTER_ADDRESS + + " 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 + + String cmd2 = "kubectl --server " + + Configs.KUBE_MASTER_ADDRESS + + " annotate --overwrite rc " + key + " checkoutFlag=0"; List rList2 = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd2); 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 +126,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 +155,40 @@ 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 --server " + Configs.KUBE_MASTER_ADDRESS + + " 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 --server " + + Configs.KUBE_MASTER_ADDRESS + + " label --overwrite rc " + key + " status=2"; // 设置服务为 成功 List rList = Constant.ganymedSSH .execCmdWaitAcquiescent(cmd); @@ -186,61 +197,90 @@ 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 --server " + + Configs.KUBE_MASTER_ADDRESS + + " 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 --server " + + Configs.KUBE_MASTER_ADDRESS + + " annotate --overwrite rc " + key + + " checkoutFlag=1"; // client.updateOrAddReplicasLabelById(taskNSyame, // "status", "2"); rList = Constant.ganymedSSH @@ -250,34 +290,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..c151071e 100644 --- a/src/com/platform/utils/Configs.java +++ b/src/com/platform/utils/Configs.java @@ -27,6 +27,8 @@ public class Configs { public static String KUBE_MASTER_URL = "http://192.168.0.110:8080/"; // kubernetes集群的maser // URl + + public static String KUBE_MASTER_ADDRESS="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..1a25a232 100644 --- a/src/com/platform/utils/ConfigsLoader.java +++ b/src/com/platform/utils/ConfigsLoader.java @@ -78,6 +78,8 @@ public class ConfigsLoader implements ServletContextListener { Configs.GATHER_TABLESPACE_PATH = properties .getProperty("gather-tablespace-path"); + Configs.KUBE_MASTER_ADDRESS= properties.getProperty("kubeMasterAddress"); + Configs.GATHER_TABLE_PASSWORD=properties.getProperty("gather-table-user-password"); Configs.FILE_UPLOAD_PATH = properties.getProperty("file_upload_path");