diff --git a/src/main/java/oracle/r2dbc/impl/OracleReactiveJdbcAdapter.java b/src/main/java/oracle/r2dbc/impl/OracleReactiveJdbcAdapter.java index fd8b726..0ad803d 100755 --- a/src/main/java/oracle/r2dbc/impl/OracleReactiveJdbcAdapter.java +++ b/src/main/java/oracle/r2dbc/impl/OracleReactiveJdbcAdapter.java @@ -400,11 +400,18 @@ private static String composeJdbcUrl(ConnectionFactoryOptions options) { PORT, options, Integer.class, Integer::valueOf); Object serviceName = options.getValue(DATABASE); - return String.format("jdbc:oracle:thin:@%s%s%s%s", + Object dnMatch = + options.getValue(OracleR2dbcOptions.TLS_SERVER_DN_MATCH); + + return String.format("jdbc:oracle:thin:@%s%s%s%s?%s=%s", protocol == null ? "" : protocol + "://", host, port != null ? (":" + port) : "", - serviceName != null ? ("/" + serviceName) : ""); + serviceName != null ? ("/" + serviceName) : "", + // Workaround for Oracle JDBC bug #33150409. DN matching is enabled + // unless the property is set as a query parameter. + OracleR2dbcOptions.TLS_SERVER_DN_MATCH.name(), + dnMatch == null ? "false" : dnMatch); } } diff --git a/src/test/java/oracle/r2dbc/impl/OracleReactiveJdbcAdapterTest.java b/src/test/java/oracle/r2dbc/impl/OracleReactiveJdbcAdapterTest.java index 8b11309..2744e6a 100644 --- a/src/test/java/oracle/r2dbc/impl/OracleReactiveJdbcAdapterTest.java +++ b/src/test/java/oracle/r2dbc/impl/OracleReactiveJdbcAdapterTest.java @@ -634,7 +634,8 @@ public void testTimezoneAsRegion() { // than a name (Europe/Warsaw). Connection connection = awaitOne(ConnectionFactories.get( ConnectionFactoryOptions.parse(format( - "r2dbc:oracle://%s:%d/%s?oracle.jdbc.timezoneAsRegion=false", + "r2dbc:oracle%s://%s:%d/%s?oracle.jdbc.timezoneAsRegion=false", + protocol() == null ? "" : ":" + protocol(), host(), port(), serviceName())) .mutate() .option(USER, user())