diff --git a/WebContent/WEB-INF/config/config.properties b/WebContent/WEB-INF/config/config.properties index d1c7ae8d..050f4bfa 100644 --- a/WebContent/WEB-INF/config/config.properties +++ b/WebContent/WEB-INF/config/config.properties @@ -4,7 +4,7 @@ # 驱动程序 jdbc.mysql.driver=com.mysql.jdbc.Driver # 连接url -jdbc.mysql.url=jdbc:mysql://192.168.0.102:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true +jdbc.mysql.url=jdbc:mysql://192.168.0.101:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true # 用户名 jdbc.mysql.username=root # 密码 diff --git a/src/com/platform/entities/OracleConnectorParams.java b/src/com/platform/entities/OracleConnectorParams.java index 829e8d55..0e1ba753 100644 --- a/src/com/platform/entities/OracleConnectorParams.java +++ b/src/com/platform/entities/OracleConnectorParams.java @@ -15,6 +15,7 @@ public class OracleConnectorParams { public OracleConnectorParams() { // TODO Auto-generated constructor stub + maybeInit(); } public OracleConnectorParams(String port, String ip, String name) { diff --git a/src/com/platform/service/OracleStatusService.java b/src/com/platform/service/OracleStatusService.java index c3bdc787..1ab45fb4 100644 --- a/src/com/platform/service/OracleStatusService.java +++ b/src/com/platform/service/OracleStatusService.java @@ -19,29 +19,18 @@ public class OracleStatusService { private static Map alliveTask = new Hashtable(); public final static int EXEC_TIME = 9;// 连接多少次后不成功,取消链接 public final static long INTERVAL_TIME = 60 * 1000;// 每隔多少毫秒执行一次连接任务 - public final static long DELAY_TIME = 0; // 延迟多少秒后执行 + public final static long DELAY_TIME = 30 * 1000; // 延迟多少秒后执行 public void connectToOracle(String replicasName) { SimpleKubeClient sKubeClient = new SimpleKubeClient(); - ReplicationController replicationController = sKubeClient - .getReplicationController(replicasName); if (alliveTask.containsKey(replicasName)) { killAlliveTask(replicasName); } - if (null != replicationController) { - List filterPods = sKubeClient - .getPodsForApplicaList(replicationController); - if (filterPods != null && filterPods.size() > 0) { - Pod pod = filterPods.get(0); - OracleConnectorParams orp = new OracleConnectorParams( - String.valueOf(sKubeClient.getPodContainerport(pod)), - sKubeClient.getPodHostIp(pod), replicasName); - Timer timer = new Timer(); - alliveTask.put(replicasName, timer); - timer.schedule(new connectTask(orp, sKubeClient), DELAY_TIME, - INTERVAL_TIME); - } - } + OracleConnectorParams orp = new OracleConnectorParams(); + Timer timer = new Timer(); + alliveTask.put(replicasName, timer); + timer.schedule(new connectTask(replicasName, orp, sKubeClient), DELAY_TIME, + INTERVAL_TIME); } @@ -96,46 +85,75 @@ public class OracleStatusService { private int count; private OracleConnectorParams ocp; private SimpleKubeClient client; + + public connectTask(String taskName, OracleConnectorParams ocp, SimpleKubeClient client){ + this.taskName = taskName; + this.ocp = ocp; + this.count = 0; + this.client = client; + } + public connectTask(OracleConnectorParams ocp, SimpleKubeClient client) { this.taskName = ocp.getName(); this.ocp = ocp; this.count = 0; - this.client = client; + this.client = client; } @Override public void run() { - if (count == EXEC_TIME && alliveTask.containsKey(taskName)) { + if (count == EXEC_TIME && alliveTask.containsKey(taskName)) { //如果任务已经执行10次,则任务oracle启动失败,并取消oracle连接 killAlliveTask(taskName); - client.updateOrAddReplicasLabelById(taskName, "status", "1"); - Configs.CONSOLE_LOGGER.info("更新replicationController标签: " + taskName - + "\t[标签更新为: 失败]"); - } else { - String url = "jdbc:oracle:thin:@" + ocp.getIp() + ":" - + ocp.getPort() + ":" + ocp.getDatabaseName(); - System.out.println("url:" + url +",user:" + ocp.getUser() + ",password:" + ocp.getPassword()); - boolean flag = OracleConnector.canConnect(url, ocp.getUser(), - ocp.getPassword()); - String message = "失败"; - if (flag && alliveTask.containsKey(taskName)) { - client.updateOrAddReplicasLabelById(taskName, "status", "2"); - message = "成功"; - killAlliveTask(taskName); // 连接成功,取消连接 - Configs.CONSOLE_LOGGER.info("更新replicationController标签: " + taskName - + "\t[标签更新为: 成功]"); + client.updateOrAddReplicasLabelById(taskName, "status", "1"); //更新ReplicationController标签,将oracle状态标示未1(0:启动中,1:失败,2:成功) + Configs.CONSOLE_LOGGER.info("更新replicationController标签: " + + taskName + "\t[标签更新为: 失败]"); + } else { //否则,执行连接oracle任务,判断oracle是否启动成功 + Pod pod = filterPod(); + 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 + + ":" + ocp.getDatabaseName(); + boolean flag = OracleConnector.canConnect(url, //连接结果返回参数,true标示连接成功,false标示连接失败 + ocp.getUser(), ocp.getPassword()); + Configs.CONSOLE_LOGGER.info("url:" + url + ",user:" + + ocp.getUser() + ",password:" + + ocp.getPassword()); + String message = "失败"; + if (flag && alliveTask.containsKey(taskName)) { + client.updateOrAddReplicasLabelById(taskName, + "status", "2"); + message = "成功"; + killAlliveTask(taskName); // 连接成功,取消连接 + Configs.CONSOLE_LOGGER + .info("更新replicationController标签: " + + taskName + "\t[标签更新为: 成功]"); + } + Configs.CONSOLE_LOGGER.info("连接到数据库服务: " + taskName + + "\t[连接结果: " + message + "]"); + } } - Configs.CONSOLE_LOGGER.info("连接到数据库服务: " + taskName - + "\t[连接结果: " + message + "]"); } count++; } - @Override - public boolean cancel() { - System.out.println("aaaaaaa"); - if (client != null) - this.client.close(); - return super.cancel(); + /** + * 获取oracle的连接ip地址和端口号 + * @return + */ + private Pod filterPod() { + Pod pod = null; + ReplicationController replicationController = client + .getReplicationController(taskName); + if (null != replicationController) { + List filterPods = client + .getPodsForApplicaList(replicationController); + if (filterPods != null && filterPods.size() > 0) { + pod = filterPods.get(0); + } + } + return pod; } public String getTaskName() {