新建一个spring boot的web项目,运行之后控制台输出“Unregistering JMX-exposed beans on shutdown”,tomcat也没有运行.寻找原因,看了下pom.xml文件中tomcat依赖关系如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId…
原因是:没有引入tomcat依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </dependency>…
spring boot不要放在tomcat下启动,因为自身就带了集成tomcat…
背景 最近在搞云化项目的启动脚本,觉得以往kill方式关闭服务项目太粗暴了,这种kill关闭应用的方式会让当前应用将所有处理中的请求丢弃,响应失败.这种形式的响应失败在处理重要业务逻辑中是要极力避免的,所以我们需要一种更加优雅的方式关闭springBoot应用. 基本思路 首先我们关闭一个微服务应用可以分为两大步骤 关闭web应用服务器 关闭spring容器 我项目中使用的是内置的tomcat服务器,所以本文描述的是如何平滑的关闭tomcat应用.SpringBoot Actuator中提供了s…
Spring Boot默认支持Tomcat/Jetty/Undertow作为底层容器.在之前实战相关的文章中,可以看到引入spring-boot-starter-web就默认使用tomcat容器,这是为什么呢? 实际通过该starter的pom.xml文件可以得到答案:其引入的就是tomcat容器. 下面分三部分内容解析Tomcat容器配置 一.自动配置原理 关于自动配置的原理,前面几篇文章已经有详细的描述,这里将容器自动配置与其他配置的不同点. 1.自动配置的类而不是直接与Tomcat相关的名…
操作非常的简单,不过如果从来没有操作过,也是需要查找一下资料的,所以,在此我简单的记录一下自己的操作步骤以备后用! 1:我的Eclipse版本,不同的开发工具可能有所差异,不过大同小异 2:如何进入对应的设置界面? 2-1:通过调试模式的菜单按钮进入对应的设置界面 2-2:通过运行模式菜单按钮进入对应的设置页面 3:进入Spring Boot 内嵌Tomcat的端口修改界面,当然,这里就是重点所在了,也是非常简单的一个配置 4:重新启动一下,试试看,自己配置的端口号是否可用吧! 5:一般的JAV…
spring boot因为内嵌tomcat容器,所以可以通过打包为jar包的方法将项目发布,但是如何将spring boot项目打包成可发布到tomcat中的war包项目呢? 1. 既然需要打包成war包项目,首先需要在pom.xml文件中修改打包类型,将spring boot默认的<packaging>jar</packaging>修改为<packaging>war</packaging>形式: 2. 其次spring boot的web项目中内嵌tomca…
Spring boot 内置tomcat禁止不安全HTTP方法 在tomcat的web.xml中可以配置如下内容,让tomcat禁止不安全的HTTP方法 <security-constraint> <web-resource-collection> <url-pattern>/*</url-pattern> <http-method>PUT</http-method> <http-method>DELETE</htt…
使用Spring boot整合Hive,在启动Spring boot项目时,报出异常: 经过排查,是maven的包冲突引起的,具体做法,排除:jetty-all.hive-shims依赖包.对应的pom配置如下: <dependency> <groupId>org.apache.hive</groupId> <artifactId>hive-jdbc</artifactId> <version></version> <…
使用Spring boot整合Hive,在启动Spring boot项目时,报出异常: java.lang.NoSuchMethodError: org.eclipse.jetty.servlet.ServletMapping.setDefault(Z)V 经过排查,是maven的包冲突引起的,具体做法,排除:jetty-all.hive-shims依赖包.对应的pom配置如下: <dependency> <groupId>org.apache.hive</groupId&g…
最近让Spring Boot内嵌Tomcat的session超时问题给坑了一把. 在应用中需要设置session超时时间,然后就习惯的在application.properties配置文件中设置如下, server.session.timeout=90 这里把超时时间设置的短些,主要想看看到底有没有起作用(不能设值30min然后再看吧,那样太不人道了).结果没起作用,百度下发现Spring Boot 2后,配置变成如下, server.servlet.session.timeout=90 但结果…
之前在Spring Boot启动过程(二)提到过createEmbeddedServletContainer创建了内嵌的Servlet容器,我用的是默认的Tomcat. private void createEmbeddedServletContainer() { EmbeddedServletContainer localContainer = this.embeddedServletContainer; ServletContext localServletContext = getServ…
一.设置打包方式 在pom.xml中设置打包格式 <packaging>war</packaging> 二.取消Spring Boot的tomcat <!--部署成war包时开启↓↓↓↓--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> &…
作者:木木匠 https://my.oschina.net/luozhou/blog/3088908 我们知道 Spring Boot 给我们带来了一个全新的开发体验,让我们可以直接把 Web 程序打包成 jar 包直接启动,这得益于 Spring Boot 内置了容器,可以直接启动. 本文将以 Tomcat 为例,来看看 Spring Boot 是如何启动 Tomcat 的,同时也将展开学习下 Tomcat 的源码,了解 Tomcat 的设计. 从 Main 方法说起 用过 Spring Bo…
spring boot的启动程序启动后,在访问http://localhost:8080地址的时候出现了错误,为什么出错网上我找了好久也没有得出具体的解决办法 当我指定到具体的action的时候,却可以正常的访问,目前一头懵逼.…
使用maven创建的springboot项目,默认是jar包,springboot还有自己带的tomcat. 现在为了简单实现本地自动发布项目到服务器,需要通过发布war包的形式,通过maven将项目发布到tomcat的webapps目录下. 1.将spring boot发布war包:      修改pom.xml文件,将jar修改为war: <packaging>war</packaging>   在spring-boot-starter-web依赖中移除tomcat模块: &l…
spring boot 2.0.3启动报错: Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2018-10-24 14:49:06.108 ERROR 14932 --- [ main] o.s.boot.SpringApplication : Application run failed org.springfra…
spring boot 的相关404页面配置都是针对项目路径下的(如果配置了 context-path) 在context-path不为空的情况下,如果访问路径不带context-path,这时候会显示空白页面或者是tomcat默认404页面   这时候如何自定义内置tomcat的404页面呢?   查看tomcat错误页面的实现源码org.apache.catalina.valves.ErrorReportValue: report方法中先查找是否注册了错误页面,默认情况未注册任何错误页面,然…
目录 1.问题 2.1. 为什么需要使用这个/tmp/tomcat*? 2.2.那个 /tmp/tomcat* 目录为什么不存在? 三.解决办法 修改 springboot 配置,不要在/tmp 下创建目录 修改 清理 /tmp 下面的文件的机制 四.spring boot 官方解答 1.问题 在过年后,部分运营人员反应说运营后台上传不了图片,然后查看日志,发现报错内容是/tmp/tomcat* 目录不存在. 环境: spring boot 1.5.15 Centos7.6(aliyun) 2.…
网上很多文章描述过,当我按步骤做时会抛各种错误,最后记录下我的做法(成功发布到本地 Tomcat9 ): 1.将项目的启动类Application.java继承SpringBootServletInitializer并重写configure方法 import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import…
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Spring Boot 版本:2.2.x 最好对 Spring 源码有一定的了解,可以先查看我的 <死磕 Spring 之 IoC 篇 - 文章导读> 系列文章 如果该篇内容对您有帮助,麻烦点击一下"推荐",也可以关注博主,感激不尽~ 该系列其他文章请查看:<精尽 Spring B…
本文结论 源码基于spring boot2.6.6 项目的pom.xml中存在spring-boot-starter-web的时候,在项目启动时候就会自动启动一个Tomcat. 自动配置类ServletWebServerFactoryAutoConfiguration找到系统中的所有web容器.我们以tomcat为主. 构建TomcatServletWebServerFactory的bean. SpringBoot的启动过程中,会调用核心的refresh方法,内部会执行onRefresh()方法…
用spring boot框架做的项目,将第三方包全部打在jar里面,通过shell脚本启动和停止服务,常用的shell脚本模板如下: #!/bin/bashJAVA_OPTIONS_INITIAL=-Xms128MJAVA_OPTIONS_MAX=-Xmx512M_JAR_KEYWORDS=monitor-alarm-task-1.0-SNAPSHOT.jarAPP_NAME=monitor-alarm-taskAPPLICATION_FILE=/opt/scpip_monitor/applic…
Spring Boot,作为Spring框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,它能帮助我们很快捷的创建出独立运行.产品级别的基于Spring框架的应用,大部分Spring Boot应用只需要非常少的配置就可以快速运行起来,是一个与微服务(MicroServices)相当契合的微框架. 下面主要有两种方式进行Spring Boot的关闭:通过HTTP发送shutdown信号,或者通过service stop的方式. 一.通过HT…
随着微服务架构的流行,想要启动一个微服务架构项目就要开启好多端口,有时候一台机器上部署的项目多的时候,端口资源就比较紧张了,其实有的微服务组件仅仅只是提供RPC服务,可以不用占用web启动的端口,此时spring boot 不占用web端口的方式就派上用场了,但是spring boot 1.x与spring boot 2.x的配置是有区别的,在使用时一定要注意一下自己所使用的版本 spirngboot 2.x之前(代码方式实现): @SpringBootApplication public cl…
package com.geostar.geostack.git_branch_manager.config; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component…
前言 主要了解前面的程序入口 @@SpringBootApplication 这个注解的结构. 正文 参考<SpringBoot揭秘 快速构建微服务体系>第三章的学习,总结下. SpringBootApplication背后的秘密 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguratio…
1:pom里面的packaging修改为war(<packaging>war</packaging>) 2:在pom依赖spring-boot-starter-web排除内置的tomcat,具体如下: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <ex…
导火线 : 遇到两次本地可以跑通,部署到服务器tomcat就出问题的情况了,为了不忘记,记录在此吧 第一次部署到服务器上是静态资源访问不了,花了一些时间,是因为application.yml中的 mvc: static-path-pattern: /static/** 第二次部署到服务器上是controller中的方法访问不了,花了一些时间,是因为application.java 没有继承SpringBootServletInit..类,这是最气的,重写configure方法 遇到404不要心急…
问题描述: 引入了spring cloud的监控starter,间接引入jooq. 又引入了 spring-boot-starter-web,所以间接引入aop. 参考下面资料后:https://github.com/jOOQ/jOOQ/issues/5902 发现可以通过修改aop表达式解决. 于是修改aop表达式如下: 问题解决.…