tomcat4 reload的實現原理

2022-04-08 11:35:01 字數 1495 閱讀 4281

1.在containerbase的setloader中,loader.setcontainer(this);

2.呼叫了wepapploader的setcontainer()

if ((this.container != null) && (this.container instanceof context))

3.在setreloadable(boolean reloadable)中啟動執行緒 持續的檢查web-inf目錄下面的類檔案和jar檔案的時間戳  threadstart();

4.threadstart 啟動同類的start()方法:產生新的乙個執行緒,呼叫run()reload class, 產生threadstart()

5.run()中notifycontext();webappcontextnotifier notifier = new webappcontextnotifier();

(new thread(notifier)).start();

6.webappcontextnotifier為內部類,只有run()乙個方法,執行((context) container).reload(); 呼叫standardcontext的reload()方法

7. standardcontext的reload()方法的業務邏輯:

7.1 shut down our session manager

7.2 shut down the current version of all active servlets

7.3 shut down application event listeners

7.4 clear all application-originated servlet context attributes

7.5 shut down filters

7.6 shut down our application class loader

7.7 restart our application class loader

7.8 restart our application event listeners and filters

7.9 restore the "welcome files" and "resources" context attributes

7.10 restart our currently defined servlets  :((lifecycle) wrapper).start();

7.11 reinitialize all load on startup servlets:loadonstartup(children);

7.12 restart our session manager

8.loadonstartup(container children)-->wrapper.load()-->standardwarpper loadservlet();

從**上看,servlet是動態的全部先解除安裝,然後全部載入。

作者 rain

tomcat 部署web應用程式的4種方式

新增元素,配置檔案預設沒有元素path web應用虛擬路徑名 可以配置多個context,但是docbase path組合不能相同,否則tomcat起不來 該方式不支援動態部署,建議在生產環境使用 當然如果使用eclipse,在eclipse中的設定也有改變 開啟選單欄window選擇prefere...

tomcat下的4個xml配置檔案的作用

samplefilter mypack.samplefilter server.xml是對tomcat的設定,可以設定埠號,新增虛擬機器這些的,是對伺服器的設定。主要是部署工程的,例如 project是你的工程名稱,docbase的位址就是你的工程所在位置。1.關於使用者角色 管理員的資訊都在這個配...

webpack4 單獨抽離打包 css 的新實現

前言之前我們使用的打包 css 無非兩種方式 將 css 打包進 入口 js 檔案中 使用第三方外掛程式 extract text webpack plugin 實現 注意,該外掛程式在 webpack4 中已經不推薦使用,而且會出現各種莫名其妙的 bug file loader我先給個 file ...