SpringBoot内嵌Tomcat开启APR模式(运行环境为Centos7)

Stella981
• 阅读 665

网上查到的一些springboot内嵌的tomcat开启apr的文章,好像使用的springboot版本较老,在SpringBoot 2.0.4.RELEASE中已经行不通了。自己整理了一下,供参考。

运行环境:Centos 7,JDK 1.8

1.pom.xml代码如下:

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>syb</groupId>
    <artifactId>tomcat.apr.sample</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>tomcat.apr.sample</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.4.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

 2. 查看内嵌的tomcat版本,如从eclipse中查看,如下图:

SpringBoot内嵌Tomcat开启APR模式(运行环境为Centos7)

3. 去tomcat官网,下载该版本的tomcat,如下图:

SpringBoot内嵌Tomcat开启APR模式(运行环境为Centos7)

4. 将tomcat的压缩包上传到linux系统,解压,然后进入${tomcat-home}/bin目录,如下图:

SpringBoot内嵌Tomcat开启APR模式(运行环境为Centos7)

5. 将上图中红框内文件“tomcat-native.tar.gz”解压开,然后进入“${tomcat-home}/bin/tomcat-native-1.2.18-src/native”目录。

6. 按顺序执行如下命令,注意,其中java-home根据实际情况进行修改,其中prefix为tomcat apr库的安装位置,可根据自己的需要进行修改。

yum -y install gcc

yum -y install apr-devel openssl-devel

./configure --with-apr=/usr/bin/apr-1-config \
            --with-java-home=/usr/java/jdk1.8.0_162/ \
            --with-ssl=yes \
            --prefix=/usr/local/tomcat-apr

make && make install

 执行完成后,结果如下图,表示tomcat apr库安装成功,库的位置为/usr/local/tomcat-apr/lib:

SpringBoot内嵌Tomcat开启APR模式(运行环境为Centos7)

7. 配置环境变量,打开/etc/profile文件,在结尾处,添加如下内容:

export LD_LIBRARY_PATH=/usr/local/tomcat-apr/lib

8. 使环境变量生效,执行如下命令:

source /etc/profile

 9. 程序代码如下,SpringBoot 2.0.4内嵌的tomcat,默认使用的是nio模式,若要开启apr模式,需要做一些定制操作。

package syb.tomcat.apr.sample;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class App {
    /**
     * 开启apr模式
     * @return
     */
    @Bean
    public ConfigurableServletWebServerFactory webServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.setProtocol("org.apache.coyote.http11.Http11AprProtocol");
        return factory;
    }

    public static void main(String[] args) {
        SpringApplication.run(App.class, args);
    }
}

 10. 将程序打包,放到linux机器,然后执行如下命令运行:

java -jar tomcat.apr.sample-0.0.1-SNAPSHOT.jar

 结果如下图,可以从中看到,已经开启了apr模式:

SpringBoot内嵌Tomcat开启APR模式(运行环境为Centos7)

点赞
收藏
评论区
推荐文章
Easter79 Easter79
3年前
springboot部署到tomcat
把springboot项目按照平常的web项目一样发布到tomcat容器下多点经验:1.保证运行环境的jdk和开发环境一致,不然class文件无法被编译2.保证tomcat和java的版本匹配,不然tomcat无法启动3.集群一般会进行ip和域名的映射,如果tomcat服务器不在集群内,需要在所在服务器进行
Stella981 Stella981
3年前
SpringBoot 2.0 系列007
SpringBoot2.0系列007WEB容器详解我们知道java常用的两大容器tomcat和jetty,其中SB默认内嵌了tomcat容器。那么SB都支持什么属性呢?参阅ServerProperties.java基本是通用的服务器配置,以及error、Com
Easter79 Easter79
3年前
Springboot修改内嵌Tomcat版本
最近Tomcat爆出高危漏洞,基本影响所有的Tomcat版本,故需要对springboot项目进行版本升级ps:一般不建议修改springboot内嵌版本,内嵌版本都是经过验证比较稳定的版本1、查询springboot内嵌的版本使用idea等工具可以直接通过pom文件查看下面parent里面的To
Easter79 Easter79
3年前
SpringBoot内嵌Tomcat开启APR模式(运行环境为Centos7)
网上查到的一些springboot内嵌的tomcat开启apr的文章,好像使用的springboot版本较老,在SpringBoot2.0.4.RELEASE中已经行不通了。自己整理了一下,供参考。运行环境:Centos7,JDK1.81.pom.xml代码如下:<projectxmlns"http://maven.apache
Wesley13 Wesley13
3年前
3 SpringBoot与微服务
SpringBoot的使用?化繁为简:SpringMVC需要定义各种配置,配置文件多。SpringBoot的核心功能?  独立运行:javajarXXX.jar(以前启动SPringMVC需要有服务器,比如tomcat)  内嵌web服务器:内嵌Tomcat.  简化配置:用starter
Stella981 Stella981
3年前
SpringBoot使用JSP(官网Demo)
最开始接触java的时候,前端页面基本都是用jsp来写,最近公司项目要使用SpringBoot重构,查看SpringBoot文档,发现SpringBoot不建议使用JSP,因为jsp在使用内嵌servlet容器时会有一些限制!(https://img2018.cnblogs.com/blog/562030/201901/56203020190120
Easter79 Easter79
3年前
Tomcat性能优化总结
层级优化!(JAVA\_OPTS参数和主要元素的优化)Tomcat大致元素架构:serverserviceEngineHostContextTomcat有可以使用三种协议:HTTP,AJP,HTTPStomcat默认采用的BIO模型tomcat的运行模式有3种:bio,nio,apr(额外安装),例如:proto
Stella981 Stella981
3年前
Linux下部署springboot项目的步骤及过程
最近在研究将springboot项目部署到Linux服务器上,由于springboot是内嵌了tomcat,所以可以直接将项目打包上传至服务器上。我是在idea上的项目,所以我就基于此说下过程。(一)打包你的项目1、在pom文件中添加springboot的maven插件 !(https://img2018.cnblogs.com/blog/1
Easter79 Easter79
3年前
Tomcat 的 3中运行方式
Tomcat是一个小型的轻量级应用服务器,也是JavaEE开发人员最常用的服务器之一。不过,许多开发人员不知道的是,TomcatConnector(Tomcat连接器)有bio、nio、apr三种运行模式,那么这三种运行模式有什么区别呢,我们又如何修改TomcatConnector的运行模式来提高Tomcat的运行性能呢?下面
Easter79 Easter79
3年前
SpringBoot使用JSP(官网Demo)
最开始接触java的时候,前端页面基本都是用jsp来写,最近公司项目要使用SpringBoot重构,查看SpringBoot文档,发现SpringBoot不建议使用JSP,因为jsp在使用内嵌servlet容器时会有一些限制!(https://img2018.cnblogs.com/blog/562030/201901/56203020190120