Tomcat中如何配置使用APR

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架构解析》

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值