tomcat5
和tomcat6
類載入器架構
1. tomcat 5 classloader
架構:
bootstrap
| system
| common
/ \
catalina shared
/ \ 在
tomcat5/server/lib/catalina.jar
中,檢視
org/apache/catalina/startup/catalina.properties
檔案,從中可以看到上圖中的3個
classloader
的載入項定義:
common.loader=$/common/classes,$/common/i18n/*.jar,$/common/endorsed/*.jar,$/common/lib/*.jar
server.loader=$/server/classes,$/server/lib/*.jar
shared.loader=$/shared/classes,$/shared/lib/*.jar
同時,tomcat
的安裝目錄下也存在上述
server
和shared
資料夾,用於存放相關的
jar。 在
中的class
載入時的搜尋順序如下:
bootstrap--->system--->/web-inf/classes---> /web-inf/lib/*.jar---> common---->shared
2. tomcat 6 classloader
架構:
bootstrap
| system
| common
/ \
tomcat 6
中所有的
jar
都存放在
%tomcat_home%/lib
目錄下。這點從
catalina.jar
中,檢視
org/apache/catalina/startup /catalina.properties
檔案中也可以看出,在
tomcat 6
的catalina.properties
檔案中,
「server.loader」
和「shared.loader」
已經為空了。具體**如下:
common.loader=$/lib,$/lib/*.jar
server.loader=
shared.loader=
同時在實際初始化類載入器時,原始碼(
org.apache.catalina.startup.bootstrap.createclassloader
)中有如下**:
//此行取出
catalina.properties
中定義的
「server.loader」
和「shared.loader」的值
string value = catalinaproperties.getproperty(name + ".loader");
//如果值為空,則返回
parent
,此時,
parent
即commonloader
,載入項對應
common.loader的值
if ((value == null)|| (value.equals("")))
return parent;
由此可見,在
tomcat 6
中,原來的
"server"
和"shared"2
個類載入器沒有任何作用,都劃撥到
common
類載入器去處理了
。從
tomcat 6
的安裝目錄中也可以看到,沒有了
server"
和"shared"2
個資料夾。 中的
class
載入時的搜尋順序改變成如下:
bootstrap--->system--->/web-inf/classes---> /web-inf/lib/*.jar---> common
同時,在原始碼中還有另2
thread.currentthread().setcontextclassloader(catalinaloader);
securityclassload.securityclassload(catalinaloader);
contextclassloader為執行緒上下文載入器,正常的雙親委派模型中,下層的類載入器可以使用上層父載入器載入的物件,但是上層父類的載入器不可以使用子類載入的物件。而有些時候程式的確需要上層呼叫下層,這時候就需要執行緒上下文載入器來處理。
securityclassload原始碼很清楚的指出,當啟動了
securitymanager
時,為避免觸發
accesscontrolexception
,預先載入一些類。在
catalina.bat
中存在如下定義:
security_policy_file=%catalina_base%/conf/catalina.policy
Tomcat6和Tomcat7配置SSL通訊的比較
在專案開發過程中,嚐嚐會遇到tomcat需要ssl通訊的需求。尤其是在需要安全web應用時,需要https協議的通訊。由於tomcat預設情況下沒有提供ssl通訊設定,因此必須明白如何在tomcat下配置ssl。更糟糕的是,tomcat的不同版本,其ssl配置有所不同。所以,本文將講述如何在tomc...
tomcat6使用備忘
剛剛解壓版的tomcat6.0.18,啟動setup.bat後,通過瀏覽器訪問 問題原因 d tomcat6.0 conf 目錄下的 tomcat users.xml 檔案內容如下 問題修改 將tomcat users.xml 檔案內容改為 重新啟動tomcat 在登入時使用 使用者名稱admin ...
tomcat6目錄結構
首先來了解一下 tomcat5.5 的目錄結構 bin 存放windows 或linux 平台上啟動和關閉 tomcat 的指令碼檔案 conf 存放tomcat 伺服器的各種全域性配置檔案,其中包括 server.xml tomcat 的主要配置檔案 tomcat users.xml 和web.x...