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又包含四個子容器:Engine
、Host
、Context
、Wrapper
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-2:tomcat安裝及釋出應用
環境: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