APR(Apache Portable Runtime),即Apache可移植运行库,正如官网所言,APR的使命是创建和维护一套软件库,以便在不同操作系统(Windows、Linux等)底层实现的基础上提供统一的API。通过APR的API,程序开发者可以在开发阶段不必考虑平台的差异性,也不必关心程序的最终构建环境。减少程序开发者编写特殊代码区分不同操作系统以避免系统缺陷或者利用系统特性的工作。

APR为应用程序开发提供统一的API,对于某些操作系统不支持的功能,APR则进行模拟实现,因此采用APR可以真正做到跨平台应用开发。

APR最早是Apache HTTP Server的一部分, Apache基金会考虑到其通用性,后来将其作为独立的项目进行维护。

APR提供的主要功能模块包括:内存分配及内存池、原子操作、文件I/O、锁、内存映射、哈希表、网络I/O、轮询、进程及线程操作等等,全部模块列表可详细参见:http://apr.apache.org/docs/apr/1.5/modules.html。

通过采用APR,Tomcat可以获得高度可扩展性以及优越的性能,并且可以更好的与本地服务器技术集成,从而可以使Tomcat作为一款通用的Web服务器使用,而不仅仅作为轻量级应用服务器。在这种情况下,Java将不再是一门侧重于后端的编程语言,也可以更多的用于成熟的Web服务器平台。

Tomcat启动时,会自动检测系统是否安装了APR,如果已安装,则自动采用APR进行I/O处理(除非已指定Connector的protocol属性为具体的协议类)。

在Tomcat中使用APR需要安装三个本地组件:

  • APR库
  • APR JNI封装包(Tomcat使用)
  • OpenSSL

Windows安装

在Windows下安装APR非常简单。首先,从http://tomcat.apache.org/download-native.cgi下载Windows二进制版本。Apache提供了两个发布包。一个是默认的tomcat-native-1.1.33-win32-bin.zip,一个是支持通过OCSP 协议认证客户端SSL证书的tomcat-native-1.1.33-ocsp-win32-bin.zip。官方推荐使用tomcat-native-1.1.33-win32-bin.zip。

tomcat-native-1.1.33-win32-bin.zip包中包含了32位系统、64位系统以及(x64) 以及 Intel Itanium 64位(i64)三个tcnative-1.dll文件。我们只需要将对应CPU类型的文件拷贝到$CATALINA_HOME/bin下即可完成APR安装(除此之外,发布包还包含一个绿色版的openssl.exe文件)。

启动Tomcat时,我们发现如下日志即表明安装成功:

六月 25, 2015 9:22:32 上午 org.apache.catalina.core.AprLifecycleListener init
信息: Loaded APR based Apache Tomcat Native library 1.1.33 using APR version 1.5.1.
六月 25, 2015 9:22:33 上午 org.apache.catalina.core.AprLifecycleListener init
信息: APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
六月 25, 2015 9:22:33 上午 org.apache.catalina.core.AprLifecycleListener initializeSSL
信息: OpenSSL successfully initialized (OpenSSL 1.0.1m 19 Mar 2015)
六月 25, 2015 9:22:34 上午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-apr-8080"]
六月 25, 2015 9:22:34 上午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["ajp-apr-8009"]
六月 25, 2015 9:22:34 上午 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 2790 ms
六月 25, 2015 9:22:34 上午 org.apache.catalina.core.StandardService startInternal
信息: Starting service Catalina
六月 25, 2015 9:22:34 上午 org.apache.catalina.core.StandardEngine startInternal

Linux(Ubuntu)安装

在Linux下安装APR稍微复杂一些。本书以Ubuntu为例,对于其它操作系统,可以参见http://tomcat.apache.org/native-doc/。

首先,我们需要执行如下命令下载并安装依赖库(APR和OpenSSL):

kunrey@ubuntu:~$ apt-get install libapr1-dev libssl-dev

当然,如果当前用户没有足够权限,可以尝试:

kunrey@ubuntu:~$ sudo apt-get install libapr1-dev libssl-dev

然后,下载Tomcat Native包(地址为http://apache.dataguru.cn/tomcat/tomcat-connectors/native/1.1.33/source/tomcat-native-1.1.33-src.tar.gz)并解压。

进入到解压目录的jni/native/目录下,执行如下命令编译并安装Tomcat Native:

kunrey@ubuntu:~$ ./configure –with-apr=$HOME/APR –with-java-home=$JAVA_HOME –with-ssl=$HOME/OPENSSL –prefix=$CATALINA_HOME
kunrey@ubuntu:~$ make && make install

其中:
$HOME/APR为APR安装路径,通过apt-get安装,其默认路径为/usr/bin/apr-1-config。
$JAVA_HOME为JDK安装路径。
$HOME/OPENSSL为OpenSSL的安装路径。
$CATALINA_HOME为Tomcat的安装路径。

安装完毕后,$CATALINA_HOME/lib下会新增libtcnative-1.so。此时,启动Tomcat,如发现如下日志,即表明安装成功:

30-Jun-2015 15:14:44.967 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library 1.1.33 using APR version 1.5.1.
30-Jun-2015 15:14:44.968 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
30-Jun-2015 15:14:44.997 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully ini-tialized (OpenSSL 1.0.1f 6 Jan 2014)
30-Jun-2015 15:14:45.191 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-apr-8080"]
30-Jun-2015 15:14:45.223 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-apr-8009"]

如果未能正常加载,可检查java.library.path目录是否已经包含libtcnative-1.so所在路径。如不包含,可通过添加java.library.path启动参数或者PATH系统环境变量的方式解决。


新书上市

《Tomcat架构解析》

Tomcat中如何配置使用APR相关推荐

  1. tomcat服务器配置文件虚拟路径,tomcat中如何配置虚拟路径

    第一步:打开server.xml配置文件.在Host节点里写上该行代码: 如下图: 它的作用是只要路径以/upload开头它就会自动的匹配到E盘的upload文件夹下 数据库的存放路径就是上面红色的方 ...

  2. Tomcat快速入门(Tomcat安装 把一个项目发布到tomcat中 Eclipse配置Tomcat idea配置tomcat)

    文章目录 服务器的概念 服务器 Web服务器软件:接收客户端发送的请求和响应客户端请求. 常见的Web服务器软件 Tomcat安装 win下启动乱码问题解决 Tomcat目录介绍 如何把一个项目发布到 ...

  3. 在Tomcat中配配置数据源汇总

    为什么80%的码农都做不了架构师?>>>    Tomcat本身不具备处理提供数据源的能力.借助于一些开源数据源实现,如:DBCP和C3P0等. 一.在http://commons. ...

  4. tomcat中编码配置

    在tomcat解压目录下打开 conf/server.xml 文件,在63行找到 <Connector port="8080" protocol="HTTP/1.1 ...

  5. Jenkins在tomcat中启动配置nginx

    针对war在webapps下 [root@srv-webapps]# ls docs  examples  host-manager  jenkins  jenkins.war  manager  R ...

  6. tomcat中conf/server.xml配置线程池不生效的问题注意添加线程池节点executor后要在connector中增加executor属性

    优化连接数,主要是在conf/server.xml配置文件中进行修改. 优化线程数 找到Connector port="8080" protocol="HTTP/1.1& ...

  7. java web 默认页面配置文件_Tomcat中配置全局的错误页面(如404)+删除Tomcat中webapps目录下的自带项目,防止Tomcat默认文件泄露...

    进入tomcat目录中conf文件编辑web.xml,将下面代码复制到文件末尾,如下 400 /error.html 404 /404/404.html 500 /404/500.html 2.添加4 ...

  8. Tomcat中配置多个端口

    在tomcat的conf/server.xml中,配置多个端口,如下: <?xml version="1.0"?> <!--应用1,端口port="80 ...

  9. Tomcat中配置MySQL数据库连接池

    Web开发中与数据库的连接是必不可少的,而数据库连接池技术很好的优化了动态页与数据库的连接,相比单个连接数据库连接池节省了很大的资源.用一个通俗的比喻:如果一个人洗澡需花一桶水,那一百个人就要花一百桶 ...

最新文章

  1. 数据库Mysql的学习(八)-储存过程和事务和导入导出
  2. cdoj 题目简单分类
  3. 博客园出现了奇怪的cookie问题
  4. spring-session-data-redis解决session共享的问题
  5. Algs4-2.3.25切换到插入排序的试验
  6. jquery动画切换引擎插件 Velocity.js 学习01
  7. 学计算机的选intel还是amd,CPU选择intel还是AMD好?新手组装电脑选购硬件常见问题解答汇总...
  8. HS6 USB数据采集卡、USB高速数据采集卡,高级触发功能图解
  9. 带你玩转Jetson Xavier NX系列教程 | Xavier NX刷机教程
  10. html语言vb怎么定义数组,vb数组的定义方法是什么
  11. matlab怎么画loess拟合,matlab smooth loess
  12. 9.群智能算法及其应用: 粒子群优化算法及应用, 蚁群算法及其应用
  13. 计算机安装msvcr110.dll,帮您还原win7系统运行程序提示计算机中丢失msvcr110.dll的解决方法...
  14. 冯诺依曼计算机体系结构
  15. MarkMind使用技巧
  16. mcx314AL使用点滴
  17. MIPI CSI 进一步理解
  18. 防(反)浏览器指纹技术之指纹浏览器揭秘
  19. Oracle IMP-00003: 遇到 ORACLE 错误 20001,导数据出现问题
  20. 清华计算机专业2020保研名单,清华大学2020届保研情况

热门文章

  1. android录音波浪动画_Android语音输入的波浪效果 – WaveView
  2. 【操作系统】操作系统极速入门
  3. 【RK3288 Android 7.1 / KEN】双屏异显流程
  4. 嵌入式裸机NandFlash和 SD/iNand学习笔记
  5. 在VS2012中添加.NET Framework 4.5.2
  6. [竞赛图判定定理]兰道定理(Landau's Theorem)介绍及其一种证明
  7. html table 表格脚,HTML表格table
  8. P4408 [NOI2003] 树的直径
  9. ESP8266一直重启问题及解决(ets Jan 8 2013,rst cause:2, boot mode:(3,6))
  10. python辗转相除法算法_辗转相除法的算法