两个springboot项目如何部署在同一个服务上,two spring boot applications deploy in same server
2016-11-15 10:17
1016 查看
现在有两个spring boot的maven项目,需要部署到同一个外部的服务上(tomcat),他们都包含spring-boot-starter-actuator(健康检查)的依赖,但是出现下面的异常
I have 2 spring boot applications(maven projects), which contain "spring-boot-starter-actuator" dependency, for checking health of the each application.
While deploying both the applications in tomcat server, I get below exception
解决办法
需要为每个项目配置JMX的域, 修改application.properties中的属性spring.jmx.default-domain=applicationname
I have 2 spring boot applications(maven projects), which contain "spring-boot-starter-actuator" dependency, for checking health of the each application.
While deploying both the applications in tomcat server, I get below exception
2016-05-02 22:30:44.627 ERROR 12734 --- [ost-startStop-3] o.s.b.a.e.jmx.EndpointMBeanExporter : Could not register MBean for endpoint [dumpEndpoint] org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [org.springframework.boot.actuate.endpoint.jmx.DataEndpointMBean@67e7c413] with key 'dumpEndpoint'; nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Endpoint,name=dumpEndpoint at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:625) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.registerEndpoint(EndpointMBeanExporter.java:182) [spring-boot-actuator-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.locateAndRegisterEndpoints(EndpointMBeanExporter.java:162) [spring-boot-actuator-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.doStart(EndpointMBeanExporter.java:153) [spring-boot-actuator-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.boot.actuate.endpoint.jmx.EndpointMBeanExporter.start(EndpointMBeanExporter.java:276) [spring-boot-actuator-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173) [spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51) [spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346) [spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149) [spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112) [spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:851) [spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:140) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:540) [spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:347) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:295) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.boot.context.web.SpringBootServletInitializer.run(SpringBootServletInitializer.java:149) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.boot.context.web.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:129) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.boot.context.web.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:85) [spring-boot-1.3.0.RELEASE.jar:1.3.0.RELEASE] at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:175) [spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5155) [catalina.jar:8.0.21] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [catalina.jar:8.0.21] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) [catalina.jar:8.0.21] at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) [catalina.jar:8.0.21] at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) [catalina.jar:8.0.21] at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:940) [catalina.jar:8.0.21] at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1738) [catalina.jar:8.0.21] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0] at java.lang.Thread.run(Thread.java:744) [na:1.8.0] Caused by: javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Endpoint,name=dumpEndpoint at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:437) ~[na:1.8.0] at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1898) ~[na:1.8.0] at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:966) ~[na:1.8.0] at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:900) ~[na:1.8.0] at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:324) ~[na:1.8.0] at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522) ~[na:1.8.0] at org.springframework.jmx.support.MBeanRegistrationSupport.doRegister(MBeanRegistrationSupport.java:195) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.jmx.export.MBeanExporter.registerBeanInstance(MBeanExporter.java:678) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:621) ~[spring-context-4.2.3.RELEASE.jar:4.2.3.RELEASE] ... 32 common frames omitted
解决办法
需要为每个项目配置JMX的域, 修改application.properties中的属性spring.jmx.default-domain=applicationname
1down vote | You can use the following properties in application.properties to configure a JMX domain for each of your applications (e.g. use the application name as domain):spring.jmx.default-domain=applicationname This configures the domain for all JMX endpoints which are added by Spring. endpoints.jmx.domain=applicationname This configures the JMX domain only for the actuator endpoints. This will then prevent clashes of JMX beans with same names in different applications, because the domain will be added to the JMX name. |
相关文章推荐
- 如何在eclipse以外用浏览器新建一个Maven的SpringBoot项目
- 非Spring Boot Web项目 注册节点到Eureka Server并提供服务
- spring boot项目如何测试,如何部署
- 利用spring boot如何快速启动一个web项目详解
- 从零开始通过idea插件将一个spring boot项目部署到docker容器里运行
- 非Spring Boot Web项目 注册节点到Eureka Server并提供服务
- spring boot -- 多个spring boot 项目部署到同一个web 容器
- SpringBoot项目部署在同一个tomcat容器报错的解决方案
- 微服务之部署SpringBoot项目至Linux服务器(CentOS)
- SpringBoot入门系列:eclipse如何构建一个最简单的springBoot项目。
- docker 中部署一个springBoot项目
- 如何把spring boot项目部署到tomcat容器中
- 如何快速创建一个Spring Boot项目
- Spring Boot 如何进行部署与服务配置的详解
- java web项目 maven springboot 框架 以jar方式如何部署到服务器上
- 一个Springboot 热部署的方法(基于gradle构建的项目) 3ff8
- 如何把kotlin+spring boot开发的项目部署在tomcat上
- 使用idea开发工具,nginx服务部署Extjs6,SpringBoot项目到服务器
- 如何部署同一个Spring boot web 应用到不同的环境
- Springboot整合dubbo构建maven多模块项目(三) - 把server分为api(服务接口定义)和server(服务实现)两个子module