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

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

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

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

 

一、Tomcat 架構(gòu)概覽

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

 

1、Tomcat是什么?

Apache Tomcat軟件是Jakarta Servlet、 Jakarta Server Pages、 Jakarta Expression Language、 Jakarta WebSocket、 Jakarta Annotations和 Jakarta Authentication 規(guī)范的開源實(shí)現(xiàn) 。這些規(guī)范是 Jakarta EE 平臺(tái)的一部分。

tomcat是一個(gè)容器,用于承載Servlet,Tomcat就是實(shí)現(xiàn)了部分J2EE規(guī)范的服務(wù)器。

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

2、Tomcat文件結(jié)構(gòu)

2.1、目錄和文件

  • bin:二進(jìn)制執(zhí)行文件,腳本
  • conf:配置文件
  • logs: 日志文件
  • webApps:web應(yīng)用存放位置
  • lib:共享文件
  • CATALINA_HOME:安裝根目錄,CATALINA是tomcat核心所在。存放不可變文件,只讀文件,屬于tomcat的共用基礎(chǔ)配置。
  • CATALINA_BASE:配置文件的目錄,可以通過改變配置來(lái)解決單機(jī)運(yùn)行多個(gè)tomcat而不需要解壓。

2.2、啟動(dòng)類

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

2.EXECUTABLE=catalina.sh
  • 上述為腳本內(nèi)容,第一行執(zhí)行了變量EXECUTABLE中的start,第二行為EXECUTABLE變量具體內(nèi)容,可以看到具體執(zhí)行的還是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
  • 這個(gè)腳本內(nèi)容比較多,不必逐行去看,直接找到start相關(guān)內(nèi)容,也就是如上內(nèi)容,可以看到最終找到了
  • org.apache.catalina.startup.Bootstrap

 

2.3、xml文件

  • web.xml:tomcat的web.xml是所有web應(yīng)用的默認(rèn)值都取自conf/web.xml,自定義的web.xml是可以覆蓋該默認(rèn)值。
  • context.xml:每個(gè)web應(yīng)用都會(huì)加載conf/context.xml
  • <Context> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> </Context>
  • 一個(gè)context代表了一個(gè)web應(yīng)用,web應(yīng)用的目錄:
    • WEB-INF:web的元數(shù)據(jù)目錄
    • META-INF:元數(shù)據(jù)目錄
    • WatchedResource:監(jiān)聽資源,監(jiān)聽了WEB-INF/web.xml和${catalina.base}/conf/web.xml,發(fā)現(xiàn)改動(dòng)后,隨即馬上重新加載應(yīng)用。

2.4、work目錄

jsp最終是要轉(zhuǎn)變?yōu)镾ervlet,而Servlet是一個(gè)java類,類是需要編譯處理的,work目錄就是用來(lái)保存jsp生成的Servlet文件

這個(gè)目錄就是工作目錄。

2.5、其他目錄

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

3、Tomcat組件

3.1、server組件

server組件定義的是一個(gè)tomcat實(shí)例

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

默認(rèn)監(jiān)聽在8005端口以接收shutdown命令。

要啟用多個(gè)tomcat實(shí)例,將它們監(jiān)聽在不同的端口即可。

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

3.2、service組件

service組件中封裝connector和container由它們組成一個(gè)service向外提供服務(wù)

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

3.3、Connection組件

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

連接器用于接收客戶端發(fā)送的請(qǐng)求并返回響應(yīng)給客戶端。

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

  • Tomcat僅作為應(yīng)用程序服務(wù)器(等價(jià)servlet容器,動(dòng)態(tài)jsp;包括servlet和ejb):請(qǐng)求來(lái)自于前端的web服務(wù)器,這可能是Apache, IIS, Nginx等;
  • Tomcat既作為web服務(wù)器(解析http協(xié)議,響應(yīng)客戶端,靜態(tài);非處理動(dòng)態(tài)(委托)),也作為應(yīng)用程序服務(wù)器:請(qǐng)求來(lái)自于瀏覽器。

3.4、Engline組件

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

engine是service組件中用來(lái)分析協(xié)議的引擎機(jī)器,它從一個(gè)或多個(gè)connector上接收請(qǐng)求,并將請(qǐng)求交給對(duì)應(yīng)的虛擬主機(jī)進(jìn)行處理,最后返回完整的響應(yīng)數(shù)據(jù)給connector,通過connector將響應(yīng)數(shù)據(jù)返回給客戶端。

只有一個(gè)engine元素必須嵌套在每個(gè)service中,且engine必須在其所需要關(guān)聯(lián)的connector之后

一個(gè)service中只允許有一個(gè)engine。

3.5、Host組件

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

host容器用來(lái)定義虛擬主機(jī)。

engine從connector接收到請(qǐng)求進(jìn)行分析后,會(huì)將相關(guān)的屬性參數(shù)傳遞給對(duì)應(yīng)的(篩選方式是從請(qǐng)求首部的host字段和虛擬主機(jī)名稱進(jìn)行匹配)虛擬host進(jìn)行處理。

如果沒有合適的虛擬主機(jī),則傳遞給默認(rèn)虛擬主機(jī)。

因此每個(gè)容器中必須至少定義一個(gè)虛擬主機(jī),且必須有一個(gè)虛擬主機(jī)和engine容器中定義的默認(rèn)虛擬主機(jī)名稱相同。

分享到:
標(biāo)簽:Tomcat
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定