Java Tomcat:部署具有DB连接的两个应用程序时出现HikariCP问题
我试图在同一个tomcat7实例上部署两个WAR文件(app1.WAR和app2.WAR)。我得到这个错误:Java Tomcat:部署具有DB连接的两个应用程序时出现HikariCP问题,java,tomcat7,hikaricp,Java,Tomcat7,Hikaricp,我试图在同一个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=H
Unable to register MBean [HikariDataSource (HikariPool-0)] with key
'dataSource'; nested exception is javax.management.InstanceAlreadyExistsException:
com.zaxxer.hikari:name=dataSource,type=HikariDataSource
如果在tomcat上只部署了一个应用程序,则不会出现此错误。
有没有办法解决这个问题?为数据源指定唯一的名称。例如,如果您有单独的模式来存储用户和产品数据,则可以分别将数据源命名为
userDS
和productDS
程序配置
弹簧配置
...
...
在Spring Boot中,您可以通过application.properties更改Hikari数据源池的名称:
spring.datasource.hikari.poolName=MyDataPoolName
或application.yml分别:
spring:
datasource:
hikari:
pool-name: MyDataPoolName
然后Tomcat可以加载这两个应用程序,并且名称冲突消失。在spring boot中,jmx bean在运行时加载,并扫描您的应用程序。如果找到两个数据源,它将抛出javax.management.InstanceAlreadyExistsException。这可以通过在application.properties文件中定义默认jmx默认域名来解决,如下所示
spring.jmx.default-domain=app_name
我希望这会有所帮助。如何在spring boot应用程序中做到这一点?使用编程(Java)配置。@Manu请参阅我对这个问题的回答。关于这个问题,正在进行讨论:希望,spring开发人员解决这个问题。
spring:
datasource:
hikari:
pool-name: MyDataPoolName
spring.jmx.default-domain=app_name