使用APR连接器 -整合Tomcat与Apache

使用APR连接器 -整合Tomcat与Apache

文章编辑: 国粹小生

文章发表于: 2010-10-26 16:09

查看上一篇    

 

   从Tomcat 5.5开始,Tomcat包含叫做APR连接器的另一个Web服务器实现方法。它是在Java和C编程语言中实现的。

 

   APR连接器的主要目标是提供高性能、高稳定性及易于与其他C/C++源码整合,同时仍然提供至少与Tomcat的JIO连接器同样多的功能(通过实现象开源C代码一样的底层网络编码,与JVM的嵌入式网络编码相反)。

 

   APR是ApachePortable Runtime的简称,下文称APR(Apache便携式运行时),这是一个独立的开源项目,其目标被陈述为“提供软件开发者可以编码的API,无论在哪个平台上编译这些软件,如果没有同等的行为,并一定要可预测。”

 

   简而言之,APR是一个本地库文件,实现了如Apache httpd或Tomcat的网络服务器可利用的许多底层功能。

 

   事实上,Apache httpd在APR-httpd的底层网络编码的顶端编译的是APR。要了解APR工程的更多信息,请参阅APR在http://apr.apache.org上的主页。

 

   使用APR连接器,而不使用JIO或NIO的连接器,原因有以下几点:

 

   1、HTTPS使用APR连接器可能会更快,因为APR连接器是叫做OpenSSL库文件的本地代码。而JIO和NIO连接器是纯粹的Java代码,并使用了纯粹的Java TLS/SSL编码,大家都知道,比OpenSSL要慢一些。但是,如果没有使用HTTPS,则不用关心这一点。

 

   2、对于某些代理场合(主要是AJP),APR可能会更高效。对这种配置,具有最大吞吐量是比较重要的。

 

   3、由于使用的sendfile(2)系统呼叫,所以APR被设计为处理大型静态文本文件(如提供媒体文件)时更高效。

 

   4、任何连接器实现的所有底层网络编码都是固有的(native) (如JVM是在C/C++中编写的),因此,无论您是否更喜欢APR,取决于您是喜欢来自ASF还是JVM提供商提供的本地网络编码(native network code)。

 

   5、APR一个被广泛接受的用于Web服务器的I/O实现,用C编程语言编写(供Apache httpd使用),而且工作正常。

 

   6、在MS-Windows上,NIO连接器并没有真正起作用,因为NIO似乎在Windows上无法正常发挥作用,至少在使用Sun的Java VM时是这样。在其他操作系统上,这不成为问题。

 

   7、APR使用了便携的、安全随机数产生器,从而Tomcat会话ID在Windows上默认是安全的。

 

   8、APR还有一些其他功能是非常有用的,而核心Java平台并没有提供这些功能。关键是APR是不同于Java的实现,而且包含一组不同的功能。这些新功能可能会放在任何新版的APR中,而且可以修改APR连接器以充分利用这些功能。

 

   Remy Maucherat(APR连接器的作者及坚定支持者之一)在这里提供了一点启示,发送邮件给Tomcat开发者,列出为什么它认为APR连接器很重要。除了明显令人感兴趣的功能(epoll/sendfile/openss1)之外,如笔者早期提到的那样,APR具有很多其他用途。

 

   根据核心能力,把它放在Tomcat中,使其成为httpd的一个Java版本,而且将以非常简单的方式打开所有功能及可能。

 

   假设某人做了衡量纯Java用户的工作,那么最好拥有,但这只是整体的一部分(而且需要APR)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值