The APR based Apache Tomcat Native library which allows optimal performance in production 問題的解決

信息:
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:XXXXhtml

出現緣由分析:java

Tomcat建議使用apache的apr,來更好的運行Tomcat;web

--------------------apache的apr 的介紹 ---------------------------apache

APR(Apache portable Run-time libraries,Apache可移植運行庫)的目的如其名稱同樣,主要爲上層的應用程序提供一個能夠跨越多操做系統平臺使用的底層支持接口庫。在早期 的Apache版本中,應用程序自己必須可以處理各類具體操做系統平臺的細節,並針對不一樣的平臺調用不一樣的處理函數。tomcat

隨着Apache的進一步開發,Apache組織決定將這些通用的函數獨立出來並發展成爲一個新的項目。這樣,APR的開發就從Apache中獨立出來,Apache僅僅是使用 APR而已。安全

APR使得平臺細節的處理進行下移。對於應用程序而言,它們根本就不須要考慮具體的平臺,無論是Unix、Linux仍是Window,應用程序執行的接口基本都是統一一致的。所以對於APR而言,可移植性和統一的上層接口是其考慮的一個重點。而APR最先的目的並非如此,它最先只是但願將Apache中用到的全部代碼合併爲一個通用的代碼庫,然而這不是一個正確的策略,所以後來APR改變了其目標。有的時候使用公共代碼並非一件好事,好比如何將一個請求映射到線程或者進程是平臺相關的,所以僅僅一個公共的代碼庫並不能完成這種區分。APR的目標則是但願安全合併全部的可以合併的代碼而不須要犧牲性能。微信

APR的最先的一個目標就是爲全部的平臺(不是部分)提供一個公共的統一操做函數接口,這是一個很是了不得的目的,固然也是不現實的一個目標。咱們不可能支持全部平臺的全部特徵,所以APR目前只能爲大多數平臺提供全部的APR特性支持,包括Win3二、OS/二、BeOS、Darwin、Linux等等。爲了可以實現這個目標,APR開發者必須爲那些不能運行於全部平臺的特性建立了一系列的特徵宏(FEATURE MACROS)以在各個平臺之間區分這些特徵。這些特徵宏定義很是簡單,一般用APR_HAS_FEATURE參數設置:併發

若是某個平臺具備這個特性,則該宏必須設置爲true,好比Linux和window都具備內存映射文件,同時APR提供了內存映射文件的操做接口,所以在這兩個平臺上,APR_HAS_MMAP宏必須設置,同時ap_mmap_*函數應該將磁盤文件映射爲內存並返回適當的狀態碼。若是你的操做系統並不支持內存映射,那麼APR_HAS_MMAP必須設置爲0,並且全部的ap_mmap_*函數也能夠不須要定義。第二步就是對於那些在程序中使用了不支持的函數必須提出警告。svg

解決方法:
http://archive.apache.org/dist/tomcat/tomcat-connectors/native/函數

下載與你Tomcat對應版本的 tcnative-1.dll,放到apache-tomcat-N(版本號)\bin 目錄下面,重啓tomcat ;

若是你不清楚版本,你隨便下載一個版本,放進目錄裏面,在重啓tomcat 的時候,會有提示你合適的 tcnative-1.dll 版本;
1、
這裏寫圖片描述

2、

這裏寫圖片描述

3、
這裏寫圖片描述

4、
在這裏插入圖片描述
原文地址:http://www.cnblogs.com/java-class/p/4280037.html
我的微信公衆號:
這裏寫圖片描述

做者:jiankunking 出處:http://blog.csdn.net/jiankunking