问题场景:

  领导让我搭建一套Jenkins实现自动化部署,项目是SpringCloud项目,配置的过程很顺利,给我提供了一台服务器做部署测试(服务器以前是做dev环境,很长时间没人用了)

  我把所有项目配置上,但至少一半构建失败,异常信息:[main] INFO  o.a.catalina.core.StandardService -Stopping service [Tomcat]

  启动日志的最后一行就是这个,没有任何有用的信息,找了很多资料,耽误了2天时间终于解决了。

  解决思路:首先要明确一点,既然是Tomcat自动停止了,肯定是有代码报错,只是你的项目没有打印错误日志。

  解决办法:

  1.  给启动类加上try..catch...并打印catch的信息。

@SpringBootApplication
public class Application {
static Logger logger = LoggerFactory.getLogger(Application .class);
public static void main(String[] args) {
try {
SpringApplication.run(Application .class, args);
logger.info("启动成功!");
} catch (Exception e) {
logger.error("启动异常", e);
} }
}

  2. 由于Tomcat的默认日志工具和SpringCloud的默认日志工具是不一样的:Tomcat使用的是log4j;SpringBoot使用的是Logback。

  我配置的也是Logback,所以只能输出logback日志,而tomcat的log4j的日志并没有输出。这种情况我们采用Slf4j,Slf4j并不是日志输出工具,他的作用是日志继承接口,用于整合不同的日志工具。

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.8.0-beta4</version>
</dependency>

  这个依赖可以将log4j输出到slf4j,从而用sl4j输出。

  经过这两个配置就可以看到错误日志了。

  我的错误信息是: java.lang.IllegalArgumentException: Could not resolve placeholder 'kafka.ip' in value "${kafka.ip}"

  配置文件都放在Spring Cloud Config里,我用idea本地使用dev服务器的配置是可以正常启动的。再检查服务器里的配置文件,发现config的文件是读取本地的, 并不是实时从git上来取,如下图:

config-common.properties
config-log.properties
config-mongodb.properties
config-mysql.properties
........

  在服务器上每个项目目录有一个config文件夹,config文件夹有配置:application.properties  bootstrap.properties  logback-spring.xml

  SpringCloud的jar启动原则,如果本地有config和lib文件夹,是不会读取jar包里面的config和lib的。我的问题在于bootstrap.properties不是最新的,重新传一份再执行java命令,启动成功。

SpringCloud启动异常Stopping service [Tomcat]的更多相关文章

  1. org.apache.catalina.core.StandardService - Stopping service [Tomcat]

    今天在启动springboot项目突然启动失败,但是在测试日志文件,以为是日志出错,下面这个是logback打印的异常信息. 2019-05-30 15:09:10.686 [restartedMai ...

  2. spring boot 2 内嵌Tomcat Stopping service [Tomcat]

    我在使用springboot时,当代码有问题时,发现控制台打印下面信息: Connected to the target VM, address: '127.0.0.1:42091', transpo ...

  3. Stopping service [Tomcat] Disconnected from the target VM, address:XXXXXX解决方案

    原文出处:https://blog.csdn.net/u013294097/article/details/90677049 Stopping service [Tomcat] Disconnecte ...

  4. Spring Boot启动的报错 Stopping service [Tomcat]

    我遇到的问题是项目中使用java_websocket的WebSocketClient,由于性能要求,需要再Controller直接继承WebSocketClient, 在项目启动过程中调试进入spri ...

  5. stopping service [tomcat],服务未启动

    1. 在主类中添加日志打印,查看错误: 2. 我的错误是因为两个controller含有相同的路径

  6. Springboot + Stopping service [Tomcat]+ Process finished with exit code 0

    在Springboot 的版本为: <version>1.5.10.RELEASE</version> 原因:代码中有非法格式的结构,及代码写错啦,例如: <result ...

  7. Address already in use: JVM_Bind,tomcat启动异常

    严重: StandardServer.await: create[8050]: java.net.BindException: Address already in use: JVM_Bind tom ...

  8. ubuntu设置自定义程序开机启动(本文以tomcat为例)

    准备工作: 由于tomcat要用到Java,所以需要安装jdk,并配置好java的环境变量.这部分不再赘述,而且不是本文的重点. 方法一.加入/etc/rc.loalroot@ubuntu:~# vi ...

  9. Linux下Mysql启动异常排查方案

    遇到Mysql启动异常问题,可以从以下几个方面依次进行问题排查: (1)如果遇到“Can't connect to local MySQL server through socket '/tmp/my ...

随机推荐

  1. day45 如何完全删除mysql服务

    卸载mysql之后,mysql的服务无法删除 解决方案 在我们在卸载mysql后会有一些东西没有删除干净,当我们把这些内容清除干净后,服务自然就消失了 步骤一: 如果是默认安装的话 在这三个文件内都有 ...

  2. [BSidesCF 2020]Had a bad day

    [BSidesCF 2020]Had a bad day 测试 一些猫狗的图片加上url有传参,测试到文件包含时报错了. 使用php伪协议: php伪协议 php://fliter/read=conv ...

  3. JVM 学习笔记(五)

    前言: 前面的文件介绍了JVM的内存模型以及各个区域存放了那些内容,本编文章将介绍JVM中的垃圾回收Garbage Collector,和大家一起探讨一下. 如何确定一个对象是垃圾: 这里介绍两种方法 ...

  4. Scrapy(五):CrawlSpider的使用

    Scrapy(五):CrawlSpider的使用 说明 :CrawlSpider,就是一个类,是Spider的一个子类,也是一个官方类,因为是子类,所以功能更加的强大,多了一项功能:去指定的页面中来抓 ...

  5. JVM 专题十二:运行时数据区(七)对象的实例化内存布局与访问定位

    1. 对象的实例化 1.1 创建对象的方式 new 最常见的方式 变形1 : Xxx的静态方法 变形2 : XxBuilder/XxoxFactory的静态方法 Class的newInstance() ...

  6. python面试题四:Python web框架

    1 django.flask.tornado框架的比较? 2 什么是wsgi? WSGI的全称是Web Server Gateway Interface,翻译过来就是Web服务器网关接口.具体的来说, ...

  7. hihoCoder 1051 补提交卡 最详细的解题报告

    题目来源:补提交卡 解题思路:假设未提交程序的天数为:a1,a2,....,an,补交的张数为M.依次从a1,a2,....,an中去掉连续的 K 天(0<=K<=M),然后再来计算剩余数 ...

  8. socket采用epoll编程demo

    epoll工作流程 首先,需要调用epoll_create创建epoll: 此后我们就可以进行socket/bind/listen: 然后调用epoll_ctl进行注册: 接下来,就可以通过一个whi ...

  9. python+requests实现接口自动化

    1. 前言 今年2月调去支持项目接口测试,测试过程中使用过postman.jmeter工具,基本能满足使用,但是部分情况下使用较为麻烦.比如:部分字段存在唯一性校验或字段间有业务性校验,每次请求均需手 ...

  10. 浅谈服务治理、微服务与Service Mesh(三) Service Mesh与Serverless

    作为本系列文章的第三篇(前两篇<浅谈服务治理.微服务与Service Mesh(一)Dubbo的前世今生>,<浅谈服务治理.微服务与Service Mesh(二) Spring Cl ...