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…
一.概念 1.事件监听的流程 步骤一.自定义事件,一般是继承ApplicationEvent抽象类 步骤二.定义事件监听器,一般是实现ApplicationListener接口 步骤三.启动时,需要将监听器加入到Spring容器中 步骤四.发布事件 对于配置监听器的方式[即第三步] 方式一.app.addListeners(new MyApplicationListener());添加监听器 方式二.把监听器使用纳入Spring配置中管理如使用@Component标注 方式三.再applicat…
spring boot 的相关404页面配置都是针对项目路径下的(如果配置了 context-path) 在context-path不为空的情况下,如果访问路径不带context-path,这时候会显示空白页面或者是tomcat默认404页面   这时候如何自定义内置tomcat的404页面呢?   查看tomcat错误页面的实现源码org.apache.catalina.valves.ErrorReportValue: report方法中先查找是否注册了错误页面,默认情况未注册任何错误页面,然…
springboot的web项目的启动主要分为: 一.使用内置tomcat启动 启动方式: 1.IDEA中main函数启动 2.mvn springboot-run 命令 3.java -jar XXX.jar 配置内置tomcat属性: 关于Tomcat的属性都在org.springframework.boot.autoconfigure.web.ServerProperties配置类中做了定义,我们只需在application.properties配置属性做配置即可.通用的Servlet容器…
springboot的web项目的启动主要分为: 一.使用内置tomcat启动 启动方式: 1.IDEA中main函数启动 2.mvn springboot-run 命令 3.java -jar XXX.jar 配置内置tomcat属性: 关于Tomcat的属性都在org.springframework.boot.autoconfigure.web.ServerProperties配置类中做了定义,我们只需在application.properties配置属性做配置即可.通用的Servlet容器…
目录 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.…
Spring Boot默认支持Tomcat/Jetty/Undertow作为底层容器.在之前实战相关的文章中,可以看到引入spring-boot-starter-web就默认使用tomcat容器,这是为什么呢? 实际通过该starter的pom.xml文件可以得到答案:其引入的就是tomcat容器. 下面分三部分内容解析Tomcat容器配置 一.自动配置原理 关于自动配置的原理,前面几篇文章已经有详细的描述,这里将容器自动配置与其他配置的不同点. 1.自动配置的类而不是直接与Tomcat相关的名…
#配置内置tomcat的访问日志server.tomcat.accesslog.buffered=trueserver.tomcat.accesslog.directory=/home/hygw/logsserver.tomcat.accesslog.enabled=trueserver.tomcat.accesslog.file-date-format=.yyyy-MM-ddserver.undertow.accesslog.pattern =%h %l %u %t "%r" %s…
启用定时任务 @SpringBootApplication @EnableScheduling // 启动类添加 @EnableScheduling 注解 public class ScheduleDemoApplication { public static void main(String[] args) { SpringApplication.run(ScheduleDemoApplication.class, args); } } 新增定时任务类 @Component // 类上添加 @…
springboot本身提供了内部tomcat,可以使用main方法直接启动即可,此时在访问项目请求时,不需要加上项目名称.例如:http://localhost:8088/user/ 如果使用外部tomcat启动时,则需要加上项目名称,例如:http://localhost:8081/springboot-mybatis-demo/user/ 可能有方法使用外部tomcat启动可以不用加项目名称,现在先做记录.…
背景 最近在搞云化项目的启动脚本,觉得以往kill方式关闭服务项目太粗暴了,这种kill关闭应用的方式会让当前应用将所有处理中的请求丢弃,响应失败.这种形式的响应失败在处理重要业务逻辑中是要极力避免的,所以我们需要一种更加优雅的方式关闭springBoot应用. 基本思路 首先我们关闭一个微服务应用可以分为两大步骤 关闭web应用服务器 关闭spring容器 我项目中使用的是内置的tomcat服务器,所以本文描述的是如何平滑的关闭tomcat应用.SpringBoot Actuator中提供了s…
项目中用到websocket,就将原来写好的websocket工具类直接拿来使用,发现前端建立连接的时候报404,经查找发现是因为原来用的是配置的外部tomcat启动,这次是spring boot自带的启动,查找看网上说要加入以下配置: 1,添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</ar…
Spring Boot 内嵌容器Undertow参数设置 配置项: # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程 # 不要设置过大,如果过大,启动项目会报错:打开文件数过多 server.undertow.io-threads=16 # 阻塞任务线程池, 当执行类似servlet请求阻塞IO操作, undertow会从这个线程池中取得线程 # 它的值设置取决于系统线程执行任务的阻塞系数,默认值是IO线程数*8 server.undertow.…
操作非常的简单,不过如果从来没有操作过,也是需要查找一下资料的,所以,在此我简单的记录一下自己的操作步骤以备后用! 1:我的Eclipse版本,不同的开发工具可能有所差异,不过大同小异 2:如何进入对应的设置界面? 2-1:通过调试模式的菜单按钮进入对应的设置界面 2-2:通过运行模式菜单按钮进入对应的设置页面 3:进入Spring Boot 内嵌Tomcat的端口修改界面,当然,这里就是重点所在了,也是非常简单的一个配置 4:重新启动一下,试试看,自己配置的端口号是否可用吧! 5:一般的JAV…
最近让Spring Boot内嵌Tomcat的session超时问题给坑了一把. 在应用中需要设置session超时时间,然后就习惯的在application.properties配置文件中设置如下, server.session.timeout=90 这里把超时时间设置的短些,主要想看看到底有没有起作用(不能设值30min然后再看吧,那样太不人道了).结果没起作用,百度下发现Spring Boot 2后,配置变成如下, server.servlet.session.timeout=90 但结果…
Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现 Anoyi 精讲JAVA 精讲JAVA 微信号 toooooooozi 功能介绍 讲解java深层次开发,解析各大流行框架的源码 2018-04-19 Spring Boot 在关闭时,如果有请求没有响应完,在不同的容器会出现不同的结果,例如,在 Tomcat 和 Undertow 中会出现中断异常,那么就有可能对业务造成影响.所以,优雅停机非常有必要性,目前官方是没有提供很好的策略来实现. Ea…
Spring Boot版本: 2.0.0.RELEASE 这里需要引入依赖 spring-boot-starter-web 这里有可能有个人的误解,请抱着怀疑态度看. 建议: 感觉自己也会被绕晕,所以有兴趣的使用IDE工具看下源码 1.Tomcat在什么时候被初始化了? 在ServletWebServerApplicationContext中有段代码,如下: org.springframework.boot.web.servlet.context.ServletWebServerApplicat…
Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源 在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等.今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资源操作. 这个神器就是 CommandLineRunner,CommandLineRunner 接口的 Component 会在所有 Spring Beans 都初始化之后,SpringApplication.run() 之前执行,非常适合在应用…
学习Java的人,或者开发很多项目,都需要使用到Spring 这个框架,这个框架对于java程序员来说.学好spring 就不怕找不到工作.我们时常会写一些工具类,但是有些时候 我们不清楚,我们些的工具类,是否稳定,可靠.对于有看spring 源码习惯的人,其实,spring框架本身自带了很多工具类,其实,我有一个想法,就是想把一些常用的方法,从spring 整理整理出来,然后编译成jar包,因为有些时候,项目并不需要引用所有jar包进入的.这边整理了一些spring 常用的类,共大家参照: s…
每篇一句 十个光头九个富,最后一个会砍树 前言 不知你在使用Spring Boot时是否对这样一个现象"诧异"过:同一个接口(同一个URL)在接口报错情况下,若你用rest访问,它返回给你的是一个json串:但若你用浏览器访问,它返回给你的是一段html.恰如下面例子(Spring Boot环境~): @RestController @RequestMapping public class HelloController { @GetMapping("/test/error&…
Spring Boot 项目几种启动方式 1. 使用 main 启动 jar xxxx.jar 2. 使用 mvn 启动 mvn spring-boot:run 3. 使用 Spring Boot cli 启动 # 通过指定不同端口启动多个相同项目 spring run SayHelloApplication.java -- --server.port=9999 4. 打成 war包 部署到 Tomcat 启动…
问题 Intellij IDEA Spring Boot 项目Debug模式启动缓慢 环境 os: windows10 idea :2018.1 解决方法 去除所有断点就正常了,很诡异,原因未知.…
spring boot整合elasticsearch, 启动报错: Caused by: java.lang.IllegalStateException: availableProcessors ], rejecting [] at io.netty.util.NettyRuntime$AvailableProcessorsHolder.setAvailableProcessors(NettyRuntime.java:) ~[netty-common-.Final.jar:.Final] at…
现象描述: spring boot 在eclipse里启动正常,但打包后启动不起来. 错误日志如下: D:\Project>java -jar MKKY_CMS.jar . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__,…
之前在Spring Boot启动过程(二)提到过createEmbeddedServletContainer创建了内嵌的Servlet容器,我用的是默认的Tomcat. private void createEmbeddedServletContainer() { EmbeddedServletContainer localContainer = this.embeddedServletContainer; ServletContext localServletContext = getServ…
近期由于项目中jsp发请求要訪问项目以外的文件.直接訪问写成"c:\xxx\xxx.mp4"来訪问是没有权限的.不能完毕现有要求.经查询后发现能够在tomcat中配置虚拟文件夹将本地的文件设置成"http://localhost:8080/xxx.mp4",本地文件经过这种虚拟映射后就能够在项目中訪问了. 上面的思路是很正确的.可是详细实施起来却遇到了问题,终于经重复启动项目和本机上的tomcat发现,eclipse项目启动时.仅仅是使用了本机上的部分tomcat组…
我一直很好奇 spring boot 以哪种方式 启动的 tomcat  今天 特地跟踪了一下 大家都知道 spring 容器很核心的 方式 是org.springframework.context.support.AbstractApplicationContext#refresh 这个方法 其中 try { // Allows post-processing of the bean factory in context subclasses. postProcessBeanFactory(b…
Tomcat启动失败:最后一个causy by :java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tom 在idea工具启动项目,出现 war exploded: Error during artifact deployment. See server log for details.错误 出现这种问题的原因比较复杂,需要排…
分享优锐课学习笔记~来看一下如何使用Spring Boot创建Windows服务以及通过配置详细信息来快速启动并运行. 最近不得不将Spring Boot应用程序部署为Windows服务,感到惊讶的是使用winsw如此容易. 入门 Spring Boot文档的第59节是关于安装Spring Boot应用程序的,它指向GitHub页面.本示例使用该项目作为灵感. 项目 我将以Spring IO“服务Web内容”项目作为起点,因此请转到该网页并从GIT或ZIP文件中下载示例. 从命令行运行Sprin…
小插曲:通过cmd运行startup.bat,cmd界面显示乱码 解决方法:进入tomcat目录,conf文件夹,用编辑器打开logging.properties 将java.util.logging.ConsoleHandler.encoding = UTF-8 改为 GBK 然后就正常显示日志了 下面示例打包war部署发布 首先,为tomcat修改一个独立的端口,防止和其它端口冲突 进入tomcat目录,打开conf文件夹,打开server.xml 三个地方都改下,比较靠谱 原8080,这里…