From cbdfd80d6e2e315823272b85980fdf9b73493396 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sat, 2 Dec 2017 15:52:44 +0800 Subject: [PATCH] bug fixed for mysql driver 6.0 xa support. --- src/main/java/com/alibaba/druid/util/MySqlUtils.java | 11 ++++++++--- .../com/alibaba/druid/bvt/utils/MySqlUtilsTest.java | 8 ++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/alibaba/druid/util/MySqlUtils.java b/src/main/java/com/alibaba/druid/util/MySqlUtils.java index 59954a6462..24b3e8ec0d 100644 --- a/src/main/java/com/alibaba/druid/util/MySqlUtils.java +++ b/src/main/java/com/alibaba/druid/util/MySqlUtils.java @@ -121,10 +121,10 @@ public static XAConnection createXAConnection(Driver driver, Connection physical // pinGlobalTxToPhysicalConnection boolean pinGlobTx = (Boolean) method_6_getValue.invoke( method_6_getBooleanReadableProperty.invoke( - method_6_getPropertySet.invoke(physicalConn) - , "pinGlobalTxToPhysicalConnection" + method_6_getPropertySet.invoke(physicalConn) + , "pinGlobalTxToPhysicalConnection" ) - ); + ); if (pinGlobTx) { try { @@ -151,6 +151,11 @@ public static XAConnection createXAConnection(Driver driver, Connection physical } return (XAConnection) method_6_getInstanceXA.invoke(null, physicalConn, Boolean.FALSE); } + } catch (InvocationTargetException e) { + Throwable cause = e.getCause(); + if (cause instanceof RuntimeException) { + throw (RuntimeException) cause; + } } catch (Exception e) { e.printStackTrace(); method_6_getInstance_error = true; diff --git a/src/test/java/com/alibaba/druid/bvt/utils/MySqlUtilsTest.java b/src/test/java/com/alibaba/druid/bvt/utils/MySqlUtilsTest.java index 8062b4dfc2..d94f5c4a95 100644 --- a/src/test/java/com/alibaba/druid/bvt/utils/MySqlUtilsTest.java +++ b/src/test/java/com/alibaba/druid/bvt/utils/MySqlUtilsTest.java @@ -8,7 +8,7 @@ import java.sql.Connection; public class MySqlUtilsTest extends TestCase { - public void test_() throws Exception { + public void test_xa() throws Exception { Driver driver = new Driver(); int majorVersion = driver.getMajorVersion(); @@ -23,7 +23,11 @@ public void test_() throws Exception { Constructor constructor = clazz_ConnectionImpl.getDeclaredConstructor(); constructor.setAccessible(true); Connection conn = (Connection) constructor.newInstance(); - MySqlUtils.createXAConnection(driver, conn); + try { + MySqlUtils.createXAConnection(driver, conn); + } catch (NullPointerException ex) { + //skip + } } } }