Weblogic10的ClassLoading 機制 概述
今天我們來聊聊Weblogic的ClassLoading 機制。
首先,我們來回顧一下Java ClassLoader機制, Java ClassLoader 顧名思義,就是從硬盤,網絡等加載Class。JVM采用繼承代理機制保護系統核心的Class不被篡改及出現ClassCastException異常。具體可參閱以前我寫的關于JVM類加載的一篇文章。
下圖就是Weblogic類加載實例。 在Weblogic中,Application就是你部署的應用,可以是一個EAR包,可以是Web 應用的War包。當我們部署一個Application,Weblogic Server 自動創建一個繼承關系的ClassLoader . 頂層是System ClassPath Loader。底層的Root ClassLoader 加載任何EJB jar包,child ClassLoader 加載每一個Web 應用的War包。也就是說EJB的Jar包是優與War加載的。這是因為在一般的應用,Web Application 調用EJB。所以JSP Servlet 可以調用父類加載器加載的EJB。
下圖是在一個標準的Application中ClassLoader的關系。該加載機制優勢在于 WebApplication1 WebApplication2調用EJB時候可以通過reference ,大家都知道通過reference 調用EJB的效率是非常高的。
對于這種常規的ClassLoader 關系,意味著當你要更改EJB1或者EJB2時,我們必須重新部署WebApplication1 WebApplication2。
Weblogic 也給我們提供在weblogic-application.xml.自定義的ClassLoader。不過對于我們一般的應用是沒有必要自定義ClassLoader。
首先,我們來回顧一下Java ClassLoader機制, Java ClassLoader 顧名思義,就是從硬盤,網絡等加載Class。JVM采用繼承代理機制保護系統核心的Class不被篡改及出現ClassCastException異常。具體可參閱以前我寫的關于JVM類加載的一篇文章。
下圖就是Weblogic類加載實例。 在Weblogic中,Application就是你部署的應用,可以是一個EAR包,可以是Web 應用的War包。當我們部署一個Application,Weblogic Server 自動創建一個繼承關系的ClassLoader . 頂層是System ClassPath Loader。底層的Root ClassLoader 加載任何EJB jar包,child ClassLoader 加載每一個Web 應用的War包。也就是說EJB的Jar包是優與War加載的。這是因為在一般的應用,Web Application 調用EJB。所以JSP Servlet 可以調用父類加載器加載的EJB。

下圖是在一個標準的Application中ClassLoader的關系。該加載機制優勢在于 WebApplication1 WebApplication2調用EJB時候可以通過reference ,大家都知道通過reference 調用EJB的效率是非常高的。

對于這種常規的ClassLoader 關系,意味著當你要更改EJB1或者EJB2時,我們必須重新部署WebApplication1 WebApplication2。
Weblogic 也給我們提供在weblogic-application.xml.自定義的ClassLoader。不過對于我們一般的應用是沒有必要自定義ClassLoader。
posted on 2009-04-27 22:46 advincenting 閱讀(1514) 評論(1) 編輯 收藏 所屬分類: 服務器 比如:WebLogic(Develop+Deploy)