This is an automated email from the ASF dual-hosted git repository.
wenjun pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new e55c321a4f [Fix-17464] Use Driver to create jdbc connection (#18033)
e55c321a4f is described below
commit e55c321a4f617c2991667fca1f298bef5cf1468e
Author: Wenjun Ruan <[email protected]>
AuthorDate: Wed Mar 11 14:02:06 2026 +0800
[Fix-17464] Use Driver to create jdbc connection (#18033)
---
.../api/datasource/DataSourceProcessor.java | 6 +--
.../api/datasource/JdbcConnectionProvider.java | 27 +++++++++++
.../datasource/JdbcDriverConnectionProvider.java | 52 ++++++++++++++++++++++
.../athena/param/AthenaDataSourceProcessor.java | 14 +++---
.../param/AzureSQLDataSourceProcessor.java | 15 ++++---
.../param/ClickHouseDataSourceProcessor.java | 15 ++++---
.../dameng/param/DamengDataSourceProcessor.java | 14 +++---
.../param/DatabendDataSourceProcessor.java | 15 ++++---
.../db2/param/Db2DataSourceProcessor.java | 14 +++---
.../param/DolphinDBDataSourceProcessor.java | 15 ++++---
.../doris/param/DorisDataSourceProcessor.java | 15 ++++---
.../hana/param/HanaDataSourceProcessor.java | 17 ++++---
.../hive/param/HiveDataSourceProcessor.java | 20 ++++++---
.../k8s/param/K8sDataSourceProcessor.java | 4 +-
.../kyuubi/param/KyuubiDataSourceProcessor.java | 15 ++++---
.../mysql/param/MySQLDataSourceProcessor.java | 22 ++++-----
.../param/OceanBaseDataSourceProcessor.java | 14 +++---
.../oracle/param/OracleDataSourceProcessor.java | 14 +++---
.../param/PostgreSQLDataSourceProcessor.java | 15 ++++---
.../presto/param/PrestoDataSourceProcessor.java | 14 +++---
.../redshift/RedshiftPooledDataSourceClient.java | 2 +-
.../param/RedshiftDataSourceProcessor.java | 34 +++++++-------
.../param/SnowflakeDatasourceProcessor.java | 15 ++++---
.../spark/param/SparkDataSourceProcessor.java | 20 ++++++---
.../param/SQLServerDataSourceProcessor.java | 14 +++---
.../param/StarRocksDataSourceProcessor.java | 13 ++++--
.../trino/param/TrinoDataSourceProcessor.java | 14 +++---
.../vertica/param/VerticaDataSourceProcessor.java | 15 ++++---
28 files changed, 311 insertions(+), 153 deletions(-)
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/DataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/DataSourceProcessor.java
index 5a2338a3a5..2ddef9f240 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/DataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/DataSourceProcessor.java
@@ -51,7 +51,7 @@ public interface DataSourceProcessor {
/**
* create BaseDataSourceParamDTO by connectionJson
*
- * @param connectionJson see{@link
org.apache.dolphinscheduler.dao.entity.Datasource}
+ * @param connectionJson see{@link
org.apache.dolphinscheduler.dao.entity.DataSource}
* @return {@link BaseDataSourceParamDTO}
*/
BaseDataSourceParamDTO createDatasourceParamDTO(String connectionJson);
@@ -67,7 +67,7 @@ public interface DataSourceProcessor {
* deserialize json to datasource connection param
*
* @param connectionJson {@code
org.apache.dolphinscheduler.dao.entity.DataSource.connectionParams}
- * @return {@link BaseConnectionParam}
+ * @return {@link ConnectionParam}
*/
ConnectionParam createConnectionParams(String connectionJson);
@@ -96,7 +96,7 @@ public interface DataSourceProcessor {
* @return {@link Connection}
*/
// todo: Change to return a ConnectionWrapper
- Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException, IOException;
+ Connection getConnection(ConnectionParam connectionParam) throws
SQLException, IOException;
/**
* test connection
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/JdbcConnectionProvider.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/JdbcConnectionProvider.java
new file mode 100644
index 0000000000..0d16156521
--- /dev/null
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/JdbcConnectionProvider.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+package org.apache.dolphinscheduler.plugin.datasource.api.datasource;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+
+public interface JdbcConnectionProvider {
+
+ Connection getConnection() throws SQLException;
+
+}
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/JdbcDriverConnectionProvider.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/JdbcDriverConnectionProvider.java
new file mode 100644
index 0000000000..a883a6dcdd
--- /dev/null
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-api/src/main/java/org/apache/dolphinscheduler/plugin/datasource/api/datasource/JdbcDriverConnectionProvider.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ */
+
+package org.apache.dolphinscheduler.plugin.datasource.api.datasource;
+
+import java.sql.Connection;
+import java.sql.Driver;
+import java.sql.SQLException;
+import java.util.Properties;
+
+import lombok.Builder;
+
+@Builder
+public class JdbcDriverConnectionProvider implements JdbcConnectionProvider {
+
+ private final String jdbcDriverClassName;
+ private final String jdbcUrl;
+ private final String username;
+ private final String password;
+ private final Properties properties;
+
+ @Override
+ public Connection getConnection() throws SQLException {
+ try {
+ Driver driver = (Driver)
Class.forName(jdbcDriverClassName).getDeclaredConstructor().newInstance();
+ Properties p = new Properties(properties);
+ if (username != null) {
+ p.setProperty("user", username);
+ }
+ if (password != null) {
+ p.setProperty("password", password);
+ }
+ return driver.connect(jdbcUrl, p);
+ } catch (ReflectiveOperationException e) {
+ throw new SQLException("Failed to instantiate driver: " +
jdbcDriverClassName, e);
+ }
+ }
+}
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-athena/src/main/java/org/apache/dolphinscheduler/plugin/datasource/athena/param/AthenaDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-athena/src/main/java/org/apache/dolphinscheduler/plugin/datasource/athena/param/AthenaDataSourceProcessor.java
index 13f128bc19..4fd988c6be 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-athena/src/main/java/org/apache/dolphinscheduler/plugin/datasource/athena/param/AthenaDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-athena/src/main/java/org/apache/dolphinscheduler/plugin/datasource/athena/param/AthenaDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -31,7 +32,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -106,11 +106,15 @@ public class AthenaDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
AthenaConnectionParam athenaConnectionParam = (AthenaConnectionParam)
connectionParam;
- Class.forName(this.getDatasourceDriver());
- return DriverManager.getConnection(this.getJdbcUrl(connectionParam),
- athenaConnectionParam.getUser(),
PasswordUtils.decodePassword(athenaConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(athenaConnectionParam))
+ .username(athenaConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(athenaConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-azure-sql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/azuresql/param/AzureSQLDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-azure-sql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/azuresql/param/AzureSQLDataSourceProcessor.java
index 10f7d32ad5..244f5da7d0 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-azure-sql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/azuresql/param/AzureSQLDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-azure-sql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/azuresql/param/AzureSQLDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -33,7 +34,6 @@ import org.apache.commons.lang3.StringUtils;
import java.net.MalformedURLException;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.HashSet;
@@ -147,16 +147,20 @@ public class AzureSQLDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
AzureSQLConnectionParam azureSQLConnectionParam =
(AzureSQLConnectionParam) connectionParam;
// token access way
if
(azureSQLConnectionParam.getMode().equals(AzureSQLAuthMode.ACCESSTOKEN)) {
return tokenGetConnection(azureSQLConnectionParam);
}
// normal way
- Class.forName(getDatasourceDriver());
- return DriverManager.getConnection(getJdbcUrl(connectionParam),
azureSQLConnectionParam.getUser(),
-
PasswordUtils.decodePassword(azureSQLConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(azureSQLConnectionParam))
+ .username(azureSQLConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(azureSQLConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
@@ -255,6 +259,7 @@ public class AzureSQLDataSourceProcessor extends
AbstractDataSourceProcessor {
/**
* by default, add {"trustServerCertificate":true} to other to deal with
SSL trust issue
+ *
* @param paramDTO
*/
private void checkTrustServerCertificate(BaseDataSourceParamDTO paramDTO) {
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-clickhouse/src/main/java/org/apache/dolphinscheduler/plugin/datasource/clickhouse/param/ClickHouseDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-clickhouse/src/main/java/org/apache/dolphinscheduler/plugin/datasource/clickhouse/param/ClickHouseDataSourceProcessor.java
index 8f5959d252..8b4cde8042 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-clickhouse/src/main/java/org/apache/dolphinscheduler/plugin/datasource/clickhouse/param/ClickHouseDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-clickhouse/src/main/java/org/apache/dolphinscheduler/plugin/datasource/clickhouse/param/ClickHouseDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
import org.apache.dolphinscheduler.spi.enums.DbType;
@@ -30,7 +31,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -109,12 +109,15 @@ public class ClickHouseDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
ClickHouseConnectionParam clickhouseConnectionParam =
(ClickHouseConnectionParam) connectionParam;
- Class.forName(getDatasourceDriver());
- return
DriverManager.getConnection(getJdbcUrl(clickhouseConnectionParam),
- clickhouseConnectionParam.getUser(),
-
PasswordUtils.decodePassword(clickhouseConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(clickhouseConnectionParam))
+ .username(clickhouseConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(clickhouseConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-dameng/src/main/java/org/apache/dolphinscheduler/plugin/datasource/dameng/param/DamengDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-dameng/src/main/java/org/apache/dolphinscheduler/plugin/datasource/dameng/param/DamengDataSourceProcessor.java
index b7d002abd1..70632f2846 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-dameng/src/main/java/org/apache/dolphinscheduler/plugin/datasource/dameng/param/DamengDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-dameng/src/main/java/org/apache/dolphinscheduler/plugin/datasource/dameng/param/DamengDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -32,7 +33,6 @@ import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -116,11 +116,15 @@ public class DamengDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
DamengConnectionParam damengConnectionParam = (DamengConnectionParam)
connectionParam;
- Class.forName(getDatasourceDriver());
- return DriverManager.getConnection(getJdbcUrl(damengConnectionParam),
damengConnectionParam.getUser(),
-
PasswordUtils.decodePassword(damengConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(damengConnectionParam))
+ .username(damengConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(damengConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-databend/src/main/java/org/apache/dolphinscheduler/plugin/datasource/databend/param/DatabendDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-databend/src/main/java/org/apache/dolphinscheduler/plugin/datasource/databend/param/DatabendDataSourceProcessor.java
index c2917404ca..4dd9787813 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-databend/src/main/java/org/apache/dolphinscheduler/plugin/datasource/databend/param/DatabendDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-databend/src/main/java/org/apache/dolphinscheduler/plugin/datasource/databend/param/DatabendDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
import org.apache.dolphinscheduler.spi.enums.DbType;
@@ -30,7 +31,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -108,12 +108,15 @@ public class DatabendDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
DatabendConnectionParam databendConnectionParam =
(DatabendConnectionParam) connectionParam;
- Class.forName(getDatasourceDriver());
- return DriverManager.getConnection(getJdbcUrl(databendConnectionParam),
- databendConnectionParam.getUser(),
-
PasswordUtils.decodePassword(databendConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(databendConnectionParam))
+ .username(databendConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(databendConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-db2/src/main/java/org/apache/dolphinscheduler/plugin/datasource/db2/param/Db2DataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-db2/src/main/java/org/apache/dolphinscheduler/plugin/datasource/db2/param/Db2DataSourceProcessor.java
index d9aad8ce55..ecf64b90e2 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-db2/src/main/java/org/apache/dolphinscheduler/plugin/datasource/db2/param/Db2DataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-db2/src/main/java/org/apache/dolphinscheduler/plugin/datasource/db2/param/Db2DataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -31,7 +32,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -105,11 +105,15 @@ public class Db2DataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
Db2ConnectionParam db2ConnectionParam = (Db2ConnectionParam)
connectionParam;
- Class.forName(getDatasourceDriver());
- return DriverManager.getConnection(getJdbcUrl(db2ConnectionParam),
- db2ConnectionParam.getUser(),
PasswordUtils.decodePassword(db2ConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(db2ConnectionParam))
+ .username(db2ConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(db2ConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-dolphindb/src/main/java/org/apache/dolphinscheduler/plugin/datasource/dolphindb/param/DolphinDBDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-dolphindb/src/main/java/org/apache/dolphinscheduler/plugin/datasource/dolphindb/param/DolphinDBDataSourceProcessor.java
index ba6582f5c8..8284bbe749 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-dolphindb/src/main/java/org/apache/dolphinscheduler/plugin/datasource/dolphindb/param/DolphinDBDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-dolphindb/src/main/java/org/apache/dolphinscheduler/plugin/datasource/dolphindb/param/DolphinDBDataSourceProcessor.java
@@ -23,6 +23,7 @@ import org.apache.dolphinscheduler.common.utils.JSONUtils;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
import org.apache.dolphinscheduler.spi.enums.DbType;
@@ -30,7 +31,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -118,12 +118,15 @@ public class DolphinDBDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
DolphinDBConnectionParam dolphinDBConnectionParam =
(DolphinDBConnectionParam) connectionParam;
- Class.forName(getDatasourceDriver());
- return DriverManager.getConnection(getJdbcUrl(connectionParam),
- dolphinDBConnectionParam.getUser(),
-
PasswordUtils.decodePassword(dolphinDBConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(dolphinDBConnectionParam))
+ .username(dolphinDBConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(dolphinDBConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-doris/src/main/java/org/apache/dolphinscheduler/plugin/doris/param/DorisDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-doris/src/main/java/org/apache/dolphinscheduler/plugin/doris/param/DorisDataSourceProcessor.java
index d948d8876b..2fca856e88 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-doris/src/main/java/org/apache/dolphinscheduler/plugin/doris/param/DorisDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-doris/src/main/java/org/apache/dolphinscheduler/plugin/doris/param/DorisDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
import org.apache.dolphinscheduler.spi.enums.DbType;
@@ -30,7 +31,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -122,12 +122,15 @@ public class DorisDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
DorisConnectionParam dorisConnectionParam = (DorisConnectionParam)
connectionParam;
- Class.forName(getDatasourceDriver());
-
- return DriverManager.getConnection(getJdbcUrl(connectionParam),
dorisConnectionParam.getUser(),
-
PasswordUtils.decodePassword(dorisConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(dorisConnectionParam))
+ .username(dorisConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(dorisConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/param/HanaDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/param/HanaDataSourceProcessor.java
index 41eadaef9f..33b96372b8 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/param/HanaDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hana/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hana/param/HanaDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -31,7 +32,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import com.google.auto.service.AutoService;
@@ -107,12 +107,15 @@ public class HanaDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
- HanaConnectionParam mysqlConnectionParam = (HanaConnectionParam)
connectionParam;
- Class.forName(getDatasourceDriver());
- String user = mysqlConnectionParam.getUser();
- String password =
PasswordUtils.decodePassword(mysqlConnectionParam.getPassword());
- return DriverManager.getConnection(getJdbcUrl(connectionParam), user,
password);
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
+ HanaConnectionParam hanaConnectionParam = (HanaConnectionParam)
connectionParam;
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(hanaConnectionParam))
+ .username(hanaConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(hanaConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessor.java
index 2838b9983e..4c1ff989aa 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-hive/src/main/java/org/apache/dolphinscheduler/plugin/datasource/hive/param/HiveDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.CommonUtils;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
@@ -34,7 +35,6 @@ import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -138,13 +138,19 @@ public class HiveDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
IOException, ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
IOException, SQLException {
HiveConnectionParam hiveConnectionParam = (HiveConnectionParam)
connectionParam;
-
CommonUtils.loadKerberosConf(hiveConnectionParam.getJavaSecurityKrb5Conf(),
- hiveConnectionParam.getLoginUserKeytabUsername(),
hiveConnectionParam.getLoginUserKeytabPath());
- Class.forName(getDatasourceDriver());
- return DriverManager.getConnection(getJdbcUrl(connectionParam),
- hiveConnectionParam.getUser(),
PasswordUtils.decodePassword(hiveConnectionParam.getPassword()));
+ CommonUtils.loadKerberosConf(
+ hiveConnectionParam.getJavaSecurityKrb5Conf(),
+ hiveConnectionParam.getLoginUserKeytabUsername(),
+ hiveConnectionParam.getLoginUserKeytabPath());
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(hiveConnectionParam))
+ .username(hiveConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(hiveConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-k8s/src/main/java/org/apache/dolphinscheduler/plugin/datasource/k8s/param/K8sDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-k8s/src/main/java/org/apache/dolphinscheduler/plugin/datasource/k8s/param/K8sDataSourceProcessor.java
index fd3b49469f..39078d1862 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-k8s/src/main/java/org/apache/dolphinscheduler/plugin/datasource/k8s/param/K8sDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-k8s/src/main/java/org/apache/dolphinscheduler/plugin/datasource/k8s/param/K8sDataSourceProcessor.java
@@ -28,9 +28,7 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.lang3.StringUtils;
-import java.io.IOException;
import java.sql.Connection;
-import java.sql.SQLException;
import java.text.MessageFormat;
import lombok.extern.slf4j.Slf4j;
@@ -101,7 +99,7 @@ public class K8sDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException, IOException {
+ public Connection getConnection(ConnectionParam connectionParam) {
return null;
}
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-kyuubi/src/main/java/org/apache/dolphinscheduler/plugin/datasource/kyuubi/param/KyuubiDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-kyuubi/src/main/java/org/apache/dolphinscheduler/plugin/datasource/kyuubi/param/KyuubiDataSourceProcessor.java
index b4565804df..bbee215f42 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-kyuubi/src/main/java/org/apache/dolphinscheduler/plugin/datasource/kyuubi/param/KyuubiDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-kyuubi/src/main/java/org/apache/dolphinscheduler/plugin/datasource/kyuubi/param/KyuubiDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -31,7 +32,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -118,12 +118,15 @@ public class KyuubiDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
KyuubiConnectionParam kyuubiConnectionParam = (KyuubiConnectionParam)
connectionParam;
- Class.forName(getDatasourceDriver());
- // todo:
- return DriverManager.getConnection(getJdbcUrl(connectionParam),
- kyuubiConnectionParam.getUser(),
PasswordUtils.decodePassword(kyuubiConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(kyuubiConnectionParam))
+ .username(kyuubiConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(kyuubiConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-mysql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/mysql/param/MySQLDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-mysql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/mysql/param/MySQLDataSourceProcessor.java
index fe06873901..efd3a9b58c 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-mysql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/mysql/param/MySQLDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-mysql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/mysql/param/MySQLDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -31,7 +32,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -124,9 +124,8 @@ public class MySQLDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
MySQLConnectionParam mysqlConnectionParam = (MySQLConnectionParam)
connectionParam;
- Class.forName(getDatasourceDriver());
String user = mysqlConnectionParam.getUser();
if (user.contains(AUTO_DESERIALIZE)) {
log.warn("sensitive param : {} in username field is filtered",
AUTO_DESERIALIZE);
@@ -137,17 +136,18 @@ public class MySQLDataSourceProcessor extends
AbstractDataSourceProcessor {
log.warn("sensitive param : {} in password field is filtered",
AUTO_DESERIALIZE);
password = password.replace(AUTO_DESERIALIZE, "");
}
-
- Properties connectionProperties =
getConnectionProperties(mysqlConnectionParam, user, password);
-
- return DriverManager.getConnection(getJdbcUrl(connectionParam),
connectionProperties);
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(mysqlConnectionParam))
+ .username(user)
+ .password(PasswordUtils.decodePassword(password))
+ .properties(getConnectionProperties(mysqlConnectionParam))
+ .build()
+ .getConnection();
}
- private Properties getConnectionProperties(MySQLConnectionParam
mysqlConnectionParam, String user,
- String password) {
+ private Properties getConnectionProperties(MySQLConnectionParam
mysqlConnectionParam) {
Properties connectionProperties = new Properties();
- connectionProperties.put("user", user);
- connectionProperties.put("password", password);
Map<String, String> paramMap = mysqlConnectionParam.getOther();
if (MapUtils.isNotEmpty(paramMap)) {
paramMap.forEach((k, v) -> {
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oceanbase/src/main/java/org/apache/dolphinscheduler/plugin/datasource/oceanbase/param/OceanBaseDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oceanbase/src/main/java/org/apache/dolphinscheduler/plugin/datasource/oceanbase/param/OceanBaseDataSourceProcessor.java
index 8dda78af5d..8b0b0d122f 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oceanbase/src/main/java/org/apache/dolphinscheduler/plugin/datasource/oceanbase/param/OceanBaseDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oceanbase/src/main/java/org/apache/dolphinscheduler/plugin/datasource/oceanbase/param/OceanBaseDataSourceProcessor.java
@@ -23,15 +23,14 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
-import java.io.IOException;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -164,9 +163,8 @@ public class OceanBaseDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException, IOException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
OceanBaseConnectionParam obConnectionParam =
(OceanBaseConnectionParam) connectionParam;
- Class.forName(getDatasourceDriver());
String user = obConnectionParam.getUser();
if (user.contains(AUTO_DESERIALIZE)) {
log.warn("sensitive param : {} in username field is filtered",
AUTO_DESERIALIZE);
@@ -177,7 +175,13 @@ public class OceanBaseDataSourceProcessor extends
AbstractDataSourceProcessor {
log.warn("sensitive param : {} in password field is filtered",
AUTO_DESERIALIZE);
password = password.replace(AUTO_DESERIALIZE, "");
}
- return DriverManager.getConnection(getJdbcUrl(connectionParam), user,
password);
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(obConnectionParam))
+ .username(user)
+ .password(PasswordUtils.decodePassword(password))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oracle/src/main/java/org/apache/dolphinscheduler/plugin/datasource/oracle/param/OracleDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oracle/src/main/java/org/apache/dolphinscheduler/plugin/datasource/oracle/param/OracleDataSourceProcessor.java
index 106ea46a20..75ae36bf20 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oracle/src/main/java/org/apache/dolphinscheduler/plugin/datasource/oracle/param/OracleDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-oracle/src/main/java/org/apache/dolphinscheduler/plugin/datasource/oracle/param/OracleDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -32,7 +33,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -129,11 +129,15 @@ public class OracleDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
OracleConnectionParam oracleConnectionParam = (OracleConnectionParam)
connectionParam;
- Class.forName(getDatasourceDriver());
- return DriverManager.getConnection(getJdbcUrl(connectionParam),
- oracleConnectionParam.getUser(),
PasswordUtils.decodePassword(oracleConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(oracleConnectionParam))
+ .username(oracleConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(oracleConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-postgresql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/postgresql/param/PostgreSQLDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-postgresql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/postgresql/param/PostgreSQLDataSourceProcessor.java
index b19ce008f0..cd48ee06ed 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-postgresql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/postgresql/param/PostgreSQLDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-postgresql/src/main/java/org/apache/dolphinscheduler/plugin/datasource/postgresql/param/PostgreSQLDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -31,7 +32,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -111,12 +111,15 @@ public class PostgreSQLDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
PostgreSQLConnectionParam postgreSqlConnectionParam =
(PostgreSQLConnectionParam) connectionParam;
- Class.forName(getDatasourceDriver());
- return
DriverManager.getConnection(getJdbcUrl(postgreSqlConnectionParam),
- postgreSqlConnectionParam.getUser(),
-
PasswordUtils.decodePassword(postgreSqlConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(postgreSqlConnectionParam))
+ .username(postgreSqlConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(postgreSqlConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-presto/src/main/java/org/apache/dolphinscheduler/plugin/datasource/presto/param/PrestoDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-presto/src/main/java/org/apache/dolphinscheduler/plugin/datasource/presto/param/PrestoDataSourceProcessor.java
index b5dc8fd09c..46bdc8104a 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-presto/src/main/java/org/apache/dolphinscheduler/plugin/datasource/presto/param/PrestoDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-presto/src/main/java/org/apache/dolphinscheduler/plugin/datasource/presto/param/PrestoDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -31,7 +32,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -110,11 +110,15 @@ public class PrestoDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
PrestoConnectionParam prestoConnectionParam = (PrestoConnectionParam)
connectionParam;
- Class.forName(getDatasourceDriver());
- return DriverManager.getConnection(getJdbcUrl(connectionParam),
- prestoConnectionParam.getUser(),
PasswordUtils.decodePassword(prestoConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(prestoConnectionParam))
+ .username(prestoConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(prestoConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-redshift/src/main/java/org/apache/dolphinscheduler/plugin/datasource/redshift/RedshiftPooledDataSourceClient.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-redshift/src/main/java/org/apache/dolphinscheduler/plugin/datasource/redshift/RedshiftPooledDataSourceClient.java
index 2119217a47..7dc0fbb8a1 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-redshift/src/main/java/org/apache/dolphinscheduler/plugin/datasource/redshift/RedshiftPooledDataSourceClient.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-redshift/src/main/java/org/apache/dolphinscheduler/plugin/datasource/redshift/RedshiftPooledDataSourceClient.java
@@ -42,7 +42,7 @@ public class RedshiftPooledDataSourceClient extends
BasePooledDataSourceClient {
if (connectionParam.getMode().equals(RedshiftAuthMode.PASSWORD)) {
return super.getConnection();
}
- return RedshiftDataSourceProcessor.getConnectionByIAM(connectionParam);
+ return new
RedshiftDataSourceProcessor().getConnection(connectionParam);
}
}
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-redshift/src/main/java/org/apache/dolphinscheduler/plugin/datasource/redshift/param/RedshiftDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-redshift/src/main/java/org/apache/dolphinscheduler/plugin/datasource/redshift/param/RedshiftDataSourceProcessor.java
index 6535ac45d7..cdb167f8dc 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-redshift/src/main/java/org/apache/dolphinscheduler/plugin/datasource/redshift/param/RedshiftDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-redshift/src/main/java/org/apache/dolphinscheduler/plugin/datasource/redshift/param/RedshiftDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -32,7 +33,6 @@ import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -129,17 +129,20 @@ public class RedshiftDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
RedshiftConnectionParam redshiftConnectionParam =
(RedshiftConnectionParam) connectionParam;
- Class.forName(getDatasourceDriver());
if
(redshiftConnectionParam.getMode().equals(RedshiftAuthMode.PASSWORD)) {
- return DriverManager.getConnection(getJdbcUrl(connectionParam),
- redshiftConnectionParam.getUser(),
-
PasswordUtils.decodePassword(redshiftConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(redshiftConnectionParam))
+ .username(redshiftConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(redshiftConnectionParam.getPassword()))
+ .build()
+ .getConnection();
} else if
(redshiftConnectionParam.getMode().equals(RedshiftAuthMode.IAM_ACCESS_KEY)) {
return getConnectionByIAM(redshiftConnectionParam);
}
- return null;
+ throw new SQLException("Unsupported authentication mode: " +
redshiftConnectionParam.getMode());
}
@Override
@@ -179,7 +182,7 @@ public class RedshiftDataSourceProcessor extends
AbstractDataSourceProcessor {
return null;
}
- private static String transformOther(Map<String, String> otherMap) {
+ private String transformOther(Map<String, String> otherMap) {
if (MapUtils.isNotEmpty(otherMap)) {
List<String> list = new ArrayList<>(otherMap.size());
otherMap.forEach((key, value) -> list.add(String.format("%s=%s",
key, value)));
@@ -198,7 +201,7 @@ public class RedshiftDataSourceProcessor extends
AbstractDataSourceProcessor {
* @param redshiftConnectionParam
* @return
*/
- public static Connection getConnectionByIAM(RedshiftConnectionParam
redshiftConnectionParam) {
+ private Connection getConnectionByIAM(RedshiftConnectionParam
redshiftConnectionParam) throws SQLException {
String basic;
String authParams =
String.format("AccessKeyID=%s&SecretAccessKey=%s&DbUser=%s",
redshiftConnectionParam.getUser(),
PasswordUtils.decodePassword(redshiftConnectionParam.getPassword()),
@@ -217,13 +220,10 @@ public class RedshiftDataSourceProcessor extends
AbstractDataSourceProcessor {
// append AccessKeyID &SecretAccessKey &DbUser
connectionUrl = String.format("%s?%s", basic, authParams);
}
- try {
- Class.forName(DataSourceConstants.COM_REDSHIFT_JDBC_DRIVER);
- return DriverManager.getConnection(connectionUrl);
- } catch (SQLException e) {
- throw new RuntimeException(e);
- } catch (ClassNotFoundException e) {
- throw new RuntimeException(e);
- }
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(connectionUrl)
+ .build()
+ .getConnection();
}
}
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-snowflake/src/main/java/org/apache/dolphinscheduler/plugin/datasource/snowflake/param/SnowflakeDatasourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-snowflake/src/main/java/org/apache/dolphinscheduler/plugin/datasource/snowflake/param/SnowflakeDatasourceProcessor.java
index 764bc8e345..44480bb1f0 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-snowflake/src/main/java/org/apache/dolphinscheduler/plugin/datasource/snowflake/param/SnowflakeDatasourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-snowflake/src/main/java/org/apache/dolphinscheduler/plugin/datasource/snowflake/param/SnowflakeDatasourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -31,7 +32,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import lombok.extern.slf4j.Slf4j;
@@ -114,12 +114,15 @@ public class SnowflakeDatasourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
SnowflakeConnectionParam snowFlakeConnectionParam =
(SnowflakeConnectionParam) connectionParam;
- Class.forName(getDatasourceDriver());
- return DriverManager.getConnection(getJdbcUrl(connectionParam),
- snowFlakeConnectionParam.getUser(),
-
PasswordUtils.decodePassword(snowFlakeConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(snowFlakeConnectionParam))
+ .username(snowFlakeConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(snowFlakeConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
public DataSourceProcessor create() {
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-spark/src/main/java/org/apache/dolphinscheduler/plugin/datasource/spark/param/SparkDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-spark/src/main/java/org/apache/dolphinscheduler/plugin/datasource/spark/param/SparkDataSourceProcessor.java
index b603b7d2e0..da64c58374 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-spark/src/main/java/org/apache/dolphinscheduler/plugin/datasource/spark/param/SparkDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-spark/src/main/java/org/apache/dolphinscheduler/plugin/datasource/spark/param/SparkDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.CommonUtils;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
@@ -34,7 +35,6 @@ import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
@@ -140,13 +140,19 @@ public class SparkDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
IOException, ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
IOException, SQLException {
SparkConnectionParam sparkConnectionParam = (SparkConnectionParam)
connectionParam;
-
CommonUtils.loadKerberosConf(sparkConnectionParam.getJavaSecurityKrb5Conf(),
- sparkConnectionParam.getLoginUserKeytabUsername(),
sparkConnectionParam.getLoginUserKeytabPath());
- Class.forName(getDatasourceDriver());
- return DriverManager.getConnection(getJdbcUrl(sparkConnectionParam),
- sparkConnectionParam.getUser(),
PasswordUtils.decodePassword(sparkConnectionParam.getPassword()));
+ CommonUtils.loadKerberosConf(
+ sparkConnectionParam.getJavaSecurityKrb5Conf(),
+ sparkConnectionParam.getLoginUserKeytabUsername(),
+ sparkConnectionParam.getLoginUserKeytabPath());
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(sparkConnectionParam))
+ .username(sparkConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(sparkConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-sqlserver/src/main/java/org/apache/dolphinscheduler/plugin/datasource/sqlserver/param/SQLServerDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-sqlserver/src/main/java/org/apache/dolphinscheduler/plugin/datasource/sqlserver/param/SQLServerDataSourceProcessor.java
index bc34a309b1..46a1f8b33e 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-sqlserver/src/main/java/org/apache/dolphinscheduler/plugin/datasource/sqlserver/param/SQLServerDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-sqlserver/src/main/java/org/apache/dolphinscheduler/plugin/datasource/sqlserver/param/SQLServerDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -31,7 +32,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
@@ -110,11 +110,15 @@ public class SQLServerDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
SQLServerConnectionParam sqlServerConnectionParam =
(SQLServerConnectionParam) connectionParam;
- Class.forName(getDatasourceDriver());
- return DriverManager.getConnection(getJdbcUrl(connectionParam),
sqlServerConnectionParam.getUser(),
-
PasswordUtils.decodePassword(sqlServerConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(sqlServerConnectionParam))
+ .username(sqlServerConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(sqlServerConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-starrocks/src/main/java/org/apache/dolphinscheduler/plugin/datasource/starrocks/param/StarRocksDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-starrocks/src/main/java/org/apache/dolphinscheduler/plugin/datasource/starrocks/param/StarRocksDataSourceProcessor.java
index bab10b59ea..e820fcba6d 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-starrocks/src/main/java/org/apache/dolphinscheduler/plugin/datasource/starrocks/param/StarRocksDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-starrocks/src/main/java/org/apache/dolphinscheduler/plugin/datasource/starrocks/param/StarRocksDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -31,7 +32,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
@@ -127,9 +127,8 @@ public class StarRocksDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
StarRocksConnectionParam starRocksConnectionParam =
(StarRocksConnectionParam) connectionParam;
- Class.forName(getDatasourceDriver());
String user = starRocksConnectionParam.getUser();
if (user.contains(AUTO_DESERIALIZE)) {
log.warn("sensitive param : {} in username field is filtered",
AUTO_DESERIALIZE);
@@ -140,7 +139,13 @@ public class StarRocksDataSourceProcessor extends
AbstractDataSourceProcessor {
log.warn("sensitive param : {} in password field is filtered",
AUTO_DESERIALIZE);
password = password.replace(AUTO_DESERIALIZE, "");
}
- return DriverManager.getConnection(getJdbcUrl(connectionParam), user,
password);
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(starRocksConnectionParam))
+ .username(user)
+ .password(PasswordUtils.decodePassword(password))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-trino/src/main/java/org/apache/dolphinscheduler/plugin/datasource/trino/param/TrinoDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-trino/src/main/java/org/apache/dolphinscheduler/plugin/datasource/trino/param/TrinoDataSourceProcessor.java
index e7177c6b95..4e280ad3cf 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-trino/src/main/java/org/apache/dolphinscheduler/plugin/datasource/trino/param/TrinoDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-trino/src/main/java/org/apache/dolphinscheduler/plugin/datasource/trino/param/TrinoDataSourceProcessor.java
@@ -23,6 +23,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -31,7 +32,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@@ -112,11 +112,15 @@ public class TrinoDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
TrinoConnectionParam TrinoConnectionParam = (TrinoConnectionParam)
connectionParam;
- Class.forName(getDatasourceDriver());
- return DriverManager.getConnection(getJdbcUrl(connectionParam),
- TrinoConnectionParam.getUser(),
PasswordUtils.decodePassword(TrinoConnectionParam.getPassword()));
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(TrinoConnectionParam))
+ .username(TrinoConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(TrinoConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override
diff --git
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-vertica/src/main/java/org/apache/dolphinscheduler/plugin/datasource/vertica/param/VerticaDataSourceProcessor.java
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-vertica/src/main/java/org/apache/dolphinscheduler/plugin/datasource/vertica/param/VerticaDataSourceProcessor.java
index e811eaea17..49e5d1e07f 100644
---
a/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-vertica/src/main/java/org/apache/dolphinscheduler/plugin/datasource/vertica/param/VerticaDataSourceProcessor.java
+++
b/dolphinscheduler-datasource-plugin/dolphinscheduler-datasource-vertica/src/main/java/org/apache/dolphinscheduler/plugin/datasource/vertica/param/VerticaDataSourceProcessor.java
@@ -22,6 +22,7 @@ import
org.apache.dolphinscheduler.plugin.datasource.api.constants.DataSourceCon
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.AbstractDataSourceProcessor;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.BaseDataSourceParamDTO;
import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.DataSourceProcessor;
+import
org.apache.dolphinscheduler.plugin.datasource.api.datasource.JdbcDriverConnectionProvider;
import org.apache.dolphinscheduler.plugin.datasource.api.utils.PasswordUtils;
import org.apache.dolphinscheduler.spi.datasource.BaseConnectionParam;
import org.apache.dolphinscheduler.spi.datasource.ConnectionParam;
@@ -30,7 +31,6 @@ import org.apache.dolphinscheduler.spi.enums.DbType;
import org.apache.commons.collections4.MapUtils;
import java.sql.Connection;
-import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Map;
@@ -104,12 +104,15 @@ public class VerticaDataSourceProcessor extends
AbstractDataSourceProcessor {
}
@Override
- public Connection getConnection(ConnectionParam connectionParam) throws
ClassNotFoundException, SQLException {
+ public Connection getConnection(ConnectionParam connectionParam) throws
SQLException {
VerticaConnectionParam verticaConnectionParam =
(VerticaConnectionParam) connectionParam;
- Class.forName(getDatasourceDriver());
- String user = verticaConnectionParam.getUser();
- String password =
PasswordUtils.decodePassword(verticaConnectionParam.getPassword());
- return DriverManager.getConnection(getJdbcUrl(connectionParam), user,
password);
+ return JdbcDriverConnectionProvider.builder()
+ .jdbcDriverClassName(getDatasourceDriver())
+ .jdbcUrl(getJdbcUrl(verticaConnectionParam))
+ .username(verticaConnectionParam.getUser())
+
.password(PasswordUtils.decodePassword(verticaConnectionParam.getPassword()))
+ .build()
+ .getConnection();
}
@Override