问题场景:

  领导让我搭建一套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. 通过注入DLL修改API代码实现钩取(一)

    通过注入DLL修改API代码实现钩取(一) Ox00 大致思路 通过CreateRemoteThread函数开辟新线程,并将DLL注入进去 通过GetProcessAddress函数找到需钩取的API ...

  2. SpringBoot常用数据源配置

    #mysql8.X url: jdbc:mysql://localhost:3306/yourdbname?serverTimezone=UTC&useSSL=false&allowP ...

  3. day26 作业(ATM第二版)

    目录 start.py conf.settings.py core.src.py db.db_handler.py interface.bank_interface.py interface.shop ...

  4. Mybatis插件扩展以及与Spring整合原理

    @ 目录 前言 正文 插件扩展 1. Interceptor核心实现原理 2. Mybatis的拦截增强 Mybatis与Spring整合原理 1. SqlSessionFactory的创建 2. 扫 ...

  5. Django之Model、Form、ModelForm区别

    本节内容: 1:Model               https://www.cnblogs.com/shuai1991/p/10844662.html 2:Form                 ...

  6. PDFtoWORD_V1.1版本支持PDF文档中的文字和图片一起转化到word文档中了~

    ​    昨天菜鸟小白做了一个小软件——PDFtoWORD,作用就是将pdf文件中的文字提取出来自动转化为可编辑的word类型.但是这个软件目前也只能将文件PDF中的文字提取出来,还无法提取图片.为了 ...

  7. 记SqlSugar ORM框架之找不到主键问题

    前端时间在.NetCore项目中使用SqlSugar ORM框架(引用sqlSugarCore依赖包)的时候遇到了一个奇葩问题:对表进行数据更新操作的时候,报错 “ You cannot have n ...

  8. Cyber Security - Palo Alto Firewall Objects Addresses, Services, and Groups(1)

    Address Objects and Groups Creating address objects. Organizing address objects with address groups ...

  9. Ethical Hacking - GAINING ACCESS(19)

    Client-Side Attacks - Social Engineering Tool: The FAT RAT Just like Veil, it generates Undetectable ...

  10. js:数组(创建、遍历、函数)

    1.数组 采用单个变量只能存储一个数据,数组能够存储多个数据,获取方式也比较简单.它是将一组数据存储在当个变量下的存储方式. 2.数组的创建 (1)new方式创建,不指定数组长度 <script ...