MariaDBDataSourceクラスを使用してプールされていないデータソースを作成する際に問題があります。MariaDBDataSourceを手動で作成および設定する方法
MariaDbDataSource mysqlDs = new MariaDbDataSource(connectionUrl);
mysqlDs.setPassword(password);
mysqlDs.setUser(username);
return wrapWithPool(mysqlDs);
wrapWithPoolは、指定されたデータソースを単にプールされたデータソース(c3p0プール)でラップします。 しかし、私はプールからの接続をチェックアウトできません。私は
datasource.getConnection()
を行うたびに、私はなぜ
org.mariadb.jdbc.internal.util.dao.QueryException: Could not connect: Access denied for user 'someuser'@'somehost' (using password: NO)
わからないのですか?私は空でないパスワードを設定します。パスワードを使用するためにMariaDbDatasourceクラスに設定する必要はありますか?
編集: 私がMariaDbDataSourceをラップしていないときは、そうだと思います。 C3P0が接続を解体して、デバッグから、私はそれがパスワードの取得に失敗した参照だから... ... ラップ方法は
private static DataSource wrapWithPool(DataSource unpooled) throws SQLException {
unpooled.setLoginTimeout(HOST_REACH_TIMEOUT.getValue());
Map<String, Object> poolOverrideProps = new HashMap<>();
poolOverrideProps.put("maxPoolSize", CONNECTION_POOL_SIZE.getValue());
poolOverrideProps.put("minPoolSize", 1);
poolOverrideProps.put("checkoutTimeout", HOST_REACH_TIMEOUT.getValue() * 2);
return DataSources.pooledDataSource(unpooled, poolOverrideProps);
}
非常に簡単であり、他のドライバ(オラクル、JTDS)でperfecly正常に動作します。 mariaDbと一緒にならないのはなぜですか?