【问题标题】:Tomcat: HikariCP issue when deploying two applications with DB connectionTomcat:使用 DB 连接部署两个应用程序时出现 HikariCP 问题
【发布时间】:2015-12-15 09:07:27
【问题描述】:

我正在尝试在同一个 tomcat7 实例上部署两个 WAR 文件(app1.war 和 app2.war)。我收到此错误:

Unable to register MBean [HikariDataSource (HikariPool-0)] with key
  'dataSource'; nested exception is javax.management.InstanceAlreadyExistsException:
  com.zaxxer.hikari:name=dataSource,type=HikariDataSource

如果我在 tomcat 上只部署了一个应用程序,则不会出现此错误。 有没有办法解决这个问题?

【问题讨论】:

    标签: java tomcat7 hikaricp


    【解决方案1】:

    在 Spring Boot 中,jmx bean 在运行时加载并扫描您的应用程序。如果找到两个数据源,将抛出 javax.management.InstanceAlreadyExistsException。这可以通过在 application.properties 文件中定义默认的 jmx 默认域名来解决,如下所示

    spring.jmx.default-domain=app_name
    

    我希望这会有所帮助。

    【讨论】:

    【解决方案2】:

    在 Spring Boot 中,您可以通过 application.properties 更改 Hikari 数据源池的名称:

    spring.datasource.hikari.poolName=MyDataPoolName
    

    或分别为application.yml:

    spring:
      datasource:
        hikari:
          pool-name: MyDataPoolName
    

    这样 Tomcat 就可以同时加载这两个应用程序,名称冲突就消失了。

    【讨论】:

      【解决方案3】:

      为您的数据源指定唯一名称。例如,如果您有单独的架构来存储用户和产品数据,您可以分别将数据源命名为 userDSproductDS

      程序化配置


      HikariDataSource userDS = new HikariDataSource();
      userDS.setPoolName("userDS");
      // Set other data source properties.
      
      HikariDataSource productDS = new HikariDataSource();
      productDS.setPoolName("productDS");
      // Set other data source properties.
      

      弹簧配置


      <bean id="userDS" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
        <property name="poolName" value="userDS"/>
        ...
      </bean>
      
      <bean id="productDS" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
        <property name="poolName" value="productDS"/>
        ...
      </bean>
      

      【讨论】:

      • 如何在spring boot应用中做到这一点?
      • 使用程序化 (Java) 配置。
      • @Manu 查看我对这个问题的回答
      猜你喜欢
      • 1970-01-01
      • 2012-07-25
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      相关资源
      最近更新 更多