在一个Tomcat

时间:2015-10-02 06:53:30

标签: tomcat deployment spring-boot

我可以在一个Tomcat上运行两个(或更多)Spring启动应用程序吗?

我有两个应用程序打包为war个文件,我想在一个Tomcat服务器上运行它们。但是,当我部署它们时,我得到以下异常:

org.springframework.jmx.export.UnableToRegisterMBeanException: 
    Unable to register MBean [org.springframework.boot.actuate.endpoint.jmx.DataEndpointMBean@2361d8ee] with key 'dumpEndpoint'; 
    nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Endpoint,name=dumpEndpoint

每个Spring-boot应用程序注册的默认端点(如/ health等)发生冲突。是否有一些解决方法或无法实现此设置?

感谢您的回复!

3 个答案:

答案 0 :(得分:8)

正如Spring Boot Reference所说:

  

如果您的应用程序包含多个Spring ApplicationContext,您可能会发现名称发生冲突。要解决此问题,您可以将 endpoints.jmx.uniqueNames 属性设置为true,以便MBean名称始终是唯一的。

endpoints.jmx.domain=myapp
endpoints.jmx.uniqueNames=true

答案 1 :(得分:3)

与@Maciej的答案类似。另一种方法是设置以下

spring.application.name=my-app-name
spring.jmx.default-domain=my-app-name

application.yaml

spring:
  application:
    name: my-app-name
  jmx:
    default-domain: my-app-name

在Spring 1.5.9.RELEASE

上为我工作

答案 2 :(得分:0)

spring.jmx.default-domain=app-name
spring.jmx.unique-names=true