diff --git a/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/mysql/define/ConnectionInstrumentation.java b/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/mysql/define/ConnectionInstrumentation.java index f90c97dfe96173d4b718011a0ab195ca5f66f29c..cff4231488075004dc3a1a6dc2abfc823e3fba43 100644 --- a/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/mysql/define/ConnectionInstrumentation.java +++ b/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/mysql/define/ConnectionInstrumentation.java @@ -35,7 +35,6 @@ import static org.skywalking.apm.plugin.jdbc.define.Constants.PREPARE_STATEMENT_ import static org.skywalking.apm.plugin.jdbc.define.Constants.RELEASE_SAVE_POINT_METHOD_NAME; import static org.skywalking.apm.plugin.jdbc.define.Constants.ROLLBACK_METHOD_NAME; import static org.skywalking.apm.plugin.jdbc.define.Constants.SERVICE_METHOD_INTERCEPT_CLASS; -import static org.skywalking.apm.plugin.jdbc.mysql.define.MultiClassNameMatch.byMultiClassMatch; /** * {@link ConnectionInstrumentation} intercepts the following methods that the class which extend {@link @@ -48,7 +47,7 @@ import static org.skywalking.apm.plugin.jdbc.mysql.define.MultiClassNameMatch.by * * @author zhangxin */ -public class ConnectionInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { +public abstract class ConnectionInstrumentation extends ClassInstanceMethodsEnhancePluginDefine { public static final String ENHANCE_CLASS = "com.mysql.jdbc.ConnectionImpl"; @@ -114,7 +113,5 @@ public class ConnectionInstrumentation extends ClassInstanceMethodsEnhancePlugin } - @Override protected ClassMatch enhanceClass() { - return byMultiClassMatch(ENHANCE_CLASS, "com.mysql.cj.jdbc.ConnectionImpl", "com.mysql.jdbc.Connection"); - } + @Override protected abstract ClassMatch enhanceClass(); } diff --git a/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/mysql/define/Mysql50ConnectionInstrumentation.java b/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/mysql/define/Mysql50ConnectionInstrumentation.java new file mode 100644 index 0000000000000000000000000000000000000000..315516202acc1ed26d7d368ab866ddcd3d8c5115 --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/mysql/define/Mysql50ConnectionInstrumentation.java @@ -0,0 +1,40 @@ +/* + * Copyright 2017, OpenSkywalking Organization All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Project repository: https://github.com/OpenSkywalking/skywalking + */ + +package org.skywalking.apm.plugin.jdbc.mysql.define; + +import org.skywalking.apm.agent.core.plugin.match.ClassMatch; + +import static org.skywalking.apm.agent.core.plugin.match.NameMatch.byName; + +/** + * {@link Mysql50ConnectionInstrumentation} interceptor the {@link com.mysql.jdbc.Connection} class in the 5.0.x verison + * of mysql driver jar. + * + * @author zhangxin + */ +public class Mysql50ConnectionInstrumentation extends ConnectionInstrumentation { + @Override + protected ClassMatch enhanceClass() { + return byName("com.mysql.jdbc.Connection"); + } + + @Override protected String[] witnessClasses() { + return new String[] {"com.mysql.jdbc.CursorRowProvider"}; + } +} diff --git a/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/mysql/define/Mysql5xConnectionInstrumentation.java b/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/mysql/define/Mysql5xConnectionInstrumentation.java new file mode 100644 index 0000000000000000000000000000000000000000..f7c4899275444013e0d76c13594968bd3748c5bb --- /dev/null +++ b/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/java/org/skywalking/apm/plugin/jdbc/mysql/define/Mysql5xConnectionInstrumentation.java @@ -0,0 +1,35 @@ +/* + * Copyright 2017, OpenSkywalking Organization All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Project repository: https://github.com/OpenSkywalking/skywalking + */ + +package org.skywalking.apm.plugin.jdbc.mysql.define; + +import org.skywalking.apm.agent.core.plugin.match.ClassMatch; + +import static org.skywalking.apm.plugin.jdbc.mysql.define.MultiClassNameMatch.byMultiClassMatch; + +/** + * {@link Mysql50ConnectionInstrumentation} interceptor the {@link com.mysql.cj.jdbc.ConnectionImpl} class above the + * version 5.1+ of mysql jdbc driver jar. + * + * @author zhangxin + */ +public class Mysql5xConnectionInstrumentation extends ConnectionInstrumentation { + @Override protected ClassMatch enhanceClass() { + return byMultiClassMatch(ENHANCE_CLASS, "com.mysql.cj.jdbc.ConnectionImpl"); + } +} diff --git a/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/resources/skywalking-plugin.def b/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/resources/skywalking-plugin.def index f4f6b4c6ebbd8c2f082dc0b98cb2802b3cf0d8ef..2902f6972ad74cdb6c651baa2741306485480378 100644 --- a/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/resources/skywalking-plugin.def +++ b/apm-sniffer/apm-sdk-plugin/mysql-5.x-plugin/src/main/resources/skywalking-plugin.def @@ -1,5 +1,6 @@ mysql-5.x=org.skywalking.apm.plugin.jdbc.mysql.define.DriverInstrumentation -mysql-5.x=org.skywalking.apm.plugin.jdbc.mysql.define.ConnectionInstrumentation +mysql-5.x=org.skywalking.apm.plugin.jdbc.mysql.define.Mysql5xConnectionInstrumentation +mysql-5.x=org.skywalking.apm.plugin.jdbc.mysql.define.Mysql50ConnectionInstrumentation mysql-5.x=org.skywalking.apm.plugin.jdbc.mysql.define.CallableInstrumentation mysql-5.x=org.skywalking.apm.plugin.jdbc.mysql.define.PreparedStatementInstrumentation mysql-5.x=org.skywalking.apm.plugin.jdbc.mysql.define.StatementInstrumentation