標籤:
由於 Tomcat 基於 Java,實際上在各種 Linux 發行版裡的配置方法都大同小異,只是我看見在 Arch Linux 環境裡搭建 Tomcat 的文章比較少,所以在 Arch Linux 實踐一遍然後得出此文。此文假設你對 Tomcat 並不十分瞭解,主要筆墨將會在 Tomcat 的配置之上。
1、安裝 Java JDK
在 Arch Linux 的 extra 源裡有 jdk7-openjdk 和 openjdk6,可以直接使用 pacman 安裝,至於選用哪一個可以視具體情況而定。我安裝的是 OpenJDK 7:
$ sudo pacman -S jdk7-openjdk
2、安裝 Tomcat
同樣地,extra 源裡已有 tomcat 版本5、6、7,可以根據具體情況而定,我這裡安裝的是tomcat 6。
$ sudo pacman -S tomcat6
預設情況 tomcat 6 安裝路徑為 /usr/share/tomcat6,這裡羅列一下主要目錄的作用(箭頭表示目錄連結的實際位置):
- /usr/share/tomcat6: 程式主目錄,也是變數 $CATALINA_HOME 所指向的位置,在單 tomcat 執行個體的情況下,也是變數 $CATALINA_BASE 所指向的位置。
- conf -> /etc/tomcat6: 設定檔目錄。
- lib -> /usr/share/java/tomcat6: 共用jar包目錄,這些包既給 tomcat 所使用,也能給 web 應用程式所引用。
- logs -> /var/log/tomcat6: 日誌目錄,對於尋找錯誤以及查看訪問記錄很有協助。
- webapps -> /var/lib/tomcat6/webapps: 預設的 web 應用程式目錄,tomcat 6 內建了幾個樣本程式,下面會介紹。
現在可以嘗試啟動 tomcat 服務:
$ sudo /etc/rc.d/tomcat start
根據安裝的 Java 運行時的不同,啟動時可能有錯誤,檢查啟動指令碼的設定檔 /etc/conf.d/tomcat6 裡面的 TOMCAT_JAVA_HOME 變數的值,在我的安裝中 Java 運行時應該在 /opt/java 裡(用 $ which java 就可以看到了),因此將:
TOMCAT_JAVA_HOME=/usr/lib/jvm/java-7-openjdk 更改為如下即可: TOMCAT_JAVA_HOME=/opt/java
重啟 tomcat 服務:
$ sudo /etc/rc.d/tomcat6 restart
一般應該沒有問題,開啟任意瀏覽器並在地址欄裡輸入 “http://localhost:8080″,如果看到 tomcat 貓即說明服務已經安裝妥當並且能正常運行了。
3、認識 webapps 目錄
這個目錄位於 tomcat6 的安裝目錄之下,實際內容位於 /var/lib/tomcat6/webapps。 webapps 目錄裡每一個目錄對應一個web應用程式,比如 docs 目錄的訪問地址是 http://localhost:8080/docs,同理 manager 目錄的訪問地址是 http://localhost:8080/manager,其中比較特殊的是 ROOT 目錄,它對應的訪問地址恰好是網站的根目錄,即 http://localhost:8080/。
Tomcat 附帶的樣本程式可以逐個訪問體驗一下,其中 manager 和 host-manager 這兩個應用程式設定了需要登入驗證才能訪問,增加登入使用者的方法是編輯 Tomcat 安裝目錄下的設定檔 conf/tomcat-users.xml (實際上也是檔案 /etc/tomcat6/tomcat-users.xml),添加如下幾行:
<role rolename="manager-gui"/><role rolename="admin-script"/><role rolename="admin-gui"/><user username="tomcat" password="tomcat" roles="manager-gui,admin-script,admin-gui"/>
然後重啟 Tomcat 服務,即可以通過使用者名稱 tomcat 和密碼 tomcat 登入並訪問 manager 和 host-manager 兩個應用程式。
每個 Java Web 應用程式都有如下的目錄結構:
- /index.html 訪客直接存取的資源,比如靜態圖片和CSS樣式表。
- /WEB-INF/ 訪客不能直接存取的資源。
- /WEB-INF/classes 應用程式的 Java 源碼編譯後的class檔案。
- /WEB-INF/web.xml 應用程式的設定檔。
- /WEB-INF/lib 應用程式所引用的包。
當然也不是所有都是必須的,你甚至可以建立一個目錄,比如“hello”,然後在裡面只建立一個 index.html 檔案(內容隨便),即可以通過 http://localhost:8080/hello/index.html 訪問了。(當然這樣的不是Web應用程式,此方法僅用於測試用)
下面使用 Apache Maven 建立一個最簡單的 Web 應用程式,在使用者目錄裡執行如下命令建立 Web 應用程式的骨架:
$ mvn archetype:generate
在互動介面中,
Choose a number or apply filter: 輸入 174,即建立 maven-archetype-webapp 類型項目。 Choose version: 輸入5,即版本 1.0。 Define value for property ‘groupId’: 輸入 org.test。 Define value for property ‘artifactId’: 輸入 demo。 Define value for property ‘version’: 輸入 1.0。 Define value for property ‘package’: 輸入 org.test.demo Confirm properties configuration: 直接斷行符號
上面涉及 Maven 知識不在此文的討論範圍,如果不熟悉的話可以參閱免費的中文電子書《Maven in action》,順帶提一下,Maven 是Java項目構建和管理的最常用工具之一。
現在應該看到一個名為 demo 的目錄,進入後可以使用 Maven 打包項目:
$ cd demo $ mvn package
打包的結果是檔案 ./target/demo.war,把這個檔案複製到 webapps 目錄:
$ sudo cp target/demo.war /var/lib/tomcat6/webapps/
由於 Tomcat 預設建立的網站會自動部署應用程式,所以剛才複製到 webapps 目錄的檔案 demo.war 會被自動解壓縮,檢視 webapps 目錄應該會發現多出一個名字為 demo 的目錄,現在可以在瀏覽器裡嘗試訪問 http://localhost:8080/demo,應該看到 “Hello World!”字樣,這就是剛才用 Maven 建立的 Web 應用程式啟動並執行結果。
需要說明的是,java web 應用程式打包之後所形成的 war 檔案並不是一定要解壓出來才能啟動並執行,這點將會在下一節的配置裡會講到。
4、認識 Tomcat 的主設定檔 server.xml
這個檔案位於 tomcat 6 安裝目錄之下的 conf 目錄之內,實際內容位於 /etc/tomcat6/server.xml。
正如該檔案的副檔名所示,這是一個 xml 格式的檔案,開啟之後將會看到如下的結構:
<Server port="8005" shutdown="SHUTDOWN"> <Service name="Catalina"> <Executor ...... /> <Connector ...... /> <Connector ...... /> <Engine name="Catalina" ... > <Host name="localhost" ... > <Context ... /> </Host> </Engine> </Service></Server>
即一個由 Server->Service->Engine->Host->Context 組成的四層結構,從裡層向外層分別是:
- Context: 即 Web 應用程式,一個 Context 即對於一個 Web 應用程式。
- Host:即虛擬機器主機,比如 www.dog.com 對應一個虛擬機器主機,api.dog.com 對於另一個虛擬機器主機。一個 Host 用於定義一個虛擬機器主機。(所謂的”一個虛擬機器主機”可簡單理解為”一個網站”)
- Engine:一組虛擬機器主機的集合。比如www.dog.com 和 api.dog.com 可以組成一組虛擬機器主機集合。
- Service:一組 Engine 的集合,包括線程池 Executor 和連接器 Connector 的定義。
CONNECTOR 的配置
一個 Connector 即一個對外界開放的連接埠,簡單理解就是大部分網路服務程式都會遇到的 IpAddress:Port 的組合,比如 192.168.0.10:8080 就是一個連接埠,當然在 Connector 裡可以定義的內容要豐富得多,即 Connector 這個 XML 節點裡可以加上許多屬性。下面列舉一下常用的:
- enableLookups:(default=true) 是否允許反向解析訪客的IP地址,當你的應用程式使用 request.getRemoteHost() 時如果只需要IP地址,建議禁用此項,這樣能節省反向網域名稱解析的時間。
- maxPostSize:(default=2097152 即2MB) 最大允許 POST 上傳的資料大小(單位為:位元組),對於一般網站來說,比如有寫評論寫文章的網站,預設的2MB已經足夠,不過如果網站帶有圖片甚至檔案上傳功能,則需要根據具體情況來定。
- protocol:連接器的類型,tomcat 6 有如下幾種選擇
- org.apache.coyote.http11.Http11Protocol:簡寫為 “HTTP/1.1″,這是預設的連接器,一個訪客網路連接需要一個線程,並發效能比較低。
- org.apache.coyote.http11.Http11NioProtocol:NIO連接器,一個由非阻塞的socket工作模式構成的連接器,並發效能良好,純Java實現。
- org.apache.coyote.http11.Http11AprProtocol:APR連接器,所謂 APR 就是網路上最多伺服器使用的 Web 服務程式 Apache Http Server 所使用的庫,Tomcat 建議在生產環境使用,具體方法下面會介紹。
- redirectPort:當使用者訪問非https的資源而該資源又需要https方式訪問時,tomcat會自動重新導向到https連接埠,一般https使用 TCP 443連接埠,所以一般取值”443″。
- SSLEnabled:(default=false),設定當前連接器是否使用安全SSL傳輸,如果設定為”true”,則應該同時設定下面兩個屬性: scheme=”https” (default=http) 可以設定為 http 或者 https。 secure=”true” (default=false)。
- adress:連接器所綁定的IP地址,當一台伺服器存在多個ip地址時可以指定其中的需要綁定的一個,預設不設定該屬性的值表示綁定當前伺服器的所有ip地址。
- compressableMimeType:(default=”text/html,text/xml,text/plain”) 指定需要GZIP壓縮的資源的類型。
- compression:(default=off) 是否啟用GZIP壓縮,可以取值 on/off/force,設定為on之後會對 compressableMimeType 屬性指定的資源類型啟用GZIP壓縮。
- connectionTimeout:(default=”60000″) 當訪客網路連接後,伺服器等待第一行Request頭出現的時間。單位是毫秒。
- executor:指定當前連接器使用的線程池的名稱,如果指定,則忽略其他針對線程數量的設定,比如 maxThreads。
- maxThreads:(default=200) 最多可建立線程的數量。
- port=”80″:綁定連接埠。
- keepAliveTimeout:(default=connectionTimeout),訪客完成一次請求後維持網路連接的時間。
一個簡單的 Connector 定義如下:
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="60000" redirectPort="443" />
EXECUTOR 的配置
Executor 用於定義共用的線程池。預設情況下每個 Connector 都會產生自己的一個線程池,如果你想多個 Connector 共用一個線程池,則可以先定義一個線程池,如:
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="4"/>
然後修改上述的 Connector 配置,增加 executor 屬性,修改後的配置如下:
<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" connectionTimeout="60000" redirectPort="443" />
HOST 的配置
一個 Host 配置即為一個虛擬機器主機,例如下面是一個簡單的 Host 配置:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Alias>dog.com</Alias> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/></Host>
Host 配置節點各個屬性的作用:
- name:設定虛擬機器主機的網域名稱,比如 localhost 表示本機名稱,實際應用時應該填寫具體網域名稱,比如 www.dog.com 或者 dog.com,當然如果該虛擬機器主機是給內部人員訪問的,也可以直接填寫伺服器的 ip 地址,比如 192.168.1.10。
- autoDeploy:是否允許自動部署,預設值是 true,即表示 Tomcat 會自動檢測 appBase 目錄下面的檔案變化從而自動應用到正在啟動並執行 Web 應用程式。
- unpackWARs:設定是否自動延伸 war 壓縮包再運行 Web 應用程式,預設值是 true。
- appBase:設定 Web 應用程式組的路徑。前面說過一個虛擬機器主機可以由多個 Web 應用程式構成,所以這裡的 appBase 所指向的目錄應該是準備用於存放這一組 Web 應用程式的目錄,而不是具體某個 Web 應用程式的目錄本身(即使該虛擬機器主機只由一個 Web 應用程式組成)。appBase 屬性的值可以是相對於 Tomcat 安裝目錄的相對路徑,也可以是絕對路徑,需要注意的是該路徑必須是 Tomcat 有許可權訪問的,通過 Arch Linux 源安裝的 Tomcat 是通過 tomcat 使用者啟動並執行,因此建立一個新的 appBase 目錄之後可以使用 chown 命令更改目錄的所有者。
下面舉例說明如何建立一個新的虛擬機器主機 www.dog.com:
在目錄 /var/lib/tomcat6 下面可以看到安裝 Tomcat 時預設建立的 webapps 目錄,為了方便管理我們即將建立的虛擬機器主機的文檔也在 /var/lib/tomcat6 裡建立:
$ sudo mkdir dog
然後在 dog 目錄裡面建立目錄 ROOT,再在 ROOT 裡面建立檔案 index.html(內容隨便)。
現在將目錄的所有者和所有組都更改為 tomcat:
$ sudo chown -R tomcat:tomcat dog
然後在 server.xml 的 Host 節點下增加如下 Host 節點:
<Host name="www.dog.com" appBase="/var/lib/tomcat6/dog"></Host>
重啟 Tomcat 服務就可以在瀏覽器裡通過地址 http://www.dog.com 訪問這個新建立的虛擬機器主機了,當然你必須要先在 /etc/hosts 檔案裡增加 www.dog.com 到 127.0.0.1 的解析記錄,如下:
127.0.0.1 www.dog.com
有時一個虛擬機器主機可能會同時綁定多個網域名稱,比如 www.dog.com 和 dog.com,這時可以通過在 Host 配置節點裡增加 Alias 實現,比如:
<Alias>dog.com</Alias>
另外上面樣本當中的 <Valve className=… /> 配置了訪客的訪問日誌的儲存位置以及檔案名稱。
ENGINE 的配置
預設的 Engine 節點如下:
<Engine name="Catalina" defaultHost="localhost"></Engine>
這個應該不用展開敘述了,其中 defaultHost 用於指定訪客在沒有相應的虛擬機器主機時,Tomcat 預設選擇的虛擬機器主機的名稱。考慮如下的情形:
假如有3個網域名稱都 DNS 解析到你的伺服器,比如 dog.com, www.dog.com, api.dog.com,當前你只配置了虛擬機器主機 dog.com 和 www.dog.com,那麼當有個訪客通過 api.dog.com 訪問你的伺服器時,Tomcat 就會依據 defaultHost 的設定返回其中一個虛擬機器主機啟動並執行結果。實際應用中 defaultHost 應該設定為你的主力網域名稱,比如 www.dog.com。
5、多網站的配置:設定多個HOST節點
有時我們需要在一台伺服器上跑多個網站,通過 Tomcat 很容易實現這點,下面假設我們要搭建 www.dog.com 和 www.cat.com 這兩個網站。
首先要確定你的兩個網域名稱的 DNS 已經能正確解析到你的伺服器,因為這裡我們是做實驗,所以可以在本機添加網域名稱解析。修改 /etc/hosts 檔案,加入如下兩行:
127.0.0.1 www.cat.com127.0.0.1 www.dog.com
然後在 /var/lib/tomcat6 目錄裡分別建立名字為 cat 和 dog 的兩個目錄,然後在每個目錄裡都建立名字為 ROOT 的目錄,並在 ROOT 裡面建立名字為 index.html 檔案(內容隨便)。然後將目錄 cat 和 dog 的所有者和所有組都更改為 tomcat,方法參考上一節,這裡不再贅述。
現在編輯 Tomcat 的主設定檔 server.xml,在預設的 Host 節點下面再加入如下兩個新的 Host 節點:
<Host name="www.dog.com" appBase="/var/lib/tomcat6/dog" autoDeploy="true" unpackWARs="true"></Host><Host name="www.cat.com" appBase="/var/lib/tomcat6/cat" autoDeploy="true" unpackWARs="true"></Host>
在 Host 節點裡面可以根據上一節的說明加入自己需要的屬性或者 Alias 和 Value 子節點。重啟 Tomcat 服務,現在應該可以在瀏覽器裡分別通過 http://www.dog.com 和 http://www.cat.com 瀏覽這兩個網站了。
6、使用 NIO 連接器
預設的連接器並發效能不太好,如果網站的並發訪問量不大則無所謂,或者在公司內部網這點可能體會不出來(因為在內部網可能每個請求在1秒鐘之內就完成了),當環境換成 Internet 之後,可能每個客戶請求在網路會幾秒甚至幾十秒的延時才傳輸完成,這樣則會導致“許多訪客同時串連”的現象,當 Tomcat 的連接器所有線程都被佔用的情況下,後來者(訪客)就會被卡在門外。因此我們最好在實際環境中把預設的連接器改成 NIO 連接器(non blocking Java connector)。方法很簡單,只要把 Connector 節點的 protocol 屬性值更改為 “org.apache.coyote.http11.Http11NioProtocol” 即可,例如原先的是這樣:
<Connector port="80" protocol="HTTP/1.1" redirectPort="443" />
修改為:
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="443" />
然後重啟 Tomcat 伺服器即可。
7、為網站添加 SSL 憑證
有時網站可能涉及重要的業務資料,在互連網上傳輸這些頁面最好以 https 方式傳輸,這樣可以防止重要訊息被中間環節竊取。
詳細的方法可以參考我之前的一篇文章《添加 GoDaddy SSL 憑證到你的網站》,文章介紹如何申請簽名的 SSL 憑證以及如何修改 Tomcat 的配置。如果你現在只是想實驗一下為網站添加 https 功能,或者只是在公司的內部網站使用上 https,則可以使用一個簡單的方法實現:使用自簽名 SSL 憑證。所謂自簽名的 SSL 憑證就是自己產生的認證,這種認證沒有通過第三方認證商簽名認證,所以在瀏覽這種網站時瀏覽器會提示認證錯誤,不過訪客是完全可以繼續瀏覽網站內容。
下面假設我們要為上一節的 www.dog.com 添加SSL認證。首先使用 Java 內建的 keytool 工具產生一個 keystore 檔案(一種用於存放認證的檔案格式),在自家目錄執行如下命令:
$ keytool -keysize 2048 -genkey -alias tomcat -keyalg RSA -keystore tomcat.keystore
然後它會提示你設定一個密碼以及輸入DN資訊:
Enter keystore password: 設定一個用於保護你keystore檔案的密碼,例如123456Re-enter new password: 重複上面的密碼What is your first and last name? [Unknown]: www.dog.com (就是網域名稱啦)What is the name of your organizational unit? [Unknown]: Networking 組織單位名稱(隨便)What is the name of your organization? [Unknown]: dog.com 組織名稱(隨便)What is the name of your City or Locality? [Unknown]: Shenzhen 所在城市(隨便)What is the name of your State or Province? [Unknown]: Guangdong 所在省份(隨便)What is the two-letter country code for this unit? [Unknown]: CN 所在國家的兩位代號(隨便)Is CN=www.dog.com, OU=Networking, O=dog.com, L=Shenzhen, ST=Guangdong, C=CN correct? [no]: yes 以上資訊正確則輸入yesEnter key password for (RETURN if same as keystore password): 這一步直接敲斷行符號
完成後會在目前的目錄產生一個 tomcat.keystore 檔案。把這個檔案複製到 dog 網站應用程式程式的根目錄(即 /var/lib/tomcat6/dog):
$ sudo cp tomcat.keystore /var/lib/tomcat6/dog
然後修改 Tomcat 的主設定檔 server.xml,在預設的 Connector 節點之下添加如下的新 Connector 節點:
<Connector port="443" protocol="HTTP/1.1″ SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/var/lib/tomcat6/dog/tomcat.keystore" keystorePass="123456" />
假如你使用的是 NIO 連接器,則應該這樣把 protocol 屬性值換成 Http11NioProtocol,即:
<Connector port="443" protocol="Http11NioProtocol″ SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="/var/lib/tomcat6/dog/tomcat.keystore" keystorePass="123456" />
重啟 Tomcat 服務,用瀏覽器訪問 https://www.dog.com,這時瀏覽器可能會提示認證錯誤,忽略它(對於 Firefox 瀏覽器還需要點擊 “添加例外” 按鈕才能忽略)即可以看到已經是 https 方式在瀏覽網頁了。
8、使用 APR 高效能連接器
APR 即 Apache Portable Runtime,提供了 Apache Http 的高效能特性,下面普通連接器、NIO和APR的特性簡單比較(摘自這裡):
Java Blocking Connector Java Nio Blocking Connector APR Connector Classname Http11Protocol Http11NioProtocol Http11AprProtocol Tomcat Version 3.x 4.x 5.x 6.x 6.x 5.5.x 6.x Support Polling NO YES YES Polling Size N/A Unlimited - Restricted by mem Unlimited - Configurable Read HTTP Request Blocking Non Blocking Blocking Read HTTP Body Blocking Sim Blocking Blocking Write HTTP Response Blocking Sim Blocking Blocking SSL Support Java SSL Java SSL OpenSSL SSL Handshake Blocking Non blocking Blocking Max Connections maxThreads See polling size See polling size
Tomcat 文檔在 NIO 和 APR 之間比較推薦後者,由於我沒有實際環境(即大量從 internet 過來的訪問)詳細測試和比較,所以我也不太清楚兩者相差多少。下面介紹使用 APR 的方法:
先安裝 APR for Tomcat 的本地庫和 OpenSSL(假如需要使用 SSL 憑證並且系統還沒安裝的話),Arch Linux 的 local 源裡面已經存在這兩者,所以安裝方法很簡單:
$ sudo pacman -S tomcat-native$ sudo pacman -S openssl
然後修改 Tomcat 的主設定檔 server.xml,把 Connector 的 protocol 屬性值修改為“org.apache.coyote.http11.Http11AprProtocol”,修改後的配置大致如下:
<Connector port="80" protocol="org.apache.coyote.http11.Http11AprProtocol" redirectPort="443" />
(註:保留 protocol=”HTTP/1.1″ 屬性值也是可以的)
然後重啟 Tomcat 服務即可,如何知道是否用上 APR 連接器呢?只要翻查 Tomcat 的記錄檔就知道了,預設的記錄檔為:/var/log/tomcat6/catalina.err:
$ sudo tail /var/log/tomcat6/catalina.err
如果在重啟 Tomcat 服務後看到日誌末尾處有出現下面紅色字的內容,則表示已經成功用上 APR連接器了。
Feb 19, 2012 9:44:05 AM org.apache.coyote.http11.Http11AprProtocol start INFO: Starting Coyote HTTP/1.1 on http-80 Feb 19, 2012 9:44:05 AM org.apache.coyote.http11.Http11AprProtocol start INFO: Starting Coyote HTTP/1.1 on http-443 Feb 19, 2012 9:44:05 AM org.apache.catalina.startup.Catalina start INFO: Server startup in 1281 ms
如果你使用了 APR 連接器同時又需要添加 SSL 憑證(即需要 https 訪問功能),則需要使用 OpenSSL 的方法產生加密私密金鑰並且修改一下相應的 Connector 的配置,仍然以上面第7節的例子,即為 www.dog.com 網站添加 SSL 憑證來講解。
先用 OpenSSL 產生私密金鑰以及自簽名,在自家目錄下執行下面命令:
# Generate private key$ openssl genrsa -out ca.key 1024 # Generate CSR$ openssl req -new -key ca.key -out ca.csr # Generate Self Signed Key$ openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt
同上面第7節類似,中途也會要求你輸入 DN 資訊,完成後把 ca.crt 和 ca.key 檔案複製到 dog 網站應用程式的根目錄:
$ sudo cp ca.crt /var/lib/tomcat6/dog$ sudo cp ca.key /var/lib/tomcat6/dog
然後修改 Connector 節點為如下:
<Connector port="443" SSLEnabled="true" scheme="https" secure="true" SSLCertificateFile="/var/lib/tomcat6/dog/ca.crt" SSLCertificateKeyFile="/var/lib/tomcat6/dog/ca.key"/>
重啟 Tomcat 服務之後生效。
最後
此文簡單講述在 Arch Linux 環境下安裝 Tomcat 6、修改主設定檔、搭建多網站、添加 SSL 憑證以及使用高效能的 NIO 和 APR 連接器的方法和步驟。
from :http://www.cnblogs.com/gentoo/archive/2012/10/13/2722463.html
tomcat server.xml配置詳解