The Tomcat 4 Servlet/JSP Container下怎樣裝載類 (轉)
以下的規則覆蓋了大約95%的內容,關於開發者和者必須要做的工作,關於在什麼地方放置類和資原始檔來使他們變得有效。
對於那些特定某個應用的類和資原始檔,沒有打包的類和資原始檔放置在你的web應用路徑的/WEB-INF/classe下,或者放置包含那些類和資原始檔的JAR檔案在/WEB-INF/lib下
對於那些為所有的WEB應用所共享的WEB應用類和資原始檔,沒有打包的類和資原始檔放置在$CATALINA_HOME/shared/classes下,或者放置那些包含類和資原始檔JAR包在$CATALINA_HOME/shared/lib的下面。
序言
就像一些服務應用一樣,4一個多樣性的class loaders(就是.lang.Claoader)類來允許容器的不同部分和網站應用執行在這個容器中,允許存取不同的類和資源的倉庫。
在Java 2 (that is, 1.2 or later)環境中,class loaders被安排在一個父子樹中。當一個class loader被要求裝載一個類和資源的時候,他首先指定這個需求到一個父類中,然後尋找自己的需求在這個父類中,如果找不到再接著向下尋找。對於WEB應用的class loader也許或有細微的差別,但是主要的機制都是一樣的。
When Tomcat 4 is started, it creates a set of class loaders that are organized into the following parent-child relationships, where the parent class loader is above the child class loader:
當TOMCAT4啟動的時候,他建立了一套以下父子關係的class loader,並且父類在子類的上面。
Bootstrap
|
System
|
Common
/
Catalina Shared
/
Webapp1 Webapp2 ...
:namespace prefix = o ns = "urn:schemas--com::office" />
這些class loaders的每一個特徵(包括類和資源的原始檔)在以下的章節中說明。
Class Loader 定義
就像以上的圖表所顯示的一樣,TOMCAT4在初始化的時候建立以下的class loader:
Bootstrap –這個class loader包含了JAVA虛擬機器提供的基本執行時的環境類,還有任何當前擴充套件路徑($JAVA_HOME//lib/ext)下的JAR檔案。注意-一些JAVA虛擬機器也許需要多個class loader,或者也許不可見。
System –這個class loader通常從CLASSPATH環境變數的內容中初始化。所有這些類對於TOMCAT內部類和WEB應用都是可見的。但是TOMCAT4標準開始指令碼($CATALINA_HOME/bin/catalina.sh 或者 %CATALINA_HOME%bincatalina.bat)完全忽略了他自己的CLASSPATH環境變數的內容,取而代之的是從以下的倉庫中建立系統class loader:
$CATALINA_HOME/bin/bootstrap.jar -包含了初始化TOMCAT4服務的主要方法,和他所依賴的class loader執行類。
$JAVA_HOME/lib/tools.jar -包含了JAVAC,用於把編譯成SEVLET類
Common -這個class loader包含了對於TOMCAT4和所有的WEN應用都可見的額外的類。通常,應用類不應該放置到這裡。透過這類的裝載,所有在$CATALINA_HOME/common/classes下的未打包的類和資原始檔和在$CATALINA_HOME/commons/endorsed 和$CATALINA_HOME/common/lib directories下的打包的JAR檔案都可以變得可見。在預設的情況下主要包含了以下的包:
jndi.jar - JAVA命名和路徑介面類(只裝載在JDK1.2系統中,因為在以後的JDK1.3版本中會被自動包含)。
naming-common.jar -被TOMCAT4使用來說明器命名關聯的JNDI實現
naming-res.jar - 用來描述一個WEB應用的靜態在院的專門的JNDI命名關聯實現
.jar - Servlet 和 JSP API類
xerces.jar -在預設的情況下對於TOMCAT內部類和WEB應用可見的XML解析器。對於一個特殊的應用,我們可以在/WEB-INF/lib下包含我們自己的解析器來忽略這個解析器
Catalina -用來實現TOMCAT4初始化的時候包含他自己所有需要的類和資源。這些類和資源對於整個WEB應用是不可見的。所有的未打包的類和資源在$CATALINA_HOME/server/classes下,打包的JAR檔案在$CATALINA_HOME/server/lib。
因此,從這個WEB應用的觀點可以看出,類或者資源裝載在以下的倉庫中,就是以下的順序:
/WEB-INF/classes 你的WEB應用
/WEB-INF/lib/*.jar 你的WEB應用
你的JVM Bootstrap類
系統class loader類(以上說明的)
$CATALINA_HOME/common/classes
$CATALINA_HOME/common/endorsed/*.jar
$CATALINA_HOME/common/lib/*.jar
$CATALINA_HOME/shared/classes
$CATALINA_HOME/shared/lib/*.jar
類和擴充套件
除了先前的規則,Web應用class loader將拒絕從JAVA語言核心包中裝載("java.*" packages).
XML 解析器 和 JDK 1.4
就象一些其它的改變,JDK1.4釋出了JAAPIS包和Xerces的一個版本。這會影響那些希望使用他們自己的XML解析器。
在先前的TOMCAT4的版本,你可以簡單的在$CATALINA_HOME/common/lib下覆蓋XML解析器來改變所有的WEB應用的解析器。但是,當我們執行在JDK1.4的時候這個技巧不是很有效的,因為通常class loader委託過程總是選擇JDK內部的實現。
JDK1.4透過"Endorsed Standards Overr Mechanism" 來支援建立JCP(i.e. and SAX from )外部的機制。他也別用來XML解析實現。
TOMCAT在命令列開始一個容器的時候,透過包含系統恰當的設定-Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed來呼叫系統的正確設定。因此,你可以取代安裝在這個路徑下的解析器,他甚至在JDK1.4種也會得到應用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-987765/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java Servlet和JSP教程(4)(轉)JavaServletJS
- Tomcat下JSP、Servlet和JavaBean環境的配置TomcatJSServletJavaBean
- Tomcat 4/JSP入門指南(轉)TomcatJS
- 下載tomcat與安裝Tomcat
- Java Servlet和JSP教程(6)(轉)JavaServletJS
- Java Servlet和JSP教程(7)(轉)JavaServletJS
- Java Servlet和JSP教程(8)(轉)JavaServletJS
- Java Servlet和JSP教程(9)(轉)JavaServletJS
- Java Servlet和JSP教程(10)(轉)JavaServletJS
- Java Servlet和JSP教程(11)(轉)JavaServletJS
- Java Servlet和JSP教程(12)(轉)JavaServletJS
- Java Servlet和JSP教程(13)(轉)JavaServletJS
- Java Servlet和JSP教程(1)(轉)JavaServletJS
- Java Servlet和JSP教程(2)(轉)JavaServletJS
- Java Servlet和JSP教程(3)(轉)JavaServletJS
- Java Servlet和JSP教程(5)(轉)JavaServletJS
- Win98下安裝JSP環境(tomcat-4.0.1 在 jdk1.3.1 下) (轉)JSTomcatJDK
- Tomcat下Servlet的地址問題TomcatServlet
- Tomcat的下載與安裝Tomcat
- 配置jsp+jdk1.4+tomcat4.0+servlet+sql server2000(jdbc driver) (轉)JSJDKTomcatServletSQLServerJDBC
- Apache與Tomcat4整合構建jsp環境(轉)ApacheTomcatJS
- jsp servlet javabeanJSServletJavaBean
- JSP與ServletJSServlet
- Servlet下載檔案Servlet
- Tomcat怎麼實現非同步ServletTomcat非同步Servlet
- Spring Boot學習4:web篇(下)-Spring boot (Servlet,Jsp)學習Spring BootWebServletJS
- servlet怎樣傳送檔案??Servlet
- Servlet/JSP 容器開發手記2 (轉)ServletJS
- Jsp+Servlet實現檔案上傳下載(一)--檔案上傳JSServlet
- 怎樣安裝和配置Tomcat Admin 收藏Tomcat
- WIN7下怎樣裝Oracle 10g [轉]Win7Oracle 10g
- 請教tomcat中有沒有類似SUN APP Server中對Servlet/JSP進行Cache的機制?TomcatAPPServerServletJS
- servlet實現下載功能Servlet
- JAVA基礎:JSP與Servlet的區別(轉)JavaJSServlet
- Eclipse+Tomcat整合開發servlet (轉)EclipseTomcatServlet
- jsp+servlet 練習JSServlet
- EJB/JSP/Servlet Sequence GeneratorJSServlet
- Servlet入門二:Tomcat安裝與執行ServletTomcat