From 027c12d130251fa300646402eb8cf7d2603fa607 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Fri, 18 Oct 2024 11:54:26 +0800 Subject: [PATCH] 'commit' --- .../com/dsideal/base/BaseApplication.java | 22 ----------- .../com/dsideal/base/Util/CommonUtil.java | 38 ++++++++++++------- .../src/main/resources/application_ali.yaml | 2 +- .../src/main/resources/application_dev.yaml | 2 +- .../src/main/resources/application_pro.yaml | 2 +- 5 files changed, 27 insertions(+), 39 deletions(-) diff --git a/dsBase/src/main/java/com/dsideal/base/BaseApplication.java b/dsBase/src/main/java/com/dsideal/base/BaseApplication.java index 8108543e..9736ac37 100644 --- a/dsBase/src/main/java/com/dsideal/base/BaseApplication.java +++ b/dsBase/src/main/java/com/dsideal/base/BaseApplication.java @@ -104,38 +104,16 @@ public class BaseApplication extends JFinalConfig { } - /** - * 配置插件 - */ - private String connectionTestQuery = "select 1"; - // 连接池中允许的最大连接数。缺省值:10;推荐的公式:((core_count * 2) + effective_spindle_count) - private int maxPoolSize = 10; - // 一个连接 idle 状态的最大时长(毫秒),超时则被释放(retired),缺省:10分钟 - private long idleTimeoutMs = 600000; - private long maxLifetimeMs = 1800000; - // 等待连接池分配连接的最大时长(毫秒),超过这个时长还没可用的连接则发生 SQLException, 缺省:30秒 - private long connectionTimeoutMs = 30000; - @SneakyThrows @Override public void configPlugin(Plugins me) { HikariCpPlugin masterPlugin = new HikariCpPlugin(PropKit.get("mysql.jdbcUrl"), PropKit.get("mysql.user"), PropKit.get("mysql.password").trim(), PropKit.get("mysql.driverClassName")); - masterPlugin.setConnectionTestQuery(connectionTestQuery); - masterPlugin.setConnectionTimeout(connectionTimeoutMs); - masterPlugin.setIdleTimeout(idleTimeoutMs); - masterPlugin.setMaxLifetime(maxLifetimeMs); - masterPlugin.setMaximumPoolSize(maxPoolSize); String jdbcUrlSlave = PropKit.get("mysql.jdbcUrlSlave"); if (StrKit.isBlank(jdbcUrlSlave)) jdbcUrlSlave = PropKit.get("mysql.jdbcUrl"); HikariCpPlugin slavePlugin = new HikariCpPlugin(jdbcUrlSlave, PropKit.get("mysql.user"), PropKit.get("mysql.password").trim(), PropKit.get("mysql.driverClassName")); - slavePlugin.setConnectionTestQuery(connectionTestQuery); - slavePlugin.setConnectionTimeout(connectionTimeoutMs); - slavePlugin.setIdleTimeout(idleTimeoutMs); - slavePlugin.setMaxLifetime(maxLifetimeMs); - slavePlugin.setMaximumPoolSize(maxPoolSize); me.add(masterPlugin); me.add(slavePlugin); diff --git a/dsBase/src/main/java/com/dsideal/base/Util/CommonUtil.java b/dsBase/src/main/java/com/dsideal/base/Util/CommonUtil.java index 1145b67d..029358c0 100644 --- a/dsBase/src/main/java/com/dsideal/base/Util/CommonUtil.java +++ b/dsBase/src/main/java/com/dsideal/base/Util/CommonUtil.java @@ -16,8 +16,11 @@ import org.slf4j.LoggerFactory; import java.io.*; import java.net.JarURLConnection; import java.net.MalformedURLException; +import java.net.URISyntaxException; import java.net.URL; import java.nio.charset.StandardCharsets; +import java.security.CodeSource; +import java.security.ProtectionDomain; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -52,30 +55,37 @@ public class CommonUtil { * @return 文件内容 * @throws IOException */ - public static String txt2String(String path) { + public static String txt2String(String path) { InputStream is = CommonUtil.class.getClassLoader().getResourceAsStream(path); return IoUtil.read(is, "UTF-8"); } + /** * 获取所有sql文件,并返回一个list集合 * * @return */ - public static List getAllSql() throws IOException { + public static List getAllSql() throws IOException, URISyntaxException { List list = new ArrayList<>(); if (isRunInJar()) { - URL url = CommonUtil.class.getClassLoader().getResource("Sql/"); - String jarPath = url.toString().substring(0, url.toString().indexOf("!/") + 2); - URL jarURL = new URL(jarPath); - JarURLConnection jarCon = (JarURLConnection) jarURL.openConnection(); - JarFile jarFile = jarCon.getJarFile(); - Enumeration jarEntrys = jarFile.entries(); - while (jarEntrys.hasMoreElements()) { - JarEntry entry = jarEntrys.nextElement(); - String name = entry.getName(); - if (name.startsWith("Sql/") && !entry.isDirectory()) { - list.add(name); + // 获取当前类的ProtectionDomain + ProtectionDomain domain = CommonUtil.class.getProtectionDomain(); + // 获取CodeSource + CodeSource source = domain.getCodeSource(); + // 获取Jar文件的URL + URL jarUrl = source.getLocation(); + // 获取Jar文件的路径 + String jarPath = jarUrl.toURI().getSchemeSpecificPart(); + // 打开Jar文件 + JarFile jarFile = new JarFile(jarPath); + // 遍历Jar中的所有条目 + Enumeration entries = jarFile.entries(); + while (entries.hasMoreElements()) { + JarEntry entry = entries.nextElement(); + // 检查条目是否是SQL文件 + if (entry.getName().startsWith("Sql/") && entry.getName().toLowerCase().endsWith(".sql")) { + list.add(entry.getName()); } } } else {//如果运行在文件系统中,直接加载sql文件 @@ -86,7 +96,7 @@ public class CommonUtil { File[] sqlFiles = sqlDir.listFiles(); for (File sqlFile : sqlFiles != null ? sqlFiles : new File[0]) { if (sqlFile.getName().indexOf(".sql") > 0) {//只加载.sql文件 - list.add("Sql/"+sqlFile.getName()); + list.add("Sql/" + sqlFile.getName()); } } } diff --git a/dsBase/src/main/resources/application_ali.yaml b/dsBase/src/main/resources/application_ali.yaml index 0af87d49..97dbd6f5 100644 --- a/dsBase/src/main/resources/application_ali.yaml +++ b/dsBase/src/main/resources/application_ali.yaml @@ -10,7 +10,7 @@ mysql: driverClassName: com.mysql.cj.jdbc.Driver user: ylt password: Ycharge666 - jdbcUrl : jdbc:mysql://rm-bp1ux6tuk49er80t9.mysql.rds.aliyuncs.com:3306/ds_db?useUnicode=true&characterEncoding=UTF-8 + jdbcUrl : jdbc:mysql://rm-bp1ux6tuk49er80t9.mysql.rds.aliyuncs.com:3306/ds_db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false redis: diff --git a/dsBase/src/main/resources/application_dev.yaml b/dsBase/src/main/resources/application_dev.yaml index 7673bd7f..fafd6f22 100644 --- a/dsBase/src/main/resources/application_dev.yaml +++ b/dsBase/src/main/resources/application_dev.yaml @@ -10,7 +10,7 @@ mysql: driverClassName: com.mysql.cj.jdbc.Driver user: root password: DsideaL147258369 - jdbcUrl : jdbc:mysql://10.10.14.210:22066/ds_db?rewriteBatchedStatements=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai + jdbcUrl : jdbc:mysql://10.10.14.210:22066/ds_db?rewriteBatchedStatements=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false redis: diff --git a/dsBase/src/main/resources/application_pro.yaml b/dsBase/src/main/resources/application_pro.yaml index 0af87d49..97dbd6f5 100644 --- a/dsBase/src/main/resources/application_pro.yaml +++ b/dsBase/src/main/resources/application_pro.yaml @@ -10,7 +10,7 @@ mysql: driverClassName: com.mysql.cj.jdbc.Driver user: ylt password: Ycharge666 - jdbcUrl : jdbc:mysql://rm-bp1ux6tuk49er80t9.mysql.rds.aliyuncs.com:3306/ds_db?useUnicode=true&characterEncoding=UTF-8 + jdbcUrl : jdbc:mysql://rm-bp1ux6tuk49er80t9.mysql.rds.aliyuncs.com:3306/ds_db?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&failOverReadOnly=false redis: