详解如何更改SpringBoot TomCat运行方式

1. 为什么要更改SpringBoot运行方式?

Tomcat Connector(连接器)有三种运行模式:bio nio apr

bio(blocking I/O)

  • 即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包),是基于JAVA的HTTP/1.1连接器,Tomcat7以下版本在默认情况下是以bio模式运行的。一般而言,bio模式是三种运行模式中性能最低的一种。我们可以通过Tomcat Manager来查看服务器的当前状态。(Tomcat7 或以下,在 Linux 系统中默认使用这种方式)
  • 一个线程处理一个请求,缺点:并发量高时,线程数较多,浪费资源

nio(new I/O)

  • 是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O(非阻塞IO)的缩写。它拥有比传统I/O操作(bio)更好的并发运行性能。要让Tomcat以nio模式来运行只需要在Tomcat安装目录/conf/server.xml 中将对应的中protocol的属性值改为 org.apache.coyote.http11.Http11NioProtocol即可
 <Connector port="1024" protocol="org.apache.coyote.http11.Http11NioProtocol"
               connectionTimeout="20000"
               redirectPort="8443" />

apr(Apache Portable Runtime/Apache可移植运行时)

  • Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,从而大大地提高Tomcat对静态文件的处理性能。Tomcat apr也是在Tomcat上运行高并发应用的首选模式。从操作系统级别来解决异步的IO问题
  • tomcat8.0 以上默认已经支持了apr(低版本赶紧换了吧)

而SpringBoot默认是以 java -Xmx256m -Xss256k -jar xx.jar 来运行内置Tomcat启动方式默认是NIO,所以想用Apr方式启动怎么办呢?

2.移除SpringBoot内置Tomcat容器。

更改pom文件

	 <packaging>jar</packaging> 改为=> <packaging>war</packaging>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 移除嵌入式tomcat插件-->
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <!-- 移除内嵌Tomcat需要重新添加servlet -->
        <dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>javax.servlet-api</artifactId>
		    <version>${servlet.version}</version>
		    <scope>provided</scope>
		</dependency>

在 Application 启动类中继承SpringBootServletInitializer具体类代码如下

	package com.ctx.springboot;
	import org.springframework.boot.autoconfigure.SpringBootApplication;
	import org.springframework.boot.builder.SpringApplicationBuilder;
	import org.springframework.boot.web.support.SpringBootServletInitializer;
	@SpringBootApplication
	public class SpringBootStartApplication extends SpringBootServletInitializer {
		@Override
		protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
			return builder.sources(SpringBootStartApplication.class);
		}
	}

这样就可以使用把SpringBoot项目打包成war扔到8.0以上的tomcat里跑运行方式默认就变成apr了如下图:

到此这篇关于详解如何更改SpringBoot TomCat运行方式的文章就介绍到这了,更多相关更改SpringBoot TomCat运行方式内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot 项目如何在tomcat容器中运行的实现方法

    一. SpringBoot内嵌容器的部署方式 SpringBoot内部默认提供内嵌的tomcat容器,所以可以直接打成jar包,丢到服务器上的任何一个目录,然后在当前目录下执行java -jar demo.jar即可运行,但是这种方式的运行退出进程就结束了.如果想在后台可以运行,则需要执行 java -jar demo.jar > log_demo.file 2>&1 & 即可在后台运行该服务了,log_demo.file是日志文件.如需停止该进程 执行ps -ef|grep

  • SpringBoot部署在tomcat容器中运行的部署方法

    部署在tomcat容器中首先需要添加一些新的包和启动程序 1.在pom.xml文件中packaging便签下 jar 改为 war <packaging>war</packaging> 2.在pom.xml文件中添加新的依赖包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artif

  • eclipse springboot工程打war包方法及再Tomcat中运行的方法

    一, eclipse springboot打war包 1. 配置pom.xml文件 <packaging>war</packaging> <!-- 配置servlet,打war包时放开 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided

  • Springboot打成war包并在tomcat中运行的部署方法

    把spring-boot项目按照平常的web项目一样发布到tomcat容器下 一.修改打包形式 在pom.xml里设置 <packaging>war</packaging> 二.移除嵌入式tomcat插件 在pom.xml里找到spring-boot-starter-web依赖节点,在其中添加如下代码, <dependency> <groupId>org.springframework.boot</groupId> <artifactId&

  • SpringBoot打成war包在tomcat或wildfly下运行的方法

    springboot默认的打包方式为jar包,jar包的有优点是不需要更改的配置,并且内嵌了tomcat,如果打成jar包直接可以丢到docker中运行测试.但是考虑到前端代码只能打成war包,因此干脆也将后端代码打成war包和前端的代码一起放在tomcat容器中的webapps中运行就好了. SpringBoot打包形式 默认情况下,创建的SpringBoot项目是按照jar包形式来进行打包的.同时,内置了tomcat的容器. 那么,此时如果想让springboot打包成war包,并部署到wi

  • 详解如何更改SpringBoot TomCat运行方式

    1. 为什么要更改SpringBoot运行方式? Tomcat Connector(连接器)有三种运行模式:bio nio apr bio(blocking I/O) 即阻塞式I/O操作,表示Tomcat使用的是传统的Java I/O操作(即java.io包及其子包),是基于JAVA的HTTP/1.1连接器,Tomcat7以下版本在默认情况下是以bio模式运行的.一般而言,bio模式是三种运行模式中性能最低的一种.我们可以通过Tomcat Manager来查看服务器的当前状态.(Tomcat7

  • 详解如何用SpringBoot 2.3.0.M1创建Docker映像

    1.发布 SpringBoot2.3.0.M1刚刚发布,它带来了一些有趣的新特性,可以帮助您将SpringBoot应用程序打包到Docker映像中.在这篇博客文章中,我们将查看创建Docker映像的典型方式,并展示如何通过使用这些新特性来改进这些镜像 2.说明 SpringBoot 2.3.0.M1 暂时不支持Windows, 很鸡肋 暂时在Mac 和Linux 上运行良好 3.常见的Docker 运行方式 一般情况下,通过docker 运行springboot 是这样的 FROM openjd

  • 详解如何将springboot项目导出成war包

    以demo-3项目为例: 1.将pom.xml中的jar改成war     2.添加依赖 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> 3.移除插件 如果已经嵌入了tomcat插件,还要移除tomcat插件

  • 详解如何为SpringBoot项目中的自定义配置添加IDE支持

    导言 代码是写给人看的,不是写给机器看的,只是顺便计算机可以执行而已 --<计算机程序的构造和解释(SICP)> 导言 在我们的项目里经常会出现需要添加自定义配置的应用场景,例如某个开关变量,在测试环境打开,在生产环境不打开,通常我们都会使用下面的代码来实现,然后在Spring Boot配置文件中添加这个key和Value Application.java: application.properties 或者是没有使用@Value而直接在XML中使用我们配置的属性值 application.x

  • 详解Android更改APP语言模式的实现过程

    一.效果图 二.描述 更改Android项目中的语言,这个作用于只用于此APP,不会作用于整个系统 三.解决方案 (一)布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" a

  • 详解如何配置springboot跳转html页面

    本文主要介绍了如何配置springboot跳转html页面,分享给大家,具体如下: 1.首先在pom文件中引入模板引擎jar包,即: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 2.在application.properties中

  • 详解json在SpringBoot中的格式转换

    @RestController自动返回json /** * json 三种实现方法 * 1 @RestController自动返回json */ @GetMapping("/json") public Student getjson() { Student student = new Student("bennyrhys",158 ); return student; } @ResponseBody+@Controller 组合返回json //@RestContr

  • 详解IDEA中SpringBoot整合Servlet三大组件的过程

    Spring MVC整合 SpringBoot提供为整合MVC框架提供的功能特性 内置两个视图解析器:ContentNegotiatingViewResolver和BeanNameViewResolver 支持静态资源以及WebJars 自动注册了转换器和格式化器 支持Http消息转换器 自动注册了消息代码解析器 支持静态项目首页index.html 支持定制应用图标favicon.ico 自动初始化Web数据绑定器:ConfigurableWebBindingInitializer Sprin

  • 详解docker部署SpringBoot及替换jar包的方法

    关于docker的安装和使用,可以看看之前这两篇文章.docker kubernetes dashboard安装部署详细介绍和Docker如何使用link建立容器之间的连接.这篇文章主要介绍如何在docker上部署springboot项目.关于如何创建springboot项目可以看看这篇文章IDEA上面搭建一个SpringBoot的web-mvc项目遇到的问题 本文主要介绍docker部署springboot的三种方式,分别是:入门方式.jar包替换部署的方式和脚本部署方式,一步步来手把手教程.

  • 详解idea搭建springboot+mybatis框架的教程

    1.打开idea编译器,新建一个项目 2.选择Spring Initializr 勾选Default,完成之后点击[Next] 3.创建项目的文件目录结构以及选择jdk版本信息,设置完成后点击[Next] 4.选择项目所需要的依赖,在Web里面勾选Spring Web 在SQL里勾选需要的依赖,点击[Next] 5.修改项目名称,项目存放路径,点击[finish] 6.创建完成之后需要保持网络良好,因为需要加载刚才所选择的依赖(下载依赖可能需要很长时间,一定要在网络良好的情况下载,并且耐心等待)

随机推荐