首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat:使用DB连接部署两个应用程序时的HikariCP问题

问Tomcat:使用DB连接部署两个应用程序时的HikariCP问题
EN

Stack Overflow用户
提问于 2015-12-15 17:07:28
回答 3查看 3.9K关注 0票数 7

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

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

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

EN

回答 3

Stack Overflow用户

发布于 2018-09-14 18:56:28

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

代码语言:javascript
复制
spring.jmx.default-domain=app_name

我希望这能帮到你。

票数 11
EN

Stack Overflow用户

发布于 2018-06-26 22:30:06

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

代码语言:javascript
复制
spring.datasource.hikari.poolName=MyDataPoolName

或者分别为application.yml:

代码语言:javascript
复制
spring:
  datasource:
    hikari:
      pool-name: MyDataPoolName

然后Tomcat可以加载这两个应用程序,名称冲突也就消失了。

票数 2
EN

Stack Overflow用户

发布于 2015-12-15 18:54:23

为数据源提供唯一的名称。例如,如果您有不同的模式来存储用户和产品数据,则可以将数据源分别命名为userDS和productDS。

程序化配置

代码语言:javascript
复制
HikariDataSource userDS = new HikariDataSource();
userDS.setPoolName("userDS");
// Set other data source properties.

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

弹簧配置

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

https://stackoverflow.com/questions/34284984

复制
相关文章

相似问题

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