Tomxin7

Simple, Interesting | 简单,有趣
本文将花费您五分钟时间

业务介绍

最近用Spring Boot开发了一个翻译的小项目,但是服务器上还跑着其他项目,包括一个同样用Spring Boot开发的微信后端服务,本次业务需要在阿里云的Linux使用同一个Tomcat容器部署多个项目。
部署环境:JDK8、Tomcat8、Centos7

遇到的问题

我多个项目一直都是部署在同一个Tomcat下,共用80端口,之前使用的MVC或者Servlet项目都没有问题,但是今天把新的Spring Boot项目部署上去之后,Tomcat直接抛出异常,并且该项目无法访问,其他项目正常。

org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [HikariDataSource (null)] with key 'dataSource'; nested exception is javax.management.InstanceAlreadyExistsException: com.zaxxer.hikari:name=dataSource,type=HikariDataSourceat org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:625) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]at org.springframework.jmx.export.MBeanExporter.lambda$registerBeans$2(MBeanExporter.java:551) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]at java.util.HashMap.forEach(HashMap.java:1288) ~[na:1.8.0_131]at org.springframework.jmx.export.MBeanExporter.registerBeans(MBeanExporter.java:551) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]at org.springframework.jmx.export.MBeanExporter.afterSingletonsInstantiated(MBeanExporter.java:434) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:776) ~[spring-beans-5.0.8.RELEASE.jar:5.0.8.RELEASE]at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) ~[spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762) ~[spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398) ~[spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]at org.springframework.boot.SpringApplication.run(SpringApplication.java:330) ~[spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.run(SpringBootServletInitializer.java:157) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:137) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]at org.springframework.boot.web.servlet.support.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:91) [spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:172) [spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5292) [catalina.jar:8.0.36]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) [catalina.jar:8.0.36]at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) [catalina.jar:8.0.36]at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) [catalina.jar:8.0.36]at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) [catalina.jar:8.0.36]at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092) [catalina.jar:8.0.36]at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834) [catalina.jar:8.0.36]at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_131]at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_131]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_131]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_131]at java.lang.Thread.run(Thread.java:748) [na:1.8.0_131]
Caused by: javax.management.InstanceAlreadyExistsException: com.zaxxer.hikari:name=dataSource,type=HikariDataSourceat com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:437) ~[na:1.8.0_131]at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1898) ~[na:1.8.0_131]at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:966) ~[na:1.8.0_131]at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:900) ~[na:1.8.0_131]at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:324) ~[na:1.8.0_131]at com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522) ~[na:1.8.0_131]at org.springframework.jmx.support.MBeanRegistrationSupport.doRegister(MBeanRegistrationSupport.java:137) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]at org.springframework.jmx.export.MBeanExporter.registerBeanInstance(MBeanExporter.java:671) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:615) ~[spring-context-5.0.8.RELEASE.jar:5.0.8.RELEASE]... 27 common frames omitted2018-08-06 23:07:37.857  INFO 13141 --- [.cn-startStop-1] ConfigServletWebServerApplicationContext : Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@67ae851c: startup date [Mon Aug 06 23:07:32 CST 2018]; root of context hierarchy
2018-08-06 23:07:37.858  INFO 13141 --- [.cn-startStop-1] o.s.j.e.a.AnnotationMBeanExporter        : Unregistering JMX-exposed beans on shutdown
06-Aug-2018 23:07:37.860 SEVERE [api.fanyi.tomxin.cn-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[api.fanyi.tomxin.cn].StandardContext[]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)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:1092)at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834)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:748)
Caused by: org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [HikariDataSource (null)] with key 'dataSource'; nested exception is javax.management.InstanceAlreadyExistsException: com.zaxxer.hikari:name=dataSource,type=HikariDataSourceat org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:625)at org.springframework.jmx.export.MBeanExporter.lambda$registerBeans$2(MBeanExporter.java:551)at java.util.HashMap.forEach(HashMap.java:1288)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:5292)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)... 10 more
Caused by: javax.management.InstanceAlreadyExistsException: com.zaxxer.hikari:name=dataSource,type=HikariDataSourceat 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:671)at org.springframework.jmx.export.MBeanExporter.registerBeanNameOrInstance(MBeanExporter.java:615)... 27 more06-Aug-2018 23:07:37.861 SEVERE [api.fanyi.tomxin.cn-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Error deploying web application directory /soft/tomcat/apache-tomcat-8.0.36/webapps/fanyi/api/ROOTjava.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[api.fanyi.tomxin.cn].StandardContext[]]at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729)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:1092)at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834)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:748)

解决过程

这里截取部分截图和报错信息,在网上查了很久,很多解决方法是需要修改项目的web.xml,可是在Spring Boot项目中,并没有web.xml文件,期间一直以为是自己项目代码问题,但是线下部署都完全正常,后来怀疑是不是Tomcat同时部署的项目有上限,但是没有查询到相关例子,直到后来先暂停了项目中的另一个Spring Boot项目之后,发现新项目居然申请的跑起来了,尝试的查找了一下多Spring Boot项目部署的问题,才发现了这个坑。

解决方案

Spring Boot的spring.jmx资源管理是默认打开的,而两个项目同时使用会冲突,网上有两种解决办法,我用的是第一种,第二种大家自测:
修改配置文件:application.properties(yml)
办法1:在项目配置中加入:spring.jmx.enabled=false
办法2:
在application中各自配置
spring.jmx.default-domain=project1
spring.jmx.default-domain=project2
以保证domain是两个不一样的

转载于:https://www.cnblogs.com/tomxin7/p/9434085.html

多个Spring Boot项目部署在一个Tomcat容器无法启动相关推荐

  1. java servlet 部署到tomcat_如何把spring boot项目部署到tomcat容器中

    把spring-boot项目按照平常的web项目一样发布到tomcat容器下 一.修改打包形式 在pom.xml里设置 war 二.移除嵌入式tomcat插件 在pom.xml里找到spring-bo ...

  2. 用idea插件将一个spring boot项目部署到docker容器里运行

    修改docker配置文件 1.编辑docker.service脚本 /usr/lib/systemd/system/docker.service 2.在docker.service中加入脚本并保存退出 ...

  3. 【java】四步法:spring boot项目部署在CentOS 8(后端篇)

    四步法:spring boot项目部署在CentOS 8(后端篇) 一.使用IDEA打包项目为jar包(构建) 1. IDEA版本 2. maven版本 3. pom.xml 设置 4. 构建jar包 ...

  4. Spring Boot项目部署服务器 本地正常 远程无法访问问题排错

    Spring boot项目部署linux 服务器本地正常 远程无法访问 问题描述 排错 原因 最后 最近买个云主机学大佬部署项目..然后直接炸裂了... 问题描述 本地保证代码没问题的情况下( jav ...

  5. Spring Boot项目部署到Docker的流程及一些容易踩的坑

    Spring Boot项目部署到Docker的流程及一些容易踩的坑 前期准备 准备Spring Boot项目 编写简单的控制类,方便测试 编写日志打印相关 测试项目是否能正常工作 准备部署到docke ...

  6. 腾讯云服务器 - 将 Spring Boot 项目部署到云服务器上(保姆级教程)

    目录 前言 1.在云服务器上安装 jdk 2.在云服务器上安装 mysql 2.1.安装 mysql 2.2.启动 mysql 服务 2.3.验证 3.将 Spring Boot 项目打包成 jar ...

  7. spring boot项目 部署 使用Procrun 注册为windows服务。

    1.下载Procrun 下载链接:https://downloads.apache.org/commons/daemon/binaries/windows/ 2.新建部署目录workSpace 3.添 ...

  8. 【Linux部署】Spring Boot 项目部署在Linux环境下的Docker容器内举例【任务调度系统 xxl-job 任务调度中心】(手动版)

    1.将SpringBoot项目打jar包 这里打包的是xxl-job任务调度系统的调度器. 2.编写Dockerfile FROM java:8 VOLUME /tmp ADD xxl-job-adm ...

  9. Spring Boot 项目部署方案 /打包 + Shell 脚本部署详解,稳的一批

    本篇和大家分享的是 Spring Boot 打包并结合 Shell 脚本命令部署,重点在分享一个shell 程序启动工具,希望能便利工作: profiles指定不同环境的配置 maven-assemb ...

最新文章

  1. F5 Priority Group Activation
  2. 笔记本多硬盘win7下U盘安装Cnetos7引导问题!
  3. Python 3 利用 Dlib 和 sklearn 人脸笑脸检测机器学习建模
  4. PHP—str_replace()替换函数的使用
  5. 基于业务和平台理解数字营销概念
  6. Font Awesome-为Bootstrap设计的图标字体
  7. MYSQL 5.7.26 二进制版本安装
  8. Java 表单提交下拉框_Java实现Layui的form表单动态绑定下拉框
  9. wiquery ResizePanel
  10. 用vSphere Client去建立虚拟机报MKS的错
  11. wordpress如何隐藏后台位置?
  12. 英语语法 第一章 句子的形成——概说
  13. 深圳福田区特殊住房申请学位需要哪些材料 具体材料汇总
  14. webots controller API(C++)
  15. 爱分析·中国采购数字化行业趋势报告
  16. 我来告诉你,一个草根程序员如何逆袭,成功进入BAT!
  17. three.js 场景编辑器 源码解析(六)
  18. html按钮扁平化,HTML5和CSS3扁平化风格博客教程的资源分享
  19. Spss-系统聚类手算实操
  20. NOIP 2017 游记

热门文章

  1. 程序猿要什么爱情,陪你未来的是键盘和代码啊!
  2. 出现java.lang.UnsupportedClassVersionError 错误的原因
  3. 进入保护模式(二)——《x86汇编语言:从实模式到保护模式》读书笔记14
  4. centOS安装python
  5. docker部署下的nginx负载均衡时,无法获取真实ip的问题
  6. springboot集成邮箱功能
  7. Swin Transformer对CNN的降维打击
  8. python中的 and以及or
  9. Linux内核学习的一些国外网站
  10. Framework中网络定位服务简介