-
Notifications
You must be signed in to change notification settings - Fork 121
BoneCP Configuration
Vlad Mihalcea edited this page Jun 20, 2015
·
6 revisions
<dependency>
<groupId>com.vladmihalcea.flexy-pool</groupId>
<artifactId>flexy-bonecp</artifactId>
<version>${flexy-pool.version}</version>
</dependency>
<bean id="poolingDataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<property name="driverClass" value="${jdbc.driverClassName}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxConnectionsPerPartition" value="3"/>
<property name="partitionCount" value="1"/>
<property name="connectionTimeoutInMs" value="1000"/>
</bean>
You should not use IncrementPoolOnTimeoutConnectionAcquiringStrategy because BoneCP does not support pool resizing natively, as C3P0. This way, it’s impossible to guarantee what will happen to the current acquired connections one the pool has to be destroyed and recreated, only to take into consideration the new pool size.
If you use it, you’ll get an UnsupportedOperationException whenever the max pool size is about to be changed.
@org.springframework.context.annotation.Configuration
public class FlexyPoolConfiguration {
@Autowired
private BoneCPDataSource poolingDataSource;
@Value("${flexy.pool.uniqueId}")
private String uniqueId;
@Bean
public Configuration<BoneCPDataSource> configuration() {
return new Configuration.Builder<BoneCPDataSource>(
uniqueId,
poolingDataSource,
BoneCPPoolAdapter.FACTORY
).build();
}
@Bean(initMethod = "start", destroyMethod = "stop")
public FlexyPoolDataSource dataSource() {
Configuration<BoneCPDataSource> configuration = configuration();
return new FlexyPoolDataSource<BoneCPDataSource>(configuration,
new RetryConnectionAcquiringStrategy.Factory(2)
);
}
}
<bean id="configurationBuilder" class="com.vladmihalcea.flexypool.config.Configuration$Builder">
<constructor-arg value="uniqueId"/>
<constructor-arg ref="poolingDataSource"/>
<constructor-arg value="#{ T(com.vladmihalcea.flexypool.adaptor.BoneCPPoolAdapter).FACTORY }"/>
</bean>
<bean id="configuration" factory-bean="configurationBuilder" factory-method="build"/>
<bean id="dataSource" class="com.vladmihalcea.flexypool.FlexyPoolDataSource" init-method="start" destroy-method="stop">
<constructor-arg ref="configuration"/>
<constructor-arg>
<array>
<bean class="com.vladmihalcea.flexypool.strategy.RetryConnectionAcquiringStrategy.Factory">
<constructor-arg value="2"/>
</bean>
</array>
</constructor-arg>
</bean>