Ich habe Probleme mit dem Erstellen von nicht gepoolten Datenquelle mit MariaDBDataSource-Klasse.Wie man MariaDBDataSource manuell erstellt und konfiguriert
MariaDbDataSource mysqlDs = new MariaDbDataSource(connectionUrl);
mysqlDs.setPassword(password);
mysqlDs.setUser(username);
return wrapWithPool(mysqlDs);
wrapWithPool einfach hüllt die gegebene Datenquelle mit einer gepoolten eines (c3p0 Pool). Aber ich kann eine Verbindung aus dem Pool nicht auschecken. Jedes Mal, wenn ich
datasource.getConnection()
ich
org.mariadb.jdbc.internal.util.dao.QueryException: Could not connect: Access denied for user 'someuser'@'somehost' (using password: NO)
nicht sicher, warum? Ich lege kein leeres Passwort fest. Gibt es noch etwas, das in der MariaDbDatasource-Klasse festgelegt werden muss, damit das Kennwort verwendet wird?
bearbeiten: Ok, so scheint es, dass, wenn ich die MariaDbDataSource nicht wickeln alle funktioniert ok. So c3p0 wird die Verbindung Zerschlagung und von Debug Ich sehe es nicht um das Passwort zu erhalten ... Die Wrap-Methode ist ganz einfach
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);
}
Und es funktioniert perfecly gut mit anderen Fahrern (Oracle, jtds) . Warum nicht mit MariaDb?