tomcat配置使用apr模式(linux和tomcat配置)

tomcat配置使用apr模式(linux和tomcat配置)

前言

springboot 默认使用嵌入式 tomcat 做容器

tomcat支持三种运行模式

BIO 阻塞式(tomcat7以下默认)

NIO 非阻塞式(tomcat8及以上默认, springboot默认)

APR(Apache Portable Runtime)

APR模式调用操作系统能力处理IO, 也是异步的, 有最好的性能, 但是配置复杂.

环境准备

springboot: 2.3.2.RELEASE (依赖的tomcat版本: 9.0.37)

apr: 1.7.0

apr-util: 1.6.3

tomcat-native: 1.2.37

expat: 2.5.0

三种模式

BIO: Starting ProtocolHandler ["http-bio-8080"]

NIO: Starting ProtocolHandler ["http-nio-8080"]

APR: Starting ProtocolHandler ["http-apr-8080"]

springboot 配置apr模式

需要4步:

安装 apr

安装 apr-util (依赖 expat)

安装 tomcat-native

配置 springboot 应用

1. 安装 apr

下载: https://archive.apache.org/dist/apr/

apr-1.7.0.tar.gz

命令代码

cd apr-1.7.0/

./configure --prefix=/usr/local/apr

make

sudo make install

安装成功:

2. 安装 apr-util

安装 expat下载: https://jaist.dl.sourceforge.net/project/expat/expat/2.5.0/expat-2.5.0.tar.gz

命令代码

cd expat-2.5.0

./configure --prefix=/usr/local/expat

make

sudo make install

安装成功

如果希望别的应用也可以使用 expat, 可以考虑把它写入链接库路径

sudo vim /etc/ld.so.conf.d/expat.conf

输入 : /usr/local/expat/lib

配置生效

sudo ldconfig

# 头文件

# sudo ln -s /usr/local/expat/include /usr/include/expat

安装 apr-util下载: https://archive.apache.org/dist/apr/apr-util-1.6.3.tar.gz

命令代码

cd apr-util-1.6.3/

./configure --with-apr=/usr/local/apr --with-expat=/usr/local/expat --prefix=/usr/local/apr-utils

make

sudo make install

成功:

3. 安装 tomcat-native

下载: https://tomcat.apache.org/download-native.cgi

tomcat-native-1.2.37-src.tar.gz

https://dlcdn.apache.org/tomcat/tomcat-connectors/native/1.2.37/source/tomcat-native-1.2.37-src.tar.gz

doc:

https://tomcat.apache.org/native-doc/

https://tomcat.apache.org/native-1.2-doc/

命令代码

cd tomcat-native-1.2.37-src/native

./configure --with-apr=/usr/local/apr --with-java-home=/usr/lib/jvm/java-1.8.0-openjdk

make

sudo make install

其中/usr/lib/jvm/java-1.8.0-openjdk是 jdk安装路径

成功:

配置生效

sudo vim /etc/ld.so.conf.d/apr.conf

输入:/usr/local/apr/lib

sudo ldconfig

4. 在 Springboot 应用中配置 apr

创建 config 类

import org.apache.catalina.core.AprLifecycleListener;

import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;

import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

@Configuration

public class AprConfiguration {

@Bean

public ConfigurableServletWebServerFactory webServerFactory() {

TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();

// 开启 apr 模式

factory.setProtocol("org.apache.coyote.http11.Http11AprProtocol");

// 不启用 SSL (我的springboot跑在nginx反向代理之后,之间的调用是http的,不需要SSL)

AprLifecycleListener listener = new AprLifecycleListener();

String valueOff = "off";

listener.setFIPSMode(valueOff);

listener.setSSLEngine(valueOff);

listener.setUseOpenSSL(false);

factory.addContextLifecycleListeners(listener);

return factory;

}

}

启动应用需要添加 jvm 参数, 注意本地 IDE 里启动也需要添加

-Djava.library.path=/usr/local/apr/lib

运行 springboot jar 需要添加 jvm 参数

java -Djava.library.path=/usr/local/apr/lib -jar ./*****.jar

成功案例:

tomcat使用apr

1、安装时配置

tomcat的安装版本,安装的时候就选择支持Native

2、修改配置文件

找到配置文件D:\apache-tomcat-9.0.76\bin\service.xml

修改protocol,将protocol由HTTP/1.1修改为org.apache.coyote.http11.Http11AprProtocol即可

单独下载安装native.dll,下载地址:http://tomcat.apache.org/download-native.cgi

下载完成后,复制32位或64位 “tcnative-1.dll”这个文件到 $tomcat$/bin 下

结果展示:

附上安装包和运行jar包

apr-1.7.0.tar.gz

apr-util-1.6.3.tar.gz

expat-2.5.0.tar.gz

tomcat-native-1.2.37-src.tar.gz

demo-0.0.1-SNAPSHOT.jar

链接:https://pan.baidu.com/s/1lYF2KPpzB-hh_Bx8pJaItw 提取码:1234

风雨相关