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) {