參考說明was培訓(xùn)3.02class loader_第1頁
參考說明was培訓(xùn)3.02class loader_第2頁
參考說明was培訓(xùn)3.02class loader_第3頁
參考說明was培訓(xùn)3.02class loader_第4頁
參考說明was培訓(xùn)3.02class loader_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、IBM WebSphere Application ServerSystem Management Class LoaderIBM Software Group, Business Partner Technical Support (BPTS)WebSphere Software2日程應(yīng)用服務(wù)器類加載器共享庫類加載器問題診斷資源及參考資料Source:If applicable, describe source origin3應(yīng)用服務(wù)器類加載器類加載器概述類加載器是Java虛擬機(jī)(JVM)代碼的一個(gè)構(gòu)成部分,負(fù)責(zé)發(fā)現(xiàn)并加載類文件WebSphere Java類和用戶應(yīng)用程序類類加載器會(huì)影響應(yīng)用

2、程序的打包和部署到應(yīng)用程序服務(wù)器運(yùn)行時(shí)行為WAS提供多個(gè)類加載器層級(jí)和配置選項(xiàng),使得用戶可以更靈活地打包應(yīng)用程序在服務(wù)器啟動(dòng)期間,創(chuàng)建類加載器層級(jí)除根類加載器以外,每個(gè)類加載器都有自己的父類加載器加載類的請(qǐng)求只能提交給父類加載器,而不能從子類加載器加載類4類加載器概述(續(xù))每個(gè)類加載器都有一個(gè)可配置的或不可以配置的委托(查找)模式當(dāng)查找類時(shí),類加載器可以先查找父類加載器,再查找它自己的類加載器;或者先查看自己的加載器,再查找父類加載器委托算法對(duì)本地庫(*.dll,*.so,等等)無效委托模式分為兩種:PARENT_FIRST 首先查找父類加載器的類,然后再查找本地類加載器的類PARENT_LA

3、ST 首先查找本地類加載器的類,然后再委托父類加載器裝載類允許應(yīng)用程序類加載器覆蓋父類加載器類和實(shí)現(xiàn)自己版本的類無論何時(shí),一旦類成功加載,JVM就會(huì)對(duì)該類進(jìn)行緩存,并將其關(guān)聯(lián)到其類加載器。5Class Loader Hierarchy At a Glance6JVM Class loaderJVM Bootstrap, JVM extensions, ClasspathWebSphere Extensions Class loaderLoads WebSphere Runtime and resource classesWebSphere lib/app Class loaderload cl

4、asses in “l(fā)ib/app” dir (V4)WebSphere “Server” Class loaderload Server-scoped Shared LibrariesApplication Module Class loaderEJBs, RARs, Utility JARs, Application Shared librariesOptional: Web Module based on web Module class-loader PolicyWeb Module Class loader(Optional)For Web Module onlyBootstrap:

5、 loaded from by jre/libextensions: Defined by java.ext.dirsJVM ClasspathWebSphere Ext.: Defined by ws.ext.dirs%WAS_ROOT classes, lib and ext dirsResource classesLoad application artifacts from the /lib/app path - NOT MNEDED, using Shared LibrariesUser defined one or more class loaders withina server

6、 configuration to specify serverscoped Shared LibrariesApplication Class loader loads applicationartifacts - Various combination possible basedon ClassLoading PoliciesJVM Class loader類加載器目錄/加載文件委派模式JVM Bootstrap Libraries/jre/libNOJVM Extension librariesJAVA_HOME/jre/ext/libAny directory specified b

7、y the java.ext.dirs system propertyPARENT_FIRSTJVM System Class loaderCLASSPATH environment variable.Command-line options “classpath” or “cp”If a JAR file on the class path has a manifest with the Class-Path attribute, JAR files specified by the Class-Path attribute will also be searchedPARENT_FIRST

8、7JVM Class loaderJVM Bootstrap, JVM extensions, ClasspathLife cycle of classes: Exists for the duration of the serverAdditional Classpath and Bootclasspath can be configured using administrative console or wsadmin Server Application Server Java and Process Management Process Definition Java Virtual

9、MachineWebSphere Extensions Class Loader類加載器目錄/加載文件委派模式Java tools directory/libNORuntime Patches(RP) directoryclassesPARENT_FIRSTRuntime Library (RL)directorylibCommand-line options “classpath” or “cp”If a JAR file on the class path has a manifest with the Class-Path attribute, JAR files specified b

10、y the Class-Path attribute will also be searchedPARENT_FIRSTRuntime Extensions(RE) directorylibextNot used currentlyPARENT_FIRSTRuntime appendedclass pathsResource classes (like JDBC) and native paths and Standalone Resource adapters, specified in the server configurationPARENT_FIRST8Life cycle of c

11、lasses: Exists for the duration of the serverWebSphere Extensions Class loaderLoads WebSphere Runtime and resource classesWebSphere “Server” 類加載器用于創(chuàng)建服務(wù)器范圍的共享庫共享庫用于指定應(yīng)用服務(wù)器上所有運(yùn)行應(yīng)用程序都需要的類庫而無需將共享庫分別關(guān)聯(lián)到每一個(gè)應(yīng)用程序在服務(wù)器配置中,用戶可以定義一個(gè)或多個(gè)”Server”類加載器多個(gè)“Server”類加載器的加載順序就是他們?cè)诠芾砜刂婆_(tái)中出現(xiàn)的順序每一個(gè)Server類加載器自動(dòng)成為其前面創(chuàng)建的Server類

12、加載器的直子類加載器委托模式:PARENT_FIRST (默認(rèn)設(shè)置) PARENT_LAST 可配置類的生命周期:與服務(wù)器的生命周期相同配置:使用管理控制臺(tái)或wsadmin9創(chuàng)建WebSphere“服務(wù)器” 類加載器10Servers Server Types WebSphere Application Servers ServerDefine New Server Class loaderEdit Server Class loaderWebSphere應(yīng)用程序加載器負(fù)責(zé)加載EAR文件中的WebSphere J2EE應(yīng)用程序工件由兩個(gè)類加載器構(gòu)成,用于隔離應(yīng)用程序和模塊:應(yīng)用模塊類加載器We

13、b模塊類加載器委托模式: 可配置的PARENT_FIRST (默認(rèn)設(shè)置) PARENT_LAST11應(yīng)用程序模塊類加載器EJB, RAR, 工具 JAR包, 應(yīng)用程序共享類庫可選: 基于web模塊類加載器策略的Web模塊Web模塊類加載器(可選)只對(duì)Web 模塊有效Life cycle of classes: Application start and stopWebSphere應(yīng)用程序類加載器隔離策略應(yīng)用程序模塊類加載策略選項(xiàng)定義在應(yīng)用服務(wù)器級(jí)別全局選項(xiàng)單個(gè) - 所有應(yīng)用程序共享同一個(gè)應(yīng)用程序模塊類加載器沒有提供應(yīng)用程序隔離多個(gè)(默認(rèn)值) - 每一個(gè)應(yīng)用程序都擁有自己的應(yīng)用程序模塊類加載器提

14、供了應(yīng)用程序隔離Web模塊類加載器策略定義在應(yīng)用程序級(jí)別Application 應(yīng)用程序所有Web模塊均由應(yīng)用程序模塊類加載器加載Moduel (默認(rèn)值) -應(yīng)用程序每個(gè)Web模塊都擁有自己的類加載器,它們是應(yīng)用程序類加載器的子類加載器12類的生命周期: 應(yīng)用程序的啟動(dòng)和停止Application Class loaderApplication Module Class loaderEJBs, RARs, Utility JARs, Application Shared libraries, and Web ModuleApplication Class loaderApplication M

15、odule Class loaderEJBs, RARs, Utility JARs, Application Shared libraries(NO Web Modules)Web Module Class loaderFor Web Module of the Application類加載器策略配置13應(yīng)用程序模塊類加載器策略Web模塊類加載器策略14共享庫共享庫概述共享庫提供了一個(gè)使用公共java或本地代碼的途徑,服務(wù)器上運(yùn)行的一個(gè)或多個(gè)J2EE應(yīng)用程序可共享這些類庫例如: 依賴的(“工具類”) JAR文件,以及本地庫優(yōu)勢(shì)共享庫支持應(yīng)用程序組件的版本化管理允許重新部署應(yīng)用程序組件而無需重

16、新打包或重新安裝EAR、WAR文件共享庫由管理員定義并關(guān)聯(lián)到一個(gè)或多個(gè)應(yīng)用程序這稱作“應(yīng)用程序關(guān)聯(lián)”共享庫,不同于由“服務(wù)器”類加載器加載的“服務(wù)器關(guān)聯(lián)”的共享庫共享庫可以是:包含JAR文件或本地庫的目錄指定的JAR文件本地庫15定義共享庫Environment - Shared Library可以在單元、節(jié)點(diǎn)、服務(wù)器范圍定義共享庫每一個(gè)共享庫都要有關(guān)聯(lián)的Java庫、Native Library或兩者都有添加新的共享庫定義需要重啟服務(wù)器,以便應(yīng)用程序可以使用該共享庫16共享庫名稱 應(yīng)用程序使用Java共享庫 JAR文件或目錄(使用回車進(jìn)行分割)包含”.dll”或”.so”文件的本地庫路徑應(yīng)用程

17、序使用共享庫選擇 Application Additional Properties Libraries你可以為應(yīng)用程序添加一個(gè)或多個(gè)共享庫1718類加載器高級(jí)主題JVM類加載依賴類依賴類必須存在于目標(biāo)類加載器或者其父類加載器的類路徑中否則,當(dāng)無法定位依賴類時(shí)JVM將會(huì)拋出 ClassNotFoundException 和NoClassDefFoundError 異常19JVM類加載多重定義和緩存JVM可以維護(hù)多個(gè)擁有相同全限定名的類JVM使用而不僅是來識(shí)別不同的類定義JVM會(huì)緩存多個(gè)同名的類定義,只要每個(gè)定義是由不同的類加載器加載的即可在很多環(huán)境中會(huì)造成混亂的類加載問題例如:一個(gè)被子類加載器

18、加載的類依賴于一個(gè)被父類加載器無意中加載的類,如果這兩個(gè)類是二進(jìn)制是不兼容的(比如,依賴類用的是其它版本JDK進(jìn)行編譯的,或者所實(shí)現(xiàn)的接口已經(jīng)發(fā)生改變),JVM將拋出鏈接錯(cuò)誤,如 InvalidClassChangeError 錯(cuò)誤20類的預(yù)加載預(yù)加載類會(huì)加速應(yīng)用服務(wù)器的啟動(dòng)在需要這些類時(shí),類加載器不必需要再搜索類,因?yàn)樗鼈円呀?jīng)被加載。它是如何實(shí)現(xiàn)的呢:應(yīng)用服務(wù)器進(jìn)程第一次啟動(dòng)時(shí),將每一個(gè)要加載的類的名稱以及包含這些類的JAR文件的名稱寫入到預(yù)加載文件后續(xù)的進(jìn)程啟動(dòng)使用這些預(yù)加載文件,這樣可以更快速的啟動(dòng)進(jìn)程進(jìn)程啟動(dòng)過程需要的新類也會(huì)添加到預(yù)加載文件中被進(jìn)程刪除的類在后續(xù)啟動(dòng)過程都會(huì)被忽略21

19、類的預(yù)加載管理任務(wù)管理任務(wù): 無需進(jìn)行額外管理不需要額外配置類預(yù)加載選項(xiàng)就是默認(rèn)打開的禁用類預(yù)加載將下面參數(shù)添加到應(yīng)用服務(wù)器的JVM通用屬性-Dibm.websphere.preload.classes=false要重新生成預(yù)加載文件將已經(jīng)生成的預(yù)加載文件刪除服務(wù)器下一次啟動(dòng)時(shí)就會(huì)重新創(chuàng)建該文件預(yù)加載文件的文件名和所在的目錄目錄: /logs/preload 目錄文件名:應(yīng)用服務(wù)器: cell_name.node_name.server_name.preload啟動(dòng)服務(wù)器: WsServerLauncher.preload加載客戶端: launchClient.preload2223類加載器問

20、題診斷問題診斷JVM的類路徑,庫路徑和WAS擴(kuò)展目錄信息都記錄在SystemOut.log文件中JVM類加載器的”-verbose”和”verboseJNI”的JVM選項(xiàng)可以從管理控制臺(tái)啟用該選項(xiàng)Server WebSphere Application Server Server Java and Process Management Process Definition Java Virtual Machine出現(xiàn)在 native_stderr.log文件的診斷信息WAS擴(kuò)展類加載器診斷指定系統(tǒng)屬性-Dws.ext.debug=true (通過管理控制臺(tái)設(shè)定)出現(xiàn)在native_stderr

21、.log 文件中的診斷信息診斷跟蹤規(guī)范com.ibm.ws.classloader.*=all=enabled類加載器轉(zhuǎn)儲(chǔ)已加載類的快照IBM支持站點(diǎn)24問題診斷Native LibrariesJVM拋出 UnsatisfiedLinkError 錯(cuò)誤表示無法找到所需要的本地庫驗(yàn)證本地庫是否在搜索路徑中驗(yàn)證應(yīng)用程序是否向loadLibrary()方法傳遞了正確的庫名(沒有與平臺(tái)相關(guān)的前綴和擴(kuò)展名)檢查System.mapLibraryName() 函數(shù)是否運(yùn)行錯(cuò)誤版本的本地庫,在UNIX上為.a而不是.so依賴的本地庫不在JVM本地庫路徑下JVM拋出 UnsatisfiedLinkError 錯(cuò)誤表示本地庫已經(jīng)加載判斷為什么重新加載本地庫,以及如何糾正將本地庫置于應(yīng)用服務(wù)器關(guān)聯(lián)的共享庫將解決該問題將調(diào)用放在類的靜態(tài)代碼塊中JVM拋出 UnsatisfiedLinkError 錯(cuò)誤表示無法解析所依賴的本地庫設(shè)置 LD_LIBRARY_PATH (UNIX系統(tǒng)) or PATH (Windows系統(tǒng)) 系統(tǒng)變量,包含未解決的本地庫所在的路徑25提示和技巧絕不要將WAS資源或者應(yīng)用程序的資源放置在JVM類路徑下無

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論