From a9e2a07e49b60718e3b3f4277478a88244f2c7df Mon Sep 17 00:00:00 2001 From: ascrutae Date: Wed, 15 Jun 2016 21:06:35 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84JDBC=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CallableStatementTracing.java | 2 +- .../jdbc/{driver => }/ConnectionTracing.java | 2 +- .../{driver => }/JDBCBuriedPointType.java | 2 +- .../plugin/jdbc/JDBCPluginDefine.java | 1 - .../PreparedStatementTracing.java | 2 +- .../{driver => }/SWCallableStatement.java | 2 +- .../jdbc/{driver => }/SWConnection.java | 2 +- .../{driver => }/SWPreparedStatement.java | 2 +- .../plugin/jdbc/{driver => }/SWStatement.java | 2 +- .../jdbc/{driver => }/StatementTracing.java | 2 +- .../skywalking/plugin/jdbc/TracingDriver.java | 159 ++++++++++++++++++ .../plugin/jdbc/driver/DriverChooser.java | 37 ---- .../plugin/jdbc/driver/TracingDriver.java | 115 ------------- .../src/main/resources/driver-mapping-url.def | 8 + .../resources/driver-mapping-url.properties | 16 -- .../plugin/mysql/MysqlJDBCTest.java | 2 +- 16 files changed, 177 insertions(+), 179 deletions(-) rename skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/{driver => }/CallableStatementTracing.java (96%) rename skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/{driver => }/ConnectionTracing.java (96%) rename skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/{driver => }/JDBCBuriedPointType.java (92%) rename skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/{driver => }/PreparedStatementTracing.java (95%) rename skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/{driver => }/SWCallableStatement.java (99%) rename skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/{driver => }/SWConnection.java (99%) rename skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/{driver => }/SWPreparedStatement.java (99%) rename skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/{driver => }/SWStatement.java (99%) rename skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/{driver => }/StatementTracing.java (96%) create mode 100755 skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/TracingDriver.java delete mode 100644 skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/DriverChooser.java delete mode 100755 skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/TracingDriver.java create mode 100644 skywalking-sdk-plugin/jdbc-plugin/src/main/resources/driver-mapping-url.def delete mode 100644 skywalking-sdk-plugin/jdbc-plugin/src/main/resources/driver-mapping-url.properties diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/CallableStatementTracing.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/CallableStatementTracing.java similarity index 96% rename from skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/CallableStatementTracing.java rename to skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/CallableStatementTracing.java index c38177da12..9e9a4c0626 100644 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/CallableStatementTracing.java +++ b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/CallableStatementTracing.java @@ -1,4 +1,4 @@ -package com.ai.cloud.skywalking.plugin.jdbc.driver; +package com.ai.cloud.skywalking.plugin.jdbc; import com.ai.cloud.skywalking.buriedpoint.RPCBuriedPointSender; import com.ai.cloud.skywalking.model.Identification; diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/ConnectionTracing.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/ConnectionTracing.java similarity index 96% rename from skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/ConnectionTracing.java rename to skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/ConnectionTracing.java index 1bb560516b..e636fb0c85 100755 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/ConnectionTracing.java +++ b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/ConnectionTracing.java @@ -1,4 +1,4 @@ -package com.ai.cloud.skywalking.plugin.jdbc.driver; +package com.ai.cloud.skywalking.plugin.jdbc; import com.ai.cloud.skywalking.buriedpoint.RPCBuriedPointSender; import com.ai.cloud.skywalking.model.Identification; diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/JDBCBuriedPointType.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCBuriedPointType.java similarity index 92% rename from skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/JDBCBuriedPointType.java rename to skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCBuriedPointType.java index 9a90adbcc7..a1be729d06 100644 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/JDBCBuriedPointType.java +++ b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCBuriedPointType.java @@ -1,4 +1,4 @@ -package com.ai.cloud.skywalking.plugin.jdbc.driver; +package com.ai.cloud.skywalking.plugin.jdbc; import com.ai.cloud.skywalking.api.IBuriedPointType; import com.ai.cloud.skywalking.protocol.CallType; diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefine.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefine.java index 375a5403bb..37613109bd 100644 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefine.java +++ b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/JDBCPluginDefine.java @@ -11,7 +11,6 @@ import org.apache.logging.log4j.Logger; import com.ai.cloud.skywalking.plugin.boot.BootException; import com.ai.cloud.skywalking.plugin.boot.BootPluginDefine; -import com.ai.cloud.skywalking.plugin.jdbc.driver.TracingDriver; public class JDBCPluginDefine extends BootPluginDefine { private static Logger logger = LogManager.getLogger(JDBCPluginDefine.class); diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/PreparedStatementTracing.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/PreparedStatementTracing.java similarity index 95% rename from skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/PreparedStatementTracing.java rename to skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/PreparedStatementTracing.java index f8e232042d..ca4552304b 100644 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/PreparedStatementTracing.java +++ b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/PreparedStatementTracing.java @@ -1,4 +1,4 @@ -package com.ai.cloud.skywalking.plugin.jdbc.driver; +package com.ai.cloud.skywalking.plugin.jdbc; import com.ai.cloud.skywalking.buriedpoint.RPCBuriedPointSender; import com.ai.cloud.skywalking.model.Identification; diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/SWCallableStatement.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/SWCallableStatement.java similarity index 99% rename from skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/SWCallableStatement.java rename to skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/SWCallableStatement.java index 2eb2e21191..ea9040699e 100644 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/SWCallableStatement.java +++ b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/SWCallableStatement.java @@ -1,4 +1,4 @@ -package com.ai.cloud.skywalking.plugin.jdbc.driver; +package com.ai.cloud.skywalking.plugin.jdbc; import java.io.InputStream; import java.io.Reader; diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/SWConnection.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/SWConnection.java similarity index 99% rename from skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/SWConnection.java rename to skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/SWConnection.java index 316f49da3c..c1f679476d 100755 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/SWConnection.java +++ b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/SWConnection.java @@ -1,4 +1,4 @@ -package com.ai.cloud.skywalking.plugin.jdbc.driver; +package com.ai.cloud.skywalking.plugin.jdbc; import java.sql.*; import java.util.Map; diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/SWPreparedStatement.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/SWPreparedStatement.java similarity index 99% rename from skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/SWPreparedStatement.java rename to skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/SWPreparedStatement.java index 2ac0317b92..30e1fa0685 100644 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/SWPreparedStatement.java +++ b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/SWPreparedStatement.java @@ -1,4 +1,4 @@ -package com.ai.cloud.skywalking.plugin.jdbc.driver; +package com.ai.cloud.skywalking.plugin.jdbc; import java.io.InputStream; import java.io.Reader; diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/SWStatement.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/SWStatement.java similarity index 99% rename from skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/SWStatement.java rename to skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/SWStatement.java index cd4203c1a9..527cb5e74f 100644 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/SWStatement.java +++ b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/SWStatement.java @@ -1,4 +1,4 @@ -package com.ai.cloud.skywalking.plugin.jdbc.driver; +package com.ai.cloud.skywalking.plugin.jdbc; import java.sql.Connection; import java.sql.ResultSet; diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/StatementTracing.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/StatementTracing.java similarity index 96% rename from skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/StatementTracing.java rename to skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/StatementTracing.java index 7b3882596c..372f7f67d5 100644 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/StatementTracing.java +++ b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/StatementTracing.java @@ -1,4 +1,4 @@ -package com.ai.cloud.skywalking.plugin.jdbc.driver; +package com.ai.cloud.skywalking.plugin.jdbc; import com.ai.cloud.skywalking.buriedpoint.RPCBuriedPointSender; import com.ai.cloud.skywalking.model.Identification; diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/TracingDriver.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/TracingDriver.java new file mode 100755 index 0000000000..4634e1ad8c --- /dev/null +++ b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/TracingDriver.java @@ -0,0 +1,159 @@ +package com.ai.cloud.skywalking.plugin.jdbc; + +import com.ai.cloud.skywalking.conf.AuthDesc; +import org.apache.logging.log4j.LogManager; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.sql.*; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; +import java.util.Properties; +import java.util.logging.Logger; + +public class TracingDriver implements Driver { + private static org.apache.logging.log4j.Logger logger = LogManager.getLogger(TracingDriver.class); + + private static final String TRACING_SIGN = "tracing:"; + + public static final void registerDriver() { + try { + DriverManager.registerDriver(new TracingDriver()); + } catch (SQLException e) { + logger.error("register TracingDriver failure.", e); + } + } + + private String convertConnectURLIfNecessary(String url) throws SQLException { + if (url.toLowerCase().startsWith(TRACING_SIGN)) { + return url.substring(TRACING_SIGN.length()); + } else { + return url; + } + } + + public java.sql.Connection connect(String url, Properties info) + throws SQLException { + Driver driver = DriverChooser.choose(convertConnectURLIfNecessary(url)); + if (driver == null) { + throw new SQLException("Failed to choose driver by url[{}].", convertConnectURLIfNecessary(url)); + } + + java.sql.Connection conn = driver. + connect(convertConnectURLIfNecessary(url), info); + + if (!AuthDesc.isAuth()) { + return conn; + } else { + return new SWConnection(convertConnectURLIfNecessary(url), info, conn); + } + } + + public boolean acceptsURL(String url) throws SQLException { + Driver driver = DriverChooser.choose(convertConnectURLIfNecessary(url)); + if (driver == null) { + return false; + } + + return driver.acceptsURL(convertConnectURLIfNecessary(url)); + } + + public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) + throws SQLException { + return DriverChooser.choose(convertConnectURLIfNecessary(url)). + getPropertyInfo(convertConnectURLIfNecessary(url), info); + } + + public int getMajorVersion() { + return safeIntParse("1"); + } + + public int getMinorVersion() { + return safeIntParse("0"); + } + + public boolean jdbcCompliant() { + return false; + } + + public Logger getParentLogger() throws SQLFeatureNotSupportedException { + return null; + } + + private static int safeIntParse(String intAsString) { + try { + return Integer.parseInt(intAsString); + } catch (NumberFormatException nfe) { + } + return 0; + } + + static class DriverChooser { + private static org.apache.logging.log4j.Logger logger = LogManager.getLogger(DriverChooser.class); + + private static Map urlDriverMapping = new HashMap(); + + static { + fetchUrlDriverMapping(); + } + + public static Driver choose(String url) { + String driverClassStr = chooseDriverClass(url); + Driver driver = null; + try { + Class driverClass = Class.forName(driverClassStr); + driver = (Driver) driverClass.newInstance(); + } catch (Exception e) { + logger.error("Failed to initial Driver class {}.", driverClassStr, e); + } + + return driver; + } + + private static String chooseDriverClass(String url) { + Iterator mapping = urlDriverMapping.keySet().iterator(); + while (mapping.hasNext()) { + String urlPrefix = mapping.next(); + if (url.startsWith(urlPrefix)) { + String driverClassStr = urlDriverMapping.get(urlPrefix); + logger.debug("Success choose the driver class [{}] by connection url[{}]", driverClassStr, url); + return driverClassStr; + } + } + + logger.warn("Cannot match the driver class by connection url [{}].", url); + return null; + } + + private static void fetchUrlDriverMapping() { + BufferedReader bufferedReader = null; + try { + bufferedReader = new BufferedReader(new InputStreamReader(DriverChooser.class. + getResourceAsStream("/driver-mapping-url.def"))); + String mappingString = null; + while ((mappingString = bufferedReader.readLine()) != null) { + fillMapping(mappingString); + } + } catch (Exception e) { + logger.error("Failed to load driver-mapping-url.def."); + } finally { + if (bufferedReader != null) { + try { + bufferedReader.close(); + } catch (IOException e) { + logger.error("Failed to close driver-mapping-url.def.", e); + } + } + } + } + + private static void fillMapping(String mappingString) { + String[] tmpMapping = mappingString.split("="); + if (tmpMapping.length == 2) { + urlDriverMapping.put(tmpMapping[0], tmpMapping[1]); + } + } + } +} diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/DriverChooser.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/DriverChooser.java deleted file mode 100644 index 182d718b9f..0000000000 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/DriverChooser.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.ai.cloud.skywalking.plugin.jdbc.driver; - -import java.io.InputStream; -import java.sql.Driver; -import java.util.Map; -import java.util.Properties; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -public class DriverChooser { - private static Logger logger = LogManager.getLogger(DriverChooser.class); - - private static Properties urlDriverMapping = new Properties(); - - static { - InputStream inputStream = DriverChooser.class.getResourceAsStream("/driver-mapping-url.properties"); - try { - urlDriverMapping.load(inputStream); - } catch (Exception e) { - logger.error("Failed to load driver-mapping-url.properties"); - } - } - - public static Driver choose(String url) throws ClassNotFoundException, - IllegalAccessException, - InstantiationException { - Driver driver = null; - for (Map.Entry entry : urlDriverMapping.entrySet()) { - if (url.startsWith(entry.getValue().toString())) { - Class driverClass = Class.forName(entry.getKey().toString()); - driver = (Driver) driverClass.newInstance(); - } - } - return driver; - } -} diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/TracingDriver.java b/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/TracingDriver.java deleted file mode 100755 index 44ebdaef11..0000000000 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/java/com/ai/cloud/skywalking/plugin/jdbc/driver/TracingDriver.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.ai.cloud.skywalking.plugin.jdbc.driver; - -import java.sql.Driver; -import java.sql.DriverManager; -import java.sql.DriverPropertyInfo; -import java.sql.SQLException; -import java.sql.SQLFeatureNotSupportedException; -import java.util.Properties; -import java.util.logging.Logger; - -import org.apache.logging.log4j.LogManager; - -import com.ai.cloud.skywalking.conf.AuthDesc; - -public class TracingDriver implements Driver { - private static org.apache.logging.log4j.Logger logger = LogManager.getLogger(TracingDriver.class); - - private static final String TRACING_SIGN = "tracing:"; - - private static boolean isOpenCompensation = false; - - public static final void registerDriver() { - try { - DriverManager.registerDriver(new TracingDriver()); - isOpenCompensation = true; - } catch (SQLException e) { - logger.error("register TracingDriver failure.", e); - } - } - - private Driver realDriver; - - private Driver chooseDriver(String url) throws IllegalAccessException, - InstantiationException, ClassNotFoundException, SQLException { - if (realDriver == null) { - this.realDriver = DriverChooser.choose(url); - } - return realDriver; - } - - private String getRealUrl(String url) throws SQLException { - if (!isOpenCompensation) { - return url; - } else { - if (url.toLowerCase().startsWith(TRACING_SIGN)) { - return url.substring(TRACING_SIGN.length()); - } else { - throw new SQLException( - "tracing jdbc url must start with 'tracing:'"); - } - } - } - - public java.sql.Connection connect(String url, Properties info) - throws SQLException { - java.sql.Connection conn = null; - - try { - conn = chooseDriver(getRealUrl(url)).connect(getRealUrl(url), info); - } catch (Exception e) { - throw new SQLException(e); - } - - if (!AuthDesc.isAuth()) { - return conn; - } else { - return new SWConnection(getRealUrl(url), info, conn); - } - } - - public boolean acceptsURL(String url) throws SQLException { - Driver driver = null; - try { - driver = chooseDriver(getRealUrl(url)); - } catch (Exception e) { - throw new SQLException(e); - } - return driver.acceptsURL(getRealUrl(url)); - } - - public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) - throws SQLException { - Driver driver = null; - try { - driver = chooseDriver(getRealUrl(url)); - } catch (Exception e) { - throw new SQLException(e); - } - return driver.getPropertyInfo(getRealUrl(url), info); - } - - public int getMajorVersion() { - return safeIntParse("1"); - } - - public int getMinorVersion() { - return safeIntParse("0"); - } - - public boolean jdbcCompliant() { - return false; - } - - public Logger getParentLogger() throws SQLFeatureNotSupportedException { - return null; - } - - private static int safeIntParse(String intAsString) { - try { - return Integer.parseInt(intAsString); - } catch (NumberFormatException nfe) { - } - return 0; - } -} diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/driver-mapping-url.def b/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/driver-mapping-url.def new file mode 100644 index 0000000000..3df5601ab7 --- /dev/null +++ b/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/driver-mapping-url.def @@ -0,0 +1,8 @@ +jdbc:mysql=com.mysql.jdbc.Driver +jdbc:oracle=oracle.jdbc.driver.OracleDriver +jdbc:sybase=com.sybase.jdbc2.jdbc.SybDriver +jdbc:microsoft:sqlserver=com.microsoft.jdbc.sqlserver.SQLServerDriver +jdbc:sqlserver=com.microsoft.sqlserver.jdbc.SQLServerDriver +jdbc:jtds:sqlserver=net.sourceforge.jtds.jdbc.Driver +jdbc:db2=com.ibm.db2.jcc.DB2Driver +jdbc:informix-sqli=com.informix.jdbc.IfxDriver \ No newline at end of file diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/driver-mapping-url.properties b/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/driver-mapping-url.properties deleted file mode 100644 index 33bbb04f94..0000000000 --- a/skywalking-sdk-plugin/jdbc-plugin/src/main/resources/driver-mapping-url.properties +++ /dev/null @@ -1,16 +0,0 @@ -#mysql -com.mysql.jdbc.Driver=jdbc:mysql -#oracle -oracle.jdbc.driver.OracleDriver=jdbc:oracle -#sysbase -com.sybase.jdbc2.jdbc.SybDriver=jdbc:sybase -# SQLServer 2000 -com.microsoft.jdbc.sqlserver.SQLServerDriver=jdbc:microsoft:sqlserver -#SQLServer 2005 -com.microsoft.sqlserver.jdbc.SQLServerDriver=jdbc:sqlserver -#SQLServer 7.0 -net.sourceforge.jtds.jdbc.Driver=jdbc:jtds:sqlserver -#DB2 -com.ibm.db2.jcc.DB2Driver=jdbc:db2 -#Informix -com.informix.jdbc.IfxDriver=jdbc:informix-sqli \ No newline at end of file diff --git a/skywalking-sdk-plugin/jdbc-plugin/src/test/java/test/ai/cloud/skywalking/plugin/mysql/MysqlJDBCTest.java b/skywalking-sdk-plugin/jdbc-plugin/src/test/java/test/ai/cloud/skywalking/plugin/mysql/MysqlJDBCTest.java index 8064721d80..6e847f264c 100644 --- a/skywalking-sdk-plugin/jdbc-plugin/src/test/java/test/ai/cloud/skywalking/plugin/mysql/MysqlJDBCTest.java +++ b/skywalking-sdk-plugin/jdbc-plugin/src/test/java/test/ai/cloud/skywalking/plugin/mysql/MysqlJDBCTest.java @@ -23,7 +23,7 @@ public class MysqlJDBCTest { public static void main(String[] args) throws ClassNotFoundException, SQLException, InterruptedException { Class.forName("com.mysql.jdbc.Driver"); - String url = "jdbc:mysql://10.1.241.20:31306/sw_db?user=sw_dbusr01&password=sw_dbusr01"; + String url = "tracing:jdbc:mysql://10.1.241.20:31306/sw_db?user=sw_dbusr01&password=sw_dbusr01"; Connection con = DriverManager.getConnection(url); con.setAutoCommit(false); -- GitLab