From 7312dbc4c5de0fe669c43393c3cd7e31b4af78bb Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Tue, 21 Aug 2018 10:06:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0H2=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/boot/ClassFilter.java | 12 +++++++----- src/org/redkale/source/PoolJdbcSource.java | 5 +++++ src/org/redkale/source/PoolSource.java | 1 + 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/org/redkale/boot/ClassFilter.java b/src/org/redkale/boot/ClassFilter.java index e39606a35..7ef0ef5d5 100644 --- a/src/org/redkale/boot/ClassFilter.java +++ b/src/org/redkale/boot/ClassFilter.java @@ -7,7 +7,7 @@ package org.redkale.boot; import java.io.*; import java.lang.annotation.*; -import java.lang.reflect.*; +import java.lang.reflect.Modifier; import java.net.*; import java.util.*; import java.util.concurrent.*; @@ -30,7 +30,7 @@ public final class ClassFilter { private static final Logger logger = Logger.getLogger(ClassFilter.class.getName()); //日志对象 - private static final boolean finer = logger.isLoggable(Level.FINER); //日志级别 + private static final boolean finest = logger.isLoggable(Level.FINEST); //日志级别 private final Set> entrys = new HashSet<>(); //符合条件的结果 @@ -189,9 +189,10 @@ public final class ClassFilter { entrys.add(new FilterEntry(clazz, autoscan, false, property)); } } catch (Throwable cfe) { - if (finer && !clazzname.startsWith("sun.") && !clazzname.startsWith("javax.") - && !clazzname.startsWith("com.sun.") && !clazzname.startsWith("jdk.")) { - logger.log(Level.FINEST, ClassFilter.class.getSimpleName() + " filter error", cfe); + if (finest && !clazzname.startsWith("sun.") && !clazzname.startsWith("javax.") + && !clazzname.startsWith("com.sun.") && !clazzname.startsWith("jdk.") && !clazzname.startsWith("META-INF") + && (!(cfe instanceof NoClassDefFoundError) || ((NoClassDefFoundError) cfe).getMessage().startsWith("java.lang.NoClassDefFoundError: java"))) { + logger.log(Level.FINEST, ClassFilter.class.getSimpleName() + " filter error for class: " + clazzname, cfe); } } } @@ -347,6 +348,7 @@ public final class ClassFilter { public void setPrivilegeExcludes(Set privilegeExcludes) { this.privilegeExcludes = privilegeExcludes == null || privilegeExcludes.isEmpty() ? null : privilegeExcludes; + } /** diff --git a/src/org/redkale/source/PoolJdbcSource.java b/src/org/redkale/source/PoolJdbcSource.java index c20afebb6..d4eaa4c80 100644 --- a/src/org/redkale/source/PoolJdbcSource.java +++ b/src/org/redkale/source/PoolJdbcSource.java @@ -86,6 +86,8 @@ public class PoolJdbcSource extends PoolSource { source0 = "org.postgresql.Driver"; } else if (url.startsWith("jdbc:microsoft:sqlserver:")) { source0 = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; + } else if (url.startsWith("jdbc:h2")) { + source0 = "org.h2.Driver"; } } if (source0 != null && source0.contains("Driver")) { //为了兼容JPA的配置文件 @@ -111,6 +113,9 @@ public class PoolJdbcSource extends PoolSource { case "com.microsoft.sqlserver.jdbc.SQLServerDriver": source = "com.microsoft.sqlserver.jdbc.SQLServerConnectionPoolDataSource"; break; + case "org.h2.Driver": + source = "org.h2.jdbcx.JdbcDataSource"; + break; } } final Class clazz = Thread.currentThread().getContextClassLoader().loadClass(source); diff --git a/src/org/redkale/source/PoolSource.java b/src/org/redkale/source/PoolSource.java index 70feffb1d..f13ffef5c 100644 --- a/src/org/redkale/source/PoolSource.java +++ b/src/org/redkale/source/PoolSource.java @@ -123,6 +123,7 @@ public abstract class PoolSource { } protected void parseAddressAndDbnameAndAttrs() { + if (this.url.startsWith("jdbc:h2:")) return; String url0 = this.url.substring(this.url.indexOf("://") + 3); int pos = url0.indexOf('?'); //127.0.0.1:5432/db?charset=utr8&xxx=yy if (pos > 0) {