Can I have two (or more) Spring-boot applications running on one Tomcat?
I have two applications packaged as war
files and I would like to run them on one Tomcat server. However, when I deploy them, I get the following exception:
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
The default endpoints that every Spring-boot application registers (like /health etc.) clash. Is there some workaround for this or is not possible to achieve this setup?
Thank you for any responses!
React Full Stack Web Development With Spring BootBy using Spring Boot application, we can create a war file to deploy into the web server. In this chapter, you are going to learn how to create a WAR file and deploy the Spring Boot application in Tomcat web server.
I have added 2 main classes with @SpringBootApplication.
You can not deploy Jar to tomcat and expect it to load your web application.
As Spring Boot Reference says:
If your application contains more than one Spring ApplicationContext you may find that names clash. To solve this problem you can set the endpoints.jmx.uniqueNames property to true so that MBean names are always unique.
endpoints.jmx.domain=myapp
endpoints.jmx.uniqueNames=true
Similar to @Maciej answer. An alternative is to set the following
spring.application.name=my-app-name
spring.jmx.default-domain=my-app-name
Or for application.yaml
:
spring:
application:
name: my-app-name
jmx:
default-domain: my-app-name
Worked for me on Spring boot 1.5.9.RELEASE
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With