1. 程式人生 > >web伺服器專題:tomcat基礎及模組

web伺服器專題:tomcat基礎及模組

Web伺服器專題:Tomcat(一)基礎及模組

針對java系的經典伺服器,打算系統的整理一下Tomcat的機制和一些原理,以此記錄。

插一則題外話,關於tomat這個名字的由來:Tomcat 名稱的由來

關於Tomcat

基礎的 tomcat 內容就不過多贅述了,基本的百度百科都可以看到,在這裡我想從catlina入手介紹一下tomcat,我想很多人剛開始接觸tomcat,不論是日誌裡,bin目錄下的腳本里,都會看見catlina這個東西,都會很困惑,什麼是 Catlina,說到 Catlina,就要介紹一些tomcat相比於Apache 的不同之處,簡單來說,Apache主要用來處理網路中的靜態資源請求(HTML,CSS、圖片等),而tomcat是專為java的servlet而生的,簡單來說就是為J2EE提供環境的, 用來解析動態的資源處理(即後端的業務處理,動態資料等)的部分就被稱為 Catlina。

tomcat 繼承了Apache 作為web伺服器的基本功能,本身包含了三個重要的組成:

處理 html, js, css等 靜態頁面的Web容器;

根據不同的請求來呼叫不同的servlet的servlet容器Catlina;

編譯jsp的引擎Jasper

其實Catlina就是一個Servlet容器,它也是tomcat區別於其他伺服器的核心,整個Tomcat最核心的事就是進行Servlet的管理和根據前端的請求進行排程。

Tomcat的目錄層級及常用檔案

首先簡單記錄一下Tomcat的檔案目錄及一些常用的檔案。

Tomcat的目錄:

|---bin://存放啟動和關閉tomcat指令碼

  |---conf://存放不同的配置檔案(server.xml和web.xml);
  |---doc://存放Tomcat文件;
  |---lib/japser/common://存放Tomcat執行需要的庫檔案(JARS);
  |---logs://存放Tomcat執行時的LOG檔案;
  |---src://存放Tomcat的原始碼;
  |---webapps://Tomcat的主要Web釋出目錄(包括應用程式示例);
  |---work://存放jsp編譯後產生的class檔案;

以上目錄中,一般我們基本開發部署中常用的基本就  bin  、conf 、logs三個,其中 tomcat 的系統級啟動shell、bat檔案均在bin目錄下,具體環境變數及啟動流程,都可以在start.sh或start.bat中檢視原始碼,這裡就不多說了,就主要說一下 conf 目錄下的檔案吧:

server.xml: Tomcat的主配置檔案,包含Service, Connector, Engine, Realm, Valve, Hosts主元件的相關配置資訊;

     web.xml:遵循Servlet規範標準的配置檔案,用於配置servlet,併為所有的Web應用程式提供包括MIME對映等預設配置資訊;

tomcat-user.xml:Realm認證時用到的相關角色、使用者和密碼等資訊;Tomcat自帶的manager預設情況下會用到此檔案;在Tomcat中新增/刪除使用者,為使用者指定角色等將通過編輯此檔案實現;

     catalina.policy:Java相關的安全策略配置檔案,在系統資源級別上提供訪問控制的能力;

     catalina.properties:Tomcat內部package的定義及訪問相關控制,也包括對通過類裝載器裝載的內容的控制;Tomcat在啟動時會事先讀取此檔案的相關設定;

     logging.properties: Tomcat6通過自己內部實現的JAVA日誌記錄器來記錄操作相關的日誌,此檔案即為日誌記錄器相關的配置資訊,可以用來定義日誌記錄的  元件級別以及日誌檔案的存在位置等;

     context.xml:所有host的預設配置資訊;

Tomcat架構

Tomcat的設計是基於模組化設計的,內部主要依賴於不同的模組元件構成, 這裡打算圖解一下Tomcat的內建元件及 一條請求的主要流程,話不多說,先上圖:

一句話簡單概括,一個tomcat只有一個Server作為根,它管理著多個Service服務,而Service服務又管理著多個Connector以及一個Container,其中核心元件為Connector以及Container。

Server元件

從圖中可以看出,一個Tomcat只能有一個Server,Server就是一個Tomcat的例項。

Service元件

Service其實是一個集合,它將Connector元件與Container元件包裝組合在一起(一個Service可以有多個Connector和一個Container),對外進行服務,而Service又是執行在Server中,也就是說,一個Tomcat可以有多個service

Connector元件

 該元件主要負責監聽指定埠的客戶端請求(不同埠對應不同的Connect元件),將Socket請求過來的資料,都封裝成Request請求物件,同時將該請求物件 傳遞給Container容器進行下一步的處理。

Container元件

Container元件才是最接近Web應用的元件,它負責根據請求進行一系列的servlet呼叫,本身Container又包含四個子容器:EngineHostContextWrapper

Container的容器組合如下圖:

Engine :引擎,用來管理多個站點, 一個Service最多隻能有一個Engine
Host :代表一個站點,也可以叫虛擬主機,通過配置Host 就可以新增站點;
Context :代表一個應用程式,即為我們開發的一個war服務在webapp目錄下的各個應用,或者一個WEB-INF 目錄以及下面的web.xml 檔案;
Wrapper :每個Wrapper 封裝著一個servlet

一次完整的流程:

1、當我們瀏覽器點選事件發生,傳送了一個http/https的請求,首先到達tomcat,即執行的例項server中

2、該請求被監聽 8080 埠的 connector監聽到,獲取請求報文後,封裝成Request請求,並將該請求發往Engine

3、Engine根據請求的url,搜尋使用哪個Host

4、當相應的Host獲取該請求後,根據請求中的地址,找尋相應的Context來處理該請求

5、Context根據其內部的對映表,獲取相應的servlet,並構造HttpServletRequest物件和HttpServletResponse物件,進行業務處理

6、Context將處理完的HttpServletResponse物件返回給Host

7、Host再將結果返回Engine

8、Engine中心排程,將結果返回給 connector

9、connector將結果返歸給客戶端

相關推薦

web伺服器專題tomcat基礎模組

Web伺服器專題:Tomcat(一)基礎及模組 針對java系的經典伺服器,打算系統的整理一下Tomcat的機制和一些原理,以此記錄。 插一則題外話,關於tomat這個名字的由來:Tomcat 名稱的由來 關於Tomcat 基礎的 tomcat 內容就不過多贅述了,基本的百度百科都可以看到,在這裡我想從cat

web伺服器專題tomcat(一)基礎模組

Web伺服器專題:Tomcat(一)基礎及模組 針對java系的經典伺服器,打算系統的整理一下Tomcat的機制和一些原理,以此記錄。 插一則題外話,關於tomat這個名字的由來:Tomcat 名稱的由來 關於Tomcat 基礎的 tomcat 內容就不過多贅述了,基本的百度百科都可以看到,在這裡我想從cat

在eclipse中公布maven的多模塊web項目到tomcat單步debug模塊jar

ica pos lips maven模塊 cat watermark trace ott 代碼 1.在eclipse中公布maven的多模塊web項目到tomcat eclipse和maven及tomcat的部署略去,還有maven的基礎知識和使用在此處略去.

web容器(02)tomcat配置監控

路徑 pool 啟動文件 nag bin文件 startup appbase role web容器 1、tomcat的目錄結構 tomcat一般給Java應用的,apache一般給php應用的 bin文件夾(啟動文件): 配置監聽之類的內容是在catalina.sh中加

Tomcat基礎常見使用入門

linux tomcat 基礎教程 Tomcat介紹:Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。對於一個初學者來說,可以這樣認為,當在一臺機器上配置好Apache 服務

Java之web專案問答Java基礎

Java軟體開發工程師的專案經驗集錦: 1、Java基礎 1.1 Collection和Map (1)掌握Collection和Map的繼承體系。 (2)掌握ArrayList(陣列)、LinkedList(連結串列)、Vector(執行緒同步)、Stack(繼承Vector先

即時通訊音視訊開發(七)音訊基礎編碼原理入門

前言 即時通訊應用中的實時音視訊技術,幾乎是IM開發中的最後一道高牆。原因在於:實時音視訊技術 = 音視訊處理技術 + 網路傳輸技術 的橫向技術應用集合體,而公共網際網路不是為了實時通訊設計的。 系列文章 《即時通訊音視訊開發(五):認識主流視訊編碼技術H.264》 《即時

你也可以手繪二維碼(二)糾錯碼字演算法數論基礎伽羅瓦域GF(2^8)

摘要:本文講解二維碼糾錯碼字生成使用到的數學數論基礎知識,伽羅瓦域(Galois Field)GF(2^8),這是手繪二維碼填格子理論基礎,不想深究可以直接跳過。同時數論基礎也是Hash演算法,RSA演算法等密碼學的入門基礎。 二維碼生成演算法最為核心的就是編碼規則和糾錯碼字的生成。本篇專門講解糾錯涉及到的伽

ROS智慧小車DIY專題Linux基礎知識

###文章更新記錄### 2018/12/13 建立文章《Linux基礎知識》   ###寫在前面### 由於機器人SLAM、自動導航、語音互動、機械臂控制這一系列的演算法都在機器人作業系統ROS中有很好的支援,所以後續的章節中都會使用ROS來組織構建程式碼;而ROS又是安裝在Linux發行

web前端專題day1--HTML初識

一,擴充套件     1,谷歌瀏覽器控制檯除錯程式:         滑鼠右鍵-->檢查-->console控制檯     2,sublime擴充套件         1,建立檔案方式              1)雙擊標題欄,ctrl+s儲存    

java基礎整合--手寫web伺服器---xml解析(基礎

SAX解析是一種XML解析的替代方法。相比於DOM,SAX是一種速度更快,更有效的方法。它逐行掃描文件,一邊掃描一邊解析。相比於DOM,SAX可以在解析文件的任意時刻停止解析。 1.SAX解析基本流程 p.xml <?xml version="1.0" encod

爬蟲課程爬蟲基礎靜態網頁爬蟲

以下是我的學習筆記,以及總結,如有錯誤之處請不吝賜教 本文主要介紹一些爬蟲基礎知識。 HTTP協議: http是一個請求<->響應模式的典型範例,即客戶端向伺服器傳送一個請求資訊系,伺服器來響應這個資訊。在老的http版本中,每個請求都將被建立一個新的客戶端->伺服

12月 Web 伺服器調查nginx 增長最快,微軟市場份額最高

   NetCraft 公佈了最新的2018年12月 Web 伺服器調查報告。毫無意外,就全部網站的市場佔有率來看,排名前三的依然是 Microsoft、ngnix 和 Apache。 在2018年12月的調查中,NetCraft 收到了來自 1,656,556,20

12 月 Web 伺服器調查“王者” nginx 增長最快!

NetCraft 公佈了最新的2018年12月 Web 伺服器調查報告。毫無意外,就全部網站的市場佔有率來看,排名前三的依然是 Microsoft、ngnix 和 Apache。 在2018年12月的調查中,NetCraft 收到了來自 1,656,556,205 個站點,227,839,033 個唯一域名

IntelliJ IDEA for Mac 首次建立web專案總結(tomcat配置專案建立)

5.點選 Modules -> 選中專案“ JavaWeb ” -> 切換到  Dependencies 選項卡 -> “+ ”,選擇 “ JARs or directories ”。可看到Java Web專案需要依賴的 JDK 與 Tomcat包(看不到說明IDEA的JDK或Tomcat沒

二、web伺服器簡介、Tomcat安裝、tomcat常見錯誤

1.web伺服器: 接受瀏覽器請求,進行結果響應。 2、常見的web伺服器: Tomcat(Apache),JBoss(不支援servlet和jsp),weblogic,websphere,Resin,jetty 3、Tomcat版本:   1)安裝版(需要安

Docker-2tomcat安裝釋出應用

環境:Centos7系統下     1、搜尋tomcat映象: docker search tomcat     2、下載tomcat映象: docker pull tomcat &

Java併發程式設計實戰併發基礎構建模組

一、同步容器類 同步容器類包括Vector和Hashtable以及一些功能相似的類,這些同步的封裝器類是由Collections.synchronizedXxx等工廠方法建立的。這些類實現執行緒安全的方式是:將它們的狀態封裝起來(即設為私有,使得外部無法直接訪問,只能通過公

web伺服器開發日記---HTTP請求響應

HTTP URL (URL是一種特殊型別的URI,包含了用於查詢某個資源的足夠的資訊)的格式如下:http://host[":"port][abs_path] http表示要通過HTTP協議來定位網路資源;host表示合法的Internet主機域名或者IP地址;por

makefile專題函式定義呼叫

關鍵詞:makefile中的函式、自定義函式、預定義函式 1. makefile中的函式 make直譯器提供了一系列的函式供 makefile呼叫(即預定義函式,相當於庫函式) 在makefi