日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

瞅瞅,這還是你熟悉的Tomcat嗎?

 

一、Tomcat 架構概覽

瞅瞅,這還是你熟悉的Tomcat嗎?

 

1、Tomcat是什么?

Apache Tomcat軟件是Jakarta Servlet、 Jakarta Server Pages、 Jakarta Expression Language、 Jakarta WebSocket、 Jakarta Annotations和 Jakarta Authentication 規范的開源實現 。這些規范是 Jakarta EE 平臺的一部分。

tomcat是一個容器,用于承載Servlet,Tomcat就是實現了部分J2EE規范的服務器。

Jakarta EE是J2 EE的延續,其中Tomcat10以后都是Jakarta EE,Tomcat9以前都是都是J2EE。

2、Tomcat文件結構

2.1、目錄和文件

  • bin:二進制執行文件,腳本
  • conf:配置文件
  • logs: 日志文件
  • webApps:web應用存放位置
  • lib:共享文件
  • CATALINA_HOME:安裝根目錄,CATALINA是tomcat核心所在。存放不可變文件,只讀文件,屬于tomcat的共用基礎配置。
  • CATALINA_BASE:配置文件的目錄,可以通過改變配置來解決單機運行多個tomcat而不需要解壓。

2.2、啟動類

  1. 找到tomcat下面bin目錄
  2. 查看啟動腳本,windows為startup.bat,mac系統為startup.sh,內容不需要過多關注,直接查看最后一句
1.exec "$PRGDIR"/"$EXECUTABLE" start "$@"

2.EXECUTABLE=catalina.sh
  • 上述為腳本內容,第一行執行了變量EXECUTABLE中的start,第二行為EXECUTABLE變量具體內容,可以看到具體執行的還是catalina.sh中的start方法。
  • 找到catalina.sh腳本中的start
if [ "$1" = "debug" ] ; then
  if $os400; then
    echo "Debug command not available on OS400"
    exit 1
  else
    shift
    if [ "$1" = "-security" ] ; then
      if [ $have_tty -eq 1 ]; then
        echo "Using Security Manager"
      fi
      shift
      eval exec ""$_RUNJDB"" ""$CATALINA_LOGGING_CONFIG"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" 
        -D$ENDORSED_PROP="$JAVA_ENDORSED_DIRS" 
        -classpath "$CLASSPATH" 
        -sourcepath "$CATALINA_HOME"/../../java 
        -Djava.security.manager 
        -Djava.security.policy=="$CATALINA_BASE"/conf/catalina.policy 
        -Dcatalina.base="$CATALINA_BASE" 
        -Dcatalina.home="$CATALINA_HOME" 
        -Djava.io.tmpdir="$CATALINA_TMPDIR" 
        org.apache.catalina.startup.Bootstrap "$@" start
    else
      eval exec ""$_RUNJDB"" ""$CATALINA_LOGGING_CONFIG"" $LOGGING_MANAGER "$JAVA_OPTS" "$CATALINA_OPTS" 
        -D$ENDORSED_PROP="$JAVA_ENDORSED_DIRS" 
        -classpath "$CLASSPATH" 
        -sourcepath "$CATALINA_HOME"/../../java 
        -Dcatalina.base="$CATALINA_BASE" 
        -Dcatalina.home="$CATALINA_HOME" 
        -Djava.io.tmpdir="$CATALINA_TMPDIR" 
        org.apache.catalina.startup.Bootstrap "$@" start
    fi
  fi
  • 這個腳本內容比較多,不必逐行去看,直接找到start相關內容,也就是如上內容,可以看到最終找到了
  • org.apache.catalina.startup.Bootstrap

 

2.3、xml文件

  • web.xml:tomcat的web.xml是所有web應用的默認值都取自conf/web.xml,自定義的web.xml是可以覆蓋該默認值。
  • context.xml:每個web應用都會加載conf/context.xml
  • <Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> </Context>
  • 一個context代表了一個web應用,web應用的目錄:
    • WEB-INF:web的元數據目錄
    • META-INF:元數據目錄
    • WatchedResource:監聽資源,監聽了WEB-INF/web.xml和${catalina.base}/conf/web.xml,發現改動后,隨即馬上重新加載應用。

2.4、work目錄

jsp最終是要轉變為Servlet,而Servlet是一個java類,類是需要編譯處理的,work目錄就是用來保存jsp生成的Servlet文件

這個目錄就是工作目錄。

2.5、其他目錄

  • java:源碼文件目錄
  • logs:運行時產生的日志文件
  • modules第三方模塊化依賴
  • res:資源目錄文件,如:歡迎頁,圖片等
  • test:測試包
  • webapp:存放項目文件
  • 以下文件為tomcat默認自帶的
    • docs:文檔頁
    • Host-manager:主機管理也
    • Manager:總管理頁
    • ROOT:root跟頁

3、Tomcat組件

3.1、server組件

server組件定義的是一個tomcat實例

<Server port="8005" shutdown="SHUTDOWN"></Server>

默認監聽在8005端口以接收shutdown命令。

要啟用多個tomcat實例,將它們監聽在不同的端口即可。

這個端口的定義為管理員提供一個關閉實例的便捷途徑,可以直接te.NET至此端口使用SHUTDOWN命令關閉此實例。不過基于安全角度的考慮,通常不允許遠程進行。

3.2、service組件

service組件中封裝connector和container由它們組成一個service向外提供服務

<Service name="Catalina"></Service>

3.3、Connection組件

<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

連接器用于接收客戶端發送的請求并返回響應給客戶端。

一個service中可以有多個connector。有多種connector,常見的為http/1.1,http/2和ajp(apache jserv protocol)。在tomcat中,ajp連接協議類型專用于tomcat前端是apache反向代理的情況下。 因此tomcat可以扮演兩種角色:

  • Tomcat僅作為應用程序服務器(等價servlet容器,動態jsp;包括servlet和ejb):請求來自于前端的web服務器,這可能是Apache, IIS, Nginx等;
  • Tomcat既作為web服務器(解析http協議,響應客戶端,靜態;非處理動態(委托)),也作為應用程序服務器:請求來自于瀏覽器。

3.4、Engline組件

<Engine name="Catalina" defaultHost="localhost">
</Engine>
?
<Engine name="Standalone" defaultHost="localhost" jvmRoute="TomcatA">
</Engine>

engine是service組件中用來分析協議的引擎機器,它從一個或多個connector上接收請求,并將請求交給對應的虛擬主機進行處理,最后返回完整的響應數據給connector,通過connector將響應數據返回給客戶端。

只有一個engine元素必須嵌套在每個service中,且engine必須在其所需要關聯的connector之后

一個service中只允許有一個engine。

3.5、Host組件

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
</Host>

host容器用來定義虛擬主機。

engine從connector接收到請求進行分析后,會將相關的屬性參數傳遞給對應的(篩選方式是從請求首部的host字段和虛擬主機名稱進行匹配)虛擬host進行處理。

如果沒有合適的虛擬主機,則傳遞給默認虛擬主機。

因此每個容器中必須至少定義一個虛擬主機,且必須有一個虛擬主機和engine容器中定義的默認虛擬主機名稱相同。

分享到:
標簽:Tomcat
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定