亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Tomcat學習總結1

系統 1992 0

Tomcat是一個免費的開源的Serlvet容器,它是Apache基金會的Jakarta項目中的一個核心項目,由Apache、Sun和其它一些公司及個人共同開發而成。由于有了Sun的參與和支持,最新的Servlet和Jsp規范總能在 Tomcat中得到體現。

盡管Tomcat也可以作為獨立的Java Web服務器,但在對靜態資源(HTML、圖像文件等)的處理速度,Web服務器管理等方面都不如Apache、IIS服務器等其他專業的HTTP服務器,因此在實際應用中,常常把Tomcat與其他的HTTP服務器集成使用。對于不支持Servlet/JSP的HTTP服務器,可以通過Tomcat服務器來運行Servlet/JSP組件。

當Tomcat與其他HTTP服務器集成時,Tomcat服務器的工作模式通常為進程外的Servlet容器,Tomcat服務器與其他HTTP服務器之間通過專門的插件來通信。

Tomcat的目錄結構

    
      $CATALINA_HOME   Tomcat安裝目錄下面有

    
  

  • bin : 啟動和關閉Tomcat腳本文件。
  • conf : Tomcat服務器的各種配置文件,包括:server.xml、web.xml、catalina.policy等。
  • lib : Tomcat服務器和所有web應用可以訪問的jar包。
  • logs : Tomcat的日志文件。
  • webapps : Tomcat自帶的兩個web應用:admin和manager,用來管理Tomcat的Web服務。
  • work : JSP經過Tomcat編譯后生成的Servlet。
  • temp : Tomcat運行時的臨時文件。

Tomcat層次結構

Tomcat服務器由一系列可配置組件構成,其中核心組件是Catalina Servlet容器,它是其他所有Tomcat組件的頂層容器。在server.xml配置文件中,各組件之間關系如下

<Server>................................Server層

<Service>............................Service層

<Connector/>

<Engine>..........................Engine層

<Host>.........................Host層

????????<Context/>...............Context層

</Host>

</Engine>

</Service>

<Server>

Server層

????對應Server組件,表示整個Tomcat(Catalina Servlet容器),它處于Tomcat頂層,可以包含一個或多個Service層。

Service層

????對應Service組件,是Server層中的一個邏輯功能層,包含一個Engine層,以及一個或多個Connector,Service組件將一個或多個Connector組件綁定到Engine層上,Connector組件偵聽端口,獲得用戶請求,并將請求轉發到Engine層處理,同時把處理結果轉發給用戶,從而實現一個特定的功能。

Engine層

????對應Engine組件,負責請求分發處理,可以連接多個Connector,它從Connector接收請求后,解析出可以完成用戶請求的URL,根據URL可以把請求匹配到正確的Host上,當Host處理完用戶請求后,Engine層把結果返回給適合連接器,再由連接器傳輸給用戶。

Host層

????對應Host組件,表示一個虛擬主機,一個Engine層可以包含多個Host層,每個Host層可以包含一個或多個Context層,對應不同的web應用。

Context層

????對應Context組件,代表某個虛擬主機上的實際目錄或一個WAR,即單個Web應用程序,它運行在特定的虛擬主機中,使用最為頻繁。一個Host層包含多個Context層,每一個Context都有唯一的路徑,Host層接到請求后,根據用戶請求的URL,將請求定位到Context層。

Tomcat常用配置文件

server.xml:Tomcat中最重要的配置文件,定義了tomcat的體系結構,包括連接器端口、連接數、集群、虛擬目錄、訪問日志等的設置。

context.xml:全局context的配置文件,包括JNDI等信息的配置。

tocmat-users.xml:Tocmat管理員身份的配置文件,關鍵是設置管理員賬號的密碼。

logging.properties:Tocmat日志配置文件,可以修改默認的Tocmat日志路徑和名稱。

Tomcat JVM參數調整

根據系統物理內存大小合理設置下列五個參數catalina.sh/catalina.bat

????-server -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m

????一般情況下,設置-Xms=-Xmx、-XX:PermSize=-XX:MaxPermSize,正式服務器必須設置以上參數,以盡可能壓榨服務器性能。相關參數取值需要根據實際情況考慮,不要超過(物理內存-其他程序內存)的80%即可。

沒有特殊理由,盡量不要對上述五個參數外的其他JVM參數進行設置:

無法保證各種操作系統平臺的可移植性

過度干涉JVM內存管理會導致無法預料的后果

如果在Windows平臺上將解壓版的Tomcat安裝為服務,可以通過修改批處理文件$CATALINA_HOME/bin/service.bat對JVM參數進行調整。

Tomcat日志配置

Tomcat日志信息包括 訪問日志和運行日志。

訪問日志用于對用戶訪問系統的行為進行跟蹤記錄,主要記錄用戶訪問的時間、對應的IP地址、訪問的資料等信息。記錄訪問日志主要是基于對系統安全的考慮,對系統中一些重要、敏感信息的資料訪問歷史進行記錄,便于對資源的訪問歷史進行追蹤,對于敏感信息未經授權訪問等進行事后追查有一定幫助。但記錄訪問日志會對服務器性能產生一定的影響,在生產系統中需要慎用。

運行日志主要記錄程序運行的一些信息,其中的異常錯誤信息可以為我們定位錯誤。從6.0版本開始,Tomcat的日志接口采用是對Apache Commons Logging日志接口進行獨立封裝,缺省配置下,該日志接口采用硬編碼使用java.util.logging日志框架。

由于Tomcat發布版本中獨立封裝的Apache Commons Logging接口并沒有對接口完全實現,如果要選擇不同的日志框架就需要將該日志接口替換為完全實現的版本。

缺省配置下,Tomcat是不記錄訪問日志的,可以通過如下配置允許Tomcat記錄訪問日志:

修改$CATALINA_HOME/server.xml,在Host標簽下,找到如下配置信息,去掉兩端的注釋就會啟用訪問日志記錄功能:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"

prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>

通過對pattern項的修改,可以改變日志輸出的內容。該項值可以為: common 與 combined,對應的日志輸出內容如下所示:

common: %h %l %u %t %r %s %b

combined: %h %l %u %t %r %s %b %{Referer}i %{User-Agent}i

pattern 也可以根據需要自由組合, 例如 pattern="%h %l",對 于各 fields 字段的含義請參照Tomcat官方文檔。

在不同的環境下,需要設置不同的日志級別,在生產環境中,為了提高效率和穩定性,一般會將日志級別設置為相對較高的級別,而開發環境中為了跟蹤程序流程,可以將日志級別調整為較低的級別。不同日志框架有不同的日志級別,常用的日志框架對應級別如下:

Java.util.logging對應的日志級別由高到低分別為:

severe > warning > info > config > fine > finer > finest

org.apache.log4j對應的日志級別由高到低分別為:

fatal > error > warn > info > debug > trace

在缺省配置下,Tomcat采用Java.util.logging日志框架,對應的配置文件為$CATALINA_HOME/ logging.properties,常用的日志級別設定方法如下:

設置catalina日志的級別為:FINE

1catalina.org.apache.juli.FileHandler.level = FINE

禁用catalina日志的輸出:

1catalina.org.apache.juli.FileHandler.level = OFF

設置catalina所有的日志消息均輸出:

1catalina.org.apache.juli.FileHandler.level = ALL

Log4j是目前應用最廣的日志框架,可以使用Log4j替換Tomcat缺省采用的java.util.logging日志框架,步驟如下:

創建log4j配置文件log4j.properties ,保存在$CATALINA_HOME/lib 下。

從Apache官網Log4J項目下載Log4J(1.2版本以后)。

從Apache官網Tomcat項目下載tomcat-juli.jar和tomcat-juli-adapters.jar。

復制log4j.jar、tomcat-juli-adapters.jar到$CATALINA_HOME/lib下。

用tomcat-juli.jar覆蓋$CATALINA_HOME/bin下的同名文件。

刪除Tomcat的缺省日志配置文件$CATALINA_HOME/conf/ logging.properties,以避免生成一些冗余的空日志文件。

Tomcat URL編碼格式設置

缺省情況下,如果URL當中包含有非英文字符,需要通過在程序對URL進行轉碼處理,否則URL中的非英文字符無法保證正確解析。在無特殊要求的情況下,需要將URL編碼設置為和項目統一的編碼格式,目前公司大部分項目都統一采用UTF-8字符編碼方式,示例如下:

<Connector port="8087" protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"

URIEncoding="utf-8" />

Tomcat 常見問題總結

JVM內存溢出(OOM),分為堆內存溢出和PermGen區內存溢出:

java.lang.OutOfMemoryError: PermGen space

PermGen space(Permanent Generation space),是指內存的永久保存區域,主要用于存放Class和Meta信息的,Class在被Loader時就會被放到PermGen space中, 它和存放類實例(Instance)的Heap區域不同,GC(Garbage Collection)不會在主程序運行期對其進行清理,所以如果應用中有很多CLASS的話,就很可能出現PermGen space錯誤。如果加載的Class超過MaxPermSize,就會拋出該異常,可以通過調整MaxPermSize進行解決。

java.lang.OutOfMemoryError: Java heap space

JVM堆是指java程序運行過程中JVM可以調配使用的內存空間。JVM在啟動的時候會自動設置Heap size的值,其初始空間(-Xms)是物理內存的1/64,最大空間(-Xmx)是物理內存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等選項可進行設置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。在JVM中如果98%的時間是用于GC且可用的Heap size 不足2%的時候將拋出此異常信息。

JDK安裝及JAVA_HOME設置

啟動不成功,沒有日志,一般是JDK安裝不正確或沒有設置環境變量。

大量用戶訪問時瀏覽器沒有響應

并發線程數設置太小,調整$CATALINA/conf/server.xml中連接器對應的請求處理線程數。

Tomcat學習總結1


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久视频精品 | 欧美精品国产第一区二区 | 久久国产免费一区二区三区 | 午夜在线成人 | 毛片大 | 亚洲精品国产精品国自产观看 | 麻豆成人久久精品二区三区小说 | 一本一本久久a久久精品综合 | 久久黄色网 | 青青青线在线观看 | 在线观看深夜观看网站免费 | 国产精品亚洲欧美日韩区 | 亚洲mv| 高清不卡一区二区 | 日韩视频大全 | 久久亚洲国产午夜精品理论片 | 一级黄色a视频 | 久久久影视 | 久久99精品国产99久久 | 狠狠骑| 日本午夜在线视频 | 日本不卡中文字幕一区二区 | 久久久精品久久久久久久久久久 | 欧美高清免费精品国产自 | 亚洲精品a | 国产第一页精品 | 日日操日日摸 | 99久久精品国产高清一区二区 | 国产99欧美精品久久精品久久 | 亚洲国产精品国产自在在线 | 国内精品视频在线观看 | 久久在线视频 | 色妞ww精品视频7777 | 717影院理论午夜伦八戒 | 色视频一区 | 久草国产精品 | 国产伦精品一区二区三区在线观看 | 老司机精品久久 | 91精东果冻蜜桃星空麻豆 | 亚洲精品成人456在线播放 | 欧美在线观看视频 |