springboot项目配置druid在外部tomcat中启动报错:InstanceAlreadyExistsException

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39089503/article/details/91351085

1.tomcat9中报错

        ... 37 more
        Caused by: org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [com.alibaba.druid.filter.stat.StatFilter@1dbef693] with key 'statFilter'; nested exception is javax.management.InstanceAlreadyExistsException: com.alibaba.druid.filter.stat:name=statFilter,type=StatFilter
                at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:628)
                at org.springframework.jmx.export.MBeanExporter.registerBeans(MBeanExporter.java:550)
                at org.springframework.jmx.export.MBeanExporter.afterSingletonsInstantiated(MBeanExporter.java:432)
                at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:781)
                at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866)
                at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
                at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
                at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)
                at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)
                at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
                at org.springframework.boot.web.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:151)
                at org.springframework.boot.web.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:131)
                at org.springframework.boot.web.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:86)
                at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:169)
                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5139)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                ... 38 more
        Caused by: javax.management.InstanceAlreadyExistsException: com.alibaba.druid.filter.stat:name=statFilter,type=StatFilter
                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:195)
                at org.springframework.jmx.export.MBeanExporter.registerBeanInstance(MBeanExporter.java:674)
                at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:618)
                ... 53 more

2.解决
首先看报错说的是InstanceAlreadyExistsException,也就是StatFilter(Druid内置用于统计监控信息的)实例已经起了,在启动报重复异常。
一开始想的是重启tomcat但是之前的进程没关闭,然而ps -ef|grep tomcat 后发现就一个tomcat起着。
然后查看启动日志:
在这里插入图片描述
在这里插入图片描述
发现启动日志很长,而且有两次初始连接池的情况,理所当然报错了
然后想到之前对tomcat的server.xml进行了修改:
在这里插入图片描述
因为注册了一个域名,但是又想直接域名就能访问到项目主页,又不想通过代理转发的方式,所以修改了server.xml
一开始是这样配置的:

<Host name="www.cthlizi.cn"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
			<Context docBase="gmweb" path="" reloadable="false" />

这边的appBase="webapps"会导致tomcat加载一次应用,然后有配置了Context ,其中docBase又会导致加载一次应用
所以需要修改这里的配置,参照上面大图

最后再次重启tomcat发现没有异常了,也不影响我的要求。

ps:http://www.cthlizi.cn/ 准备弄个人网站,慢慢搭建中…

猜你喜欢

转载自blog.csdn.net/qq_39089503/article/details/91351085
今日推荐