我一直在谷歌上搜索用于HikariCP (2.4.3)、Spring (4.1.2)和MS (2008)的JTDS (1.3.1)的配置,但是找不到一个完整和实用的示例。
以下是我所拥有的:
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="poolName" value="springHikariCP" />
<property name="connectionTestQuery" value="SELECT 1" />
<property name="dataSourceClassName" value="${jdbc.dataSourceClassName}" />
<property name="maximumPoolSize" value="${jdbc.maximumPoolSize}" />
<property name="minimumIdle" value="${jdbc.minimumIdle}" />
<property name="idleTimeout" value="${jdbc.idleTimeout}" />
....
<property name="dataSourceProperties">
<props>
....
</props>
</property>
</bean>有谁能分享在生产环境中使用的JTDS信任吗?
致以问候。
更新
我找到了这个帖子:
HikariCP hanging on getConnection
似乎JTDS在使用HikariCP时遇到了问题。事实上,我也有这个问题。以下是我对JTDS的完整配置:
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
<constructor-arg ref="hikariConfig" />
</bean>
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="poolName" value="springHikariCP" />
<property name="connectionTestQuery" value="${jdbc.connectionTestQuery}" />
<property name="dataSourceClassName" value="${jdbc.dataSourceClassName}" />
<property name="maximumPoolSize" value="${jdbc.maximumPoolSize}" />
<property name="minimumIdle" value="${jdbc.minimumIdle}" />
<property name="idleTimeout" value="${jdbc.idleTimeout}" />
<property name="connectionTimeout" value="${jdbc.connectionTimeout}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="dataSourceProperties">
<props>
<prop key="user">${jdbc.username}</prop>
<prop key="password">${jdbc.password}</prop>
<prop key="cacheMetaData">${jtds.cacheMetaData}</prop>
</props>
</property>
</bean>这正是我提出问题的原因,我希望看到一个完整的例子。然而,在HikariCP的页面上,JTDS被列为受支持。我很困惑。
发布于 2016-09-23 13:36:28
以下工作:
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close" depends-on="flyway">
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"/>
<property name="connectionTestQuery" value="SELECT GETDATE()"/>
<property name="maximumPoolSize" value="32"/>
<property name="jdbcUrl" value="${dbUrl}"/>
<property name="username" value="${dbUsername}"/>
<property name="password" value="${dbPassword}"/>
</bean>请注意所需的connectionTestQuery属性,这样Hikari就不会假定驱动程序符合JDBC4 (jTDS是3.0兼容的)。
发布于 2017-03-14 11:41:22
基于@roded,我以这种方式实现了它,它对我起了作用。
@Bean
public JdbcTemplate jdbcTemplate() {
HikariConfig c = new HikariConfig();
c.setDriverClassName("net.sourceforge.jtds.jdbc.Driver");
c.setConnectionTestQuery("SELECT GETDATE()");
c.setMaximumPoolSize(32);
c.setJdbcUrl("jdbc:jtds:sqlserver://serverIp:1433/DBName;");
c.getDataSourceProperties().put("user", "user");
c.getDataSourceProperties().put("password", "password");
c.getDataSourceProperties().put("cacheMetaData", true);
HikariDataSource hds = new HikariDataSource(c);
JdbcTemplate jdbcTemplate = new JdbcTemplate(hds);
return jdbcTemplate;
}发布于 2022-07-18 13:55:55
只是在我的配置中添加一个验证查询(ConnectionTestQuery)并不适用于我。
最后,我不得不将我的JtdsDataSource包在HikariDataSource中才能让它正常工作。
在@Configuration类中
public DataSource getDataSource()
{
//initial JtdsDataSource to control the DB connection
JtdsDataSource ds = new JtdsDataSource();
ds.setDomain(this.domain);
ds.setServerName(this.server);
ds.setDatabaseName(this.database);
ds.setUser(this.user);
ds.setPassword(this.password);
//settings for integrated authentication to work.
ds.setSsl(SSL_REQUEST); //static import from net.sourceforge.jtds.ssl.Ssl
ds.setUseNTLMV2(true);
//WRAP JTDS in a Hikari Datsource
HikariConfig hc = new HikariConfig();
hc.setDataSource(ds);
hc.setConnectionTestQuery("SELECT 1");
HikariDataSource hds = new HikariDataSource(hc);
return hds;
}https://stackoverflow.com/questions/35250636
复制相似问题