diff --git a/fine-druid/src/main/java/com/fr/third/alibaba/druid/util/MySqlUtils.java b/fine-druid/src/main/java/com/fr/third/alibaba/druid/util/MySqlUtils.java index c5523d370..fb1576c4c 100644 --- a/fine-druid/src/main/java/com/fr/third/alibaba/druid/util/MySqlUtils.java +++ b/fine-druid/src/main/java/com/fr/third/alibaba/druid/util/MySqlUtils.java @@ -16,6 +16,7 @@ package com.fr.third.alibaba.druid.util; import com.fr.third.alibaba.druid.DbType; +import com.fr.third.alibaba.druid.proxy.jdbc.ConnectionProxy; import com.fr.third.alibaba.druid.sql.SQLUtils; import com.fr.third.alibaba.druid.sql.ast.statement.SQLCreateTableStatement; @@ -403,8 +404,13 @@ public class MySqlUtils { } public static long getLastPacketReceivedTimeMs(Connection conn) throws SQLException { - - ClassLoader cl = conn.getClass().getClassLoader(); + // durid监控若开启,Connection 对象是 ConnectionProxy ,且ConnectionProxy和Connection不是一个同一个类加载器 + ClassLoader cl; + if (conn instanceof ConnectionProxy) { + cl = ((ConnectionProxy) conn).getRawObject().getClass().getClassLoader(); + } else { + cl = conn.getClass().getClassLoader(); + } ConnectionClass cc = classLoaderConnectionClassMap.compute(cl, (k, v) -> { if (v == null || v.class_connectionImpl.getClassLoader() != cl) { return new ConnectionClass();