Имам проблеми със създаването на необединен източник на данни с клас 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 прекъсва връзката и от debug виждам, че не успява да получи паролата... Методът на обвиване е доста прост
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);
}
И работи перфектно с други драйвери (oracle, jtds). Защо не с mariaDb?