一、常見JavaWeb服務器
十載的木蘭網(wǎng)站建設經(jīng)驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設備顯示端的尺寸不同,自動調(diào)整木蘭建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“木蘭網(wǎng)站設計”,“木蘭網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。1、WebLogic:是BEA公司的產(chǎn)品、WebSphereAS:是IBM公司的產(chǎn)品、JBossAS:紅帽公司的產(chǎn)品,可以自行了解
2、Tomcat服務器:Sun公司在推出的小型Servlet/JSP調(diào)試工具的基礎(chǔ)上發(fā)展起來的一個優(yōu)秀的Servlet容器,Tomcat本身完全用java語言編寫,所以tomcat的運行需要java的支持,所以要先安裝JDK,才能運行。
目前是Apache開源軟件組織的一個軟件項目,它的官網(wǎng) :成都服務器托管
http://tomcat.apache.org
Tomcat得到了廣大開源代碼志愿者的大力支持,且可以和目前大部分的主流Web服務器(IIS、Apache服務器)一起工作,它運行穩(wěn)定、可靠且高效。已成為目前開發(fā)企業(yè)JavaWeb應用的最佳Servlet容器選擇之一。
二、Tomcat的目錄結(jié)構(gòu)及常用配置
1、Tomcat的目錄層次結(jié)構(gòu)
2、JavaWeb應用的組成結(jié)構(gòu)
3、JavaWeb應用的發(fā)布
開放式目錄方式:成都服務器托管
打包war方式: 使用 Jar -cvf *.war .
4、Tomcat的組成結(jié)構(gòu)
Tomcat本身由一系列可配置的組件構(gòu)成,其中核心組件是Servlet容器組件,它是所有其他Tomcat組件的頂層容器。
每個組件都可以在Tomcat安裝目錄/conf/server.xml文件中進行配置,每個Tomcat組件在server.xml文件中對應一種配置元素。下面用XML的形式展示各種Tomcat組件之間的關(guān)系
5、Tomcat體系結(jié)構(gòu)
6、虛擬目錄的映射方式
從Tomcat6開始,Tomcat支持自動映射,即tomcat服務器會自動管理webapps目錄下的所有web應用,并把它映射成虛擬目錄,換句話說,只需把web應用放在webapps目錄下,不需要配置Context,外界可以直接訪問。
但是如果你不想講項目放在webapps下,而是放在其他地方,還是需要配置Context,比如我的tomcat在C盤,我的項目在D盤,則需要在Host下增加如下虛擬目錄映射語句。
7、Context元素配置
tomcat在加載一個web應用時,會一次按照以下五種方式查找web應用中的元素,優(yōu)先級一次降低,直到找到為止
8、將項目部署為Tomcat默認應用
即訪問 http://localhost:8080 時出來的是tomcat自帶的歡迎頁面,改為登錄到自己的項目主頁。
方法一:成都服務器托管
在Tomcat默認安裝后,tomcat的主目錄是webapps/root目錄,所以如果想改變tomcat的主目錄的話可以如下所做:成都服務器托管
在/conf/server.xml文件的之間加入代碼
方法二:成都服務器托管
將tomcat安裝目錄下的ROOT下的所有文件刪除,換成自己項目的文件,此法有點暴力。
方法三:成都服務器托管
Tomcat5.0以下版本在C:/Tomcat/conf/Catalina/localhost目錄下會自動生成了一個ROOT.Xml,但是5.0以上版本不再生成此文件。
所以可以新建個ROOT.xml,在里面加入如下代碼:成都服務器托管
9、Context元素的屬性
path:指定訪問該Web應用的URL入口
docBase:指定Web應用的文件路徑,可以寫絕對路徑,也可以寫相對于appBase屬性的相對路徑
className:指定實現(xiàn)Context組件的Java類的名字,這個類必須實現(xiàn)org.apache.catalina.Contex接口,該屬性默認值為org.apache.catalina.core.StandardContext(不建議大家改動)
reloadable:如果為true,Tomcat服務器在運行狀態(tài)下回監(jiān)視在WEB-INF/classes和WEB-INF/lib目錄下的class文件的改動,以及監(jiān)視Web應用的WEB-INF/web.xml文件的改動,如果檢測到有更新,服務器會自動更新加載web應用。
其默認值為false。在開發(fā)和調(diào)試階段,將其改為true,一般像Eclipse等開發(fā)環(huán)境都會默認改為true。在正式發(fā)布階段,應將其該為false,可以降低Tomcat的運行負荷,提高Tomcat的運行性能
在一般情況下,元素都會使用默認的標準Context組件,即className屬性采用默認值org.apache.catalina.core.StandardContext,它除了擁有上面介紹到的屬性外,還有自身專有的屬性:成都服務器托管
10、web.xml文件
該文件必須放在/WEB-INF目錄下,但是從7.0版本開始,Tomcat可以不使用web.xml文件,而是使用注解方式。
三、Tomcat的優(yōu)化
1、內(nèi)存使用配置
Tomcat是依賴于JVM的,所以Tomcat的使用內(nèi)存配置實質(zhì)上是JVM的內(nèi)存配置。
在/bin目錄下的catalina.bat可以直接通過Tomcat設置JVM內(nèi)存參數(shù),windows下打開catalina.bat文件,在大概中間的位置,找到
通過內(nèi)存設置充分利用服務器內(nèi)存
java8開始,PermSize被MetaspaceSize代替,MetaspaceSize共享heap,不會再有java.lang.OutOfMemoryError:PermGen space,可以不設置
可通過jmap -heap process_id查看設置是否成功
2、大連接數(shù)配置(并發(fā)能力)
在/conf/server.xml里進行配置
在屬性中將protocol屬性改為
NIO模型的效率更高
加入
四、負載均衡配置
負載均衡是提高應用負載量和容錯的有效手段,可以結(jié)合Nginxs與Tomcat實現(xiàn),Nginx是一款性能優(yōu)異的反向代理服務器。
1、負載均衡配置實現(xiàn)
反向代理原理示意圖:成都服務器托管
負載均衡示意圖:成都服務器托管
負載均衡策略:成都服務器托管
Nginx 提供輪詢(round robin)、用戶IP哈希(client IP)和指定權(quán)重 3 種方式
2、負載均衡時Session的處理策略
Session是Tomcat服務器上的內(nèi)存空間,如果一個用戶發(fā)出多個請求,卻發(fā)到了多個tomcat服務器中,那么就會出現(xiàn)Session不同步的問題
解決方案1
將一個用戶的請求鎖定到某一臺服務器上,簡單,但是缺乏容錯性,一旦某個服務器發(fā)生故障,Session可能丟失,(但是服務器發(fā)生故障是一個低概率事件,如果一個服務器經(jīng)常掛掉,要么是硬件有問題,要么是應用有問題)
可以使用用戶IP哈希實現(xiàn)
解決方案2
Session復制策略,基于網(wǎng)絡的廣播策略,一個節(jié)點Session變化,其他節(jié)點同步復制,具有容錯性,但節(jié)點多或復制量大時對網(wǎng)絡負荷大,使網(wǎng)絡效率低下,甚至阻塞
① 在/conf/server.xml文件中開啟Session復制的選項,將注釋去掉,7.0默認值以配置好,需要接收器綁定內(nèi)網(wǎng)(一般服務器都有兩塊網(wǎng)卡)網(wǎng)卡地址,修改端口>。
② 在應用中指定應用是在分布式部署之下,在web.xml中添加選項
解決方案3
額外創(chuàng)建一個共享的空間用來存放Session,所有服務器共享一個Session
memcached緩存共享方案基本原理
粘性Session與非粘性Session方式:成都服務器托管
需要一些工具jar包,官網(wǎng)有目錄和下載連接,在/conf/context.xml中進行配置,全局有效。
3、集群環(huán)境中應用代碼應注意的問題
傳遞Session需要實體類序列化支持,實現(xiàn)可序列化接口,設置版本號。
獲取用戶IP地址方法的變化,獲取真實客戶端ip而不是Nginx代理地址。
動靜分離結(jié)構(gòu)的預規(guī)劃。一般高并發(fā)的網(wǎng)站上,資源類的文件,如js,css,圖片通常是由靜態(tài)服務器處理,Nginx處理靜態(tài)文件效率就非常高,而tomcat處理靜態(tài)文件是它很大的一個弱勢,tomcat只負責動態(tài)請求的處理。
那么編碼的時候就要考慮靜態(tài)資源最后可能要被拿出去,地址會有變化,所以在開發(fā)的時候應該規(guī)劃訪問地址,保持大靈活性。