Я настраиваю мой DataSource в проекте Spring загрузки/Spring Cloud Connectors, работающие на Cloud Foundry с использованием Tomcat соединений JDBC драйвер Pool и MariaDB JDBC, как так:Невозможно установить connectionProperties с Spring Cloud Connectors в Cloud Foundry
@Configuration
@Profile("cloud")
public class MyDataSourceConfiguration extends AbstractCloudConfig {
@Bean
public DataSource dataSource() {
Map<String, Object> dataSourceProperties = new HashMap<>();
dataSourceProperties.put("initialSize", "4"); // OK
dataSourceProperties.put("maxActive", "4"); // OK
dataSourceProperties.put("maxWait", "2000"); // OK
dataSourceProperties.put("connectionProperties",
"useUnicode=yes;characterEncoding=utf8;"); // ignored
DataSourceConfig conf = new DataSourceConfig(dataSourceProperties);
return connectionFactory().dataSource(conf);
}
}
по некоторым причинам только свойство, относящееся к размеру пула и maxWait но не connectionProperties становятся подобраны DataSource бобов - см выхода журнала:
maxActive = 4; initialSize = 4; maxWait = 2000; connectionProperties = null
Любые подсказки?
Примечание. Попытка установить connectionProperties через класс ConnectionConfig Spring также не работает.
Журнал все еще показывает connectionProperties = null. На самом деле я сначала пробовал этот подход, и только после этого, следуя советам здесь: https://github.com/spring-cloud/spring-cloud-connectors/issues/173, попробовал удачу, arg конструктор DataSourceConfig, как показано в моем вопросе. –
ОК, я понял, что происходит. Это причуда библиотеки Tomcat JDBC. Если вы посмотрите на источник метода 'setConnectionProperties()' [1], он фактически анализирует свойства и задает внутреннее поле 'dbProperties', а не внутреннее поле' connectionProperties'. Метод getConnectionProperties() '[2] возвращает значение поля' connectionProperties', а не поле 'dbProperties', заданное' setConnectionProperties() '. Если вы вызываете 'DataSource.getDbProperties()', вы увидите поля, установленные в 'ConnectionConfig'. –
[1] http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/DataSourceProxy.java?view=markup# l556 –