基于 APR 的原生库

简介

Tomcat 可以使用 Apache Portable Runtime(APR) 来增强可扩展性与性能,并能更好地与原生服务器技术相集成。APR 是一种具有高度可移植性的类库,是 Apache HTTP Server 2.x 的核心。APR 具有许多用途,包括访问高级 IO 功能(比如 sendfile、epoll 和 OpenSSL)、系统级功能(随机数生成、系统状态,等等)以及原生进程处理(共享内存、NT 管道、UNIX 套接字)。

这些特性能让 Tomcat 成为一种通用的 Web 服务器,更使其更好地与原生的 Web 技术相集成。从整体上来说,这使得 Java 越来越有望成为一个成熟的 Web 服务器平台,而不单纯是一种仅仅着重研究后端的技术。

安装

APR 支持需要安装三个关键的原生组件:

APR 库

Tomcat 所用的 》JNI 包装器

OpenSSL 库

Windows

Windows 安装文件从这里下载 32 位或 AMD 64 位,里面是包含 OpenSSL 和 APR 的集合文件。

Linux

多数 Linux 分发版都会自带 APR 与 OpenSSL 包。JNI 包装器(litcnative)然后被编译。它依赖 APR、OpenSSL 与 Java 头。

需要:

APR 1.2+ 开发头(libarp-1 dev package)

OpenSSL 》》》

Java compatible JDK 1.4+》》

GNU 开发环境(gcc,make)

APR 组件

当所有的库都正确安装好且适用于 Java(如果加载失败,就会显示相关的库路径),Tomcat 连接器就会自动使用 APR。这里,连接器的配置跟通常的配置没什么不同,但会用一些特别的属性来配置 APR 组件。对于大多数用例来说,这些属性的默认值都已经非常适用了,根本不需要再加以微调。

当启用 APR 时,Tomcat 同样也启用了下面这些功能:

默认在所有平台安全会话 ID 生成(Linux 之外的平台需要随机数生成使用配置好的熵)。

关于Tomcat 进程的内存使用和 CPU 使用情况的 OS 级统计,由status servlet所显示。

配置 APR 生命周期侦听器(APR Lifecycle Listener)

AprLifecycleListener

属性

描述

SSLEngine

所要使用的 SSLEngine 名称。off:不使用 SSL。on:使用 SSL,但没有特定引擎。默认值为 on。这将初始化原生的 SSL 引擎,然后使用 SSLEnabled 属性在连接器中》》》。范例:

请访问 OpenSSL 官方网站以详细了解 SSL 硬件引擎与制造商的相关信息。

配置 APR 连接器

HTTP/HTTPS

关于 HTTP 配置的相关信息,可查阅 HTTP 连接器配置文档。

关于 HTTPS 配置的相关信息,可查阅 HTTPS 连接器配置文档。

下面这个范例介绍了 SSL 连接器的声明:

maxThreads="150"

enableLookups="false" disableUploadTimeout="true"

acceptCount="100" scheme="https" secure="true"

SSLEnabled="true"

SSLCertificateFile="${catalina.base}/conf/localhost.crt"

SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" />

AJP

关于 AJP 配置的相关信息,可查阅 AJP 连接器配置文档。

apr java_基于 APR 的原生库相关推荐

  1. 安装了不兼容的APR(基于Apache Tomcat原生库)版本的问题解决

    今天运行项目的时候,tomcat抛出异常: "严重: 安装了不兼容的APR(基于Apache Tomcat原生库)版本[1.1.32],而Tomcat要求版本XXX" 解决: 那么 ...

  2. 安装了不兼容的APR(基于Apache Tomcat原生库)版本[1.1.29]

    今天将Windows7上的tomcat从6更新成7,更新完成后,将eclipse配置的tomcat6改成tomcat7,结果启动的时候报错了,报错内容如下: 六月 22, 2016 2:51:12 下 ...

  3. 在java.library.path中找不到允许在生产环境中实现最佳性能的基于APR的Apache Tom.....

    在java.library.path中找不到允许在生产环境中实现最佳性能的基于APR的Apache Tom- 2021-6-2 19:55:17 org.apache.catalina.core.Ap ...

  4. Tomcat 基于APR的本地库加载失败

    警告: 基于APR的本地库加载失败.错误报告为[C:\apache-tomcat-7.0.108\bin\tcnative-1.dll: Can't load AMD 64-bit .dll on a ...

  5. java 清空控制台_利用原生库和JNI(Java原生接口)实现H2数据库漏洞利用

    在H2数据库引擎中获取代码执行权限的技术早已是众所周知,但有个要求就是H2能够动态编译Java代码.而本文将向大家展示以前没有公开过的利用H2的方法,并且无需使用Java编译器,即通过原生库和JNI( ...

  6. NDK开发之CMake编译构建原生库

    参考地址:https://blog.csdn.net/liu3364575/article/details/80091506                 https://blog.csdn.net ...

  7. CV之FD:基于dlib、cv2库利用warpPerspective函数和_68_face_landmarks文件实现AI换脸渐变融合视频效果

    CV之FD:基于dlib.cv2库利用warpPerspective函数和_68_face_landmarks文件实现AI换脸渐变融合视频效果 目录 输出结果 设计思路 输出结果 设计思路 实现代码 ...

  8. NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码

    NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码 目录 全部代码 相关文章 NLP之情感分析:基于python编程(jieba库)实现中文文本情 ...

  9. Python之PIL之绘图:基于Python的PIL库绘制各种图形、添加文字等

    Python之PIL之绘图:基于Python的PIL库绘制各种图形.添加文字等 目录 一.绘制各种形状各种案例 1.绘制矩形 2.绘制圆形.弧线形

最新文章

  1. 西安电子科技大学计算机录取分数,2021年西安电子科技大学投档线及各省最低录取分数线统计表...
  2. 消息队列之ActiveMQ安装配置
  3. OpenCV Stitching 工程搭建
  4. 【Sql查询数据】for 日、月、年
  5. 用CMD批量ping ip地址
  6. 创业基础(第三章:创业机会及其识别与评价) 来自高校:全国大学生创新创业实践联盟 分类:创新创业 学习规则:按序学习
  7. 学生成绩分析系统后端函数解释(Python)
  8. 徐思/杨玲《面向对象程序设计(Java)》第十一周学习总结
  9. 彩球滑梯java_玩过这些手机游戏的人都老了 那些曾经风靡一时的手机游戏大盘点(二)...
  10. (转)格拉布斯准则(Grubbs Criterion)处理数据异常
  11. 如何确定论文研究方向,看了很多论文还是没有头绪?
  12. Python小知识:推导式用法大全,Comprehension
  13. 【翻译】智能制造中EDA 应用及益处系列之四:精密故障检测与分类(FDC)
  14. 元宇宙类电影这里全了!
  15. 暗影骑士vn7安装linux,宏碁暗影骑士一代(VN7-591G)拆机清灰教程
  16. python和表格有什么关系_Python实现和Excel基础功能对应关系
  17. 安卓web开发!你还在把Java当成Android官方开发语言吗?建议收藏
  18. 计算机 优质课教案,计算机优质课教案.doc
  19. 构建数据思维从认知事物的基本方法开始!
  20. 朴素贝叶斯法 - 垃圾邮件分类

热门文章

  1. python json unicode_python2下解决json的unicode编码问题
  2. 20220208--CTF MISC-- BUUCTF--工具stegsolve的使用
  3. c语言网络编程阻塞,c语言网络编程-设置非阻塞方式
  4. kettle java 变量传递_kettle的jdk1.7环境变量配置
  5. 2018牛客网暑期ACM多校训练营(第十场)J Rikka with Nickname(二分,字符串)
  6. Luogu2114 [NOI2014]起床困难综合症 【位运算】
  7. JavaSE基础知识(5)—面向对象(Object类)
  8. Android 反编译apk文件(转)
  9. 多表查询返回多个DataTable,合并到一个Table中.
  10. Qt连接数据库的方法