您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關Tomcat應用各個組件的默認值是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
今天我們就一起把各個組件的默認值給一起找出來
Server->StandardServer
Service->StandardService
Executor->StandardThreadExecutor(tomcat里面的線程池實現,為所有的Service所共用)
Connector->new Connector(attributes.getValue(“protocol”));
在EngineRuleSet中,我們可以看到和Engine相關的一系列的初始化
Engine->StandardEngine
engineConfigClass->org.apache.catalina.startup.EngineConfig
會被轉化成 LifecycleListener
Host->StandardHost
hostConfigClass->org.apache.catalina.startup.HostConfig
Context->StandardContext
configClass->org.apache.catalina.startup.ContextConfig
從源碼中我們可以看到,Context下面都是和我們的web應用息息相關的.如session , cookie,Parameter
最重要的一點是:
Context中設置的loader 是一個WebappLoader. 對每個Context都會去新建一個WebappLoader , 所以說,tomcat中的web應用都是單獨的類加載器.
digester.addObjectCreate(prefix + "Context/Loader", "org.apache.catalina.loader.WebappLoader", "className"); digester.addSetProperties(prefix + "Context/Loader"); digester.addSetNext(prefix + "Context/Loader", "setLoader", "org.apache.catalina.Loader");
在加載完Context 之后,會設置Engine的類加載器
digester.addRule("Server/Service/Engine", new SetParentClassLoaderRule(parentClassLoader)); addClusterRuleSet(digester, "Server/Service/Engine/Cluster/");
SetParentClassLoaderRule:
會取出digester當前棧頂的元素,并為棧頂的元素設置類加載器
Container top = (Container) digester.peek(); top.setParentClassLoader(parentClassLoader);
其中的parentClassLoader 如下代碼所示,是SharedClassLoader
/** * The shared extensions class loader for this server. */ protected ClassLoader parentClassLoader = Catalina.class.getClassLoader();
在上述分析中,我們看到了類加載器的初始化,實際上,在tomcat中,有四種類加載器,分別是Common Class Loader, Catalina Class Loader , Shared Class Loader , Web App Class Loader.
他們可以加載不同位置的類,做到隔離的效果,也可以做到通用的效果
細致的說明我們下一篇文章再細細介紹
Tomcat 中大多數的組件都可以看成Container , 如下圖所示
同時也都有著完整的生命周期:
所以他們有著相似的行為,因為在閱讀源碼時,會有一種感覺,他們都在做同樣的事情,其實也確實如此, 他們只是對同一行為有著不同的重寫.
以上就是Tomcat應用各個組件的默認值是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。