tomcat配置使用apr模式(linux和tomcat配置)
前言
springboot 默认使用嵌入式 tomcat 做容器
tomcat支持三种运行模式
- BIO 阻塞式(tomcat7以下默认)
- NIO 非阻塞式(tomcat8及以上默认, springboot默认)
- APR(Apache Portable Runtime)
APR模式调用操作系统能力处理IO, 也是异步的, 有最好的性能, 但是配置复杂.
环境准备
1 2 3 4 5 | 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 |
三种模式
1 2 3 | 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
命令代码
1 2 3 4 5 | cd apr- 1.7 . 0 / ./configure --prefix=/usr/local/apr make sudo make install |
安装成功:
2. 安装 apr-util
命令代码
1 2 3 4 | cd expat- 2.5 . 0 ./configure --prefix=/usr/local/expat make sudo make install |
安装成功
如果希望别的应用也可以使用 expat, 可以考虑把它写入链接库路径
1 2 | sudo vim /etc/ld.so.conf.d/expat.conf 输入 : /usr/local/expat/lib |
配置生效
1 2 3 4 | sudo ldconfig # 头文件 # sudo ln -s /usr/local/expat/include /usr/include/expat |
命令代码
1 2 3 4 5 | 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
1 2 3 4 5 | 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安装路径
成功:
配置生效
1 2 3 | sudo vim /etc/ld.so.conf.d/apr.conf 输入:/usr/local/apr/lib sudo ldconfig |
4. 在 Springboot 应用中配置 apr
创建 config 类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 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 里启动也需要添加
1 | -Djava.library.path=/usr/local/apr/lib |
运行 springboot jar 需要添加 jvm 参数
1 | 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包
链接:https://pan.baidu.com/s/1lYF2KPpzB-hh_Bx8pJaItw
提取码:1234
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?