首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于HikariCP + Spring + MS的JTDS配置

用于HikariCP + Spring + MS的JTDS配置
EN

Stack Overflow用户
提问于 2016-02-07 06:50:35
回答 4查看 7K关注 0票数 6

我一直在谷歌上搜索用于HikariCP (2.4.3)、Spring (4.1.2)和MS (2008)的JTDS (1.3.1)的配置,但是找不到一个完整和实用的示例。

以下是我所拥有的:

代码语言:javascript
复制
<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的完整配置:

代码语言:javascript
复制
<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被列为受支持。我很困惑。

EN

回答 4

Stack Overflow用户

发布于 2016-09-23 13:36:28

以下工作:

代码语言:javascript
复制
<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兼容的)。

票数 5
EN

Stack Overflow用户

发布于 2017-03-14 11:41:22

基于@roded,我以这种方式实现了它,它对我起了作用。

代码语言:javascript
复制
    @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;
}
票数 2
EN

Stack Overflow用户

发布于 2022-07-18 13:55:55

只是在我的配置中添加一个验证查询(ConnectionTestQuery)并不适用于我。

最后,我不得不将我的JtdsDataSource包在HikariDataSource中才能让它正常工作。

@Configuration类中

代码语言:javascript
复制
   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;
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35250636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档