一个Tomcat下部署多个项目异常:org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean 的解决方法

内容简介

在测试服务器上Tomcat下部署两个Spring boot项目,总是一个能启动成功,另一个启动不成功。这两个war包单独部署均能正常启动。

查看日志:启动时报出 org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean 的异常。

本文主要说明这个问题的解决方法(我的情况用下面的方法能解决)。

异常信息(部分)

Error starting ApplicationContext. To display the conditions report re-run your application with ‘debug‘ enabled.
ERROR 10-28 11:43:21(SpringApplication.java:845): Application run failed
org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [o[email protected]6ae2c860] with key ‘environmentManager‘; nested exception is javax.management.InstanceAlreadyExistsException: org.springframework.cloud.context.environment:name=environmentManager,type=EnvironmentManager
        at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:625)
        at org.springframework.jmx.export.MBeanExporter.lambda$registerBeans$2(MBeanExporter.java:551)
        at org.springframework.jmx.export.MBeanExporter$$Lambda$1330/227855367.accept(Unknown Source)
        at java.util.HashMap.forEach(HashMap.java:1280)
        at org.springframework.jmx.export.MBeanExporter.registerBeans(MBeanExporter.java:551)
        at org.springframework.jmx.export.MBeanExporter.afterSingletonsInstantiated(MBeanExporter.java:434)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:776)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762)
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398)
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:330)
        at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:157)
        at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:137)
        at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:91)
        at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:172)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5156)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1101)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1786)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: javax.management.InstanceAlreadyExistsException: org.springframework.cloud.context.environment:name=environmentManager,type=EnvironmentManager
        at com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:437)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1898)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:966)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:900)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:324)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
        at org.springframework.jmx.support.MBeanRegistrationSupport.doRegister(MBeanRegistrationSupport.java:137)
        at org.springframework.jmx.export.MBeanExporter.registerBeanInstance(MBeanExporter.java:679)
        at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:615)
        ... 28 more

解决方法

在两个项目的application.properties文件中,添加下面的定义:

spring.jmx.default-domain=xxx

注意,两个项目的xxx不能是一样的,如下图:

详细的解释可参考下面的文章:

https://blog.csdn.net/slx3320612540/article/details/87910372

原文地址:https://www.cnblogs.com/codecat/p/11751783.html

时间: 2024-08-01 10:20:22

一个Tomcat下部署多个项目异常:org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean 的解决方法的相关文章

一个tomcat下部署多个项目或一个服务器部署多个tomcat

最近需要把两个项目同时部署到服务器上,于是研究了一下,页借鉴了很多别人的方法,把过程记录下来,以儆效尤. 目录: 1,一个tomcat下同时部署两个项目(多个项目可以参考) 1.1项目都放在webapps内(共用一个端口) 1)把两个项目都放在webapps下. 2)处理重复jar包. 3)tomcat端口默认为8080.如果想修改可以去conf下的server.xml中进行修改 4)启动tomcat 1.2建立多个类似于webapps的文件夹,通过conf下的server.xml进行配置(每个

log4j和web.xml配置webAppRootKey 的问题(一个tomcat下部署多个应用)

转自:http://blog.csdn.net/arvin_qx/article/details/6829873 在tomcat下部署两个或多个项目时,web.xml文件中最好定义webAppRootKey参数,如果不定义,将会缺省为“webapp.root”,如下: <!-- 应用路径 --> <context-param> <param-name>webAppRootKey</param-name> <param-value>webapp.r

Tomcat下部署多个项目

转载地址:http://blog.csdn.net/philosophyatmath/article/details/30246631 同一端口号的多个项目部署     添加: <Context path="/route" reloadable="true" docBase="/home/develop/tomcat-7.0.54/flatrass"/> <Context path="/route2" rel

一个 tomcat 下如何部署多个项目?附详细步骤

一个tomcat下如何部署多个项目?Linux跟windows系统下的步骤都差不多,以下linux系统下部署为例.windows系统下部署同理. 一.不修改端口,部署多个项目 清楚tomcat目录结构的应该都知道,项目包是放在webapps目录下的,那能否在同一个tomcat的webapps目录下运行多个不同项目呢?答案是可以的. 1.将多个项目包放入webapps文件夹下 2.修改conf下的server.xml文件,新增web应用节点 定位到server.xml文件结束标签之前,新增web应

tomcat下部署了多个项目启动报错java web error:Choose unique values for the &#39;webAppRootKey&#39; context-param in your web.xml files

应该是tomcat下部署了多个项目且都使用log4j. <!--如果不定义webAppRootKey参数,那么webAppRootKey就是缺省的"webapp.root".但最好设置,以免项目之间的名称冲突. 定义以后,在Web Container启动时将把ROOT的绝对路径写到系统变量里. 然后log4j的配置文件里就可以用${webName.root }来表示Web目录的绝对路径,把log文件存放于webapp中. 此参数用于后面的“Log4jConfigListener”

如何在一个Tomcat 中部署多个项目

通常情况下我们部署项目时是一个Tomcat 中部署一个项目,但是有时也需要在一个tomcat中部署多个应用.如何实现呢?我简单的记录一下,方便日后查阅. 1 打开tomcat目录,修改配置文件server.xml.新增如下内容:   <!-- 新增一个项目-->   <Service name="Catalina">     <Connector port="8081" protocol="HTTP/1.1" con

tomcat中部署多个项目,webAppRootKey 参数配置

在一个tomcat中部署多个项目时,需要在每个项目的web.xml中配置webAppRootKey参数,如下: <context-param> <param-name>webAppRootKey</param-name> <param-value>{your web app}.root</param-value> </context-param>

在IIS7下部署ASP.NET项目

一:准备工作 1.安装IIS7; 2.在vs中重新生成网站项目,发布. 二:在IIS7下部署ASP.NET项目 启动 ‘Internet信息服务(IIS)管理器’ 进入IIS界面>右键单击网站>添加网站 填写上图所显示的信息. 注:物理路径指向项目中web.config所在在文件夹:应用程序池中的.netframework版本和项目配置文件所显示的版本一致. a.使用域名访问需要修改hosts文件,表示在本地使用域名解析到指定的ip地址: C:\Windows\System32\drivers

TomCat下部署接口测试环境

Tomcat目录结构说明 bin Linux或windows平台上可执行脚本文件,如果启动和关闭Tomcat的脚本 conf Tomcat服务器的各种全局配置文件,其中包括:server.xml:Tomcat的主要配置文件,服务器配置信息,如端口号.虚拟机等 tomcat-user.xml:Tomcat用户的文件,保存tomcat的用户名.密码.角色信息 web.xml:部署描述文件,注册了很多MIME类型,即文档类型 lib 所有jar文件 logs 执行时的日志文件比如启动报错,会保存在该目