亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java tomcat中的類加載器和安全機(jī)制你了解嗎

 更新時間:2021年09月06日 11:18:49   作者:大漠窮秋_  
這篇文章主要介紹了Tomcat 類加載器的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下,希望能夠給你帶來幫助

類加載器

java中的類并不是一次加載完成的,而是按需加載。類加載器是用于加載java類到j(luò)ava虛擬機(jī)中的組件,它負(fù)責(zé)讀取java字節(jié)碼,并轉(zhuǎn)換成 java.lang.Class 的一個實(shí)例,使字節(jié)碼.class文件可以運(yùn)行。一般類加載器負(fù)責(zé)根據(jù)一個指定的類找到對應(yīng)的字節(jié)碼,然后根據(jù)這些字節(jié)碼定義一個java類。另外,它還可以加載資源,包括圖像文件和配置文件。

類加載器可以使java類動態(tài)地加載到j(luò)vm中并運(yùn)行,即可在程序運(yùn)行時再加載類,提供了很靈活的動態(tài)加載方式。

  • 啟動類加載器(Bootstrap ClassLoader):加載對象是java核心庫,把一些核心的java類加載進(jìn)jvm中,這個加載器采用原生代碼(c/c++)實(shí)現(xiàn),并不繼承java.lang.classLoader,它是所有其他類加載器的最終父類加載器,負(fù)責(zé)加載<java_home>/jre/lib目錄下jvm指定的類庫。它屬于jvm整體的一部分,jvm一旦啟動就將這些指定的類加載到內(nèi)存中國,避免以后過多的I/O操作,提高系統(tǒng)的運(yùn)行效率。啟動類加載器無法被程序直接使用。
  • 擴(kuò)展類加載器(Extension ClassLoader):加載對象是java的擴(kuò)展庫,即加載<java_home>/jar/lib/ext目錄里的類。這個類是由啟動類加載器加載,但因?yàn)閱宇惣虞d器并非用java實(shí)現(xiàn),已經(jīng)脫離了java體系,所以如果嘗試調(diào)用擴(kuò)展類加載器的getParent()方法獲取父類的加載器會得到null。然而,它的父類加載器是啟動類加載器。
  • 應(yīng)用類加載器(application ClassLoader):也叫系統(tǒng)類加載器(system classloader),它負(fù)責(zé)加載用戶類路徑自定的類庫,如果程序沒有自己定義類加載器,就默認(rèn)使用應(yīng)用類加載器。它是由啟動類加載器加載,但他的父加載類被設(shè)置成了擴(kuò)展類加載器。如果使用這個加載器,通過classloader.getSystemClassLoader()獲取。

雙親委派

雙親委派時,會將先委托給父類加載器加載,除非父類加載器沒有,才自己加載。

這種模型要求,除了頂層的啟動類加載器外,其他的類加載器都要有⾃⼰的⽗類加載器。 假如有⼀個類要加載進(jìn)來,⼀個類加載器并不會⻢上嘗試⾃⼰將其加載,⽽是委派給⽗類加載器,⽗類加載器收到后⼜嘗 試委派給其⽗類加載器,以此類推,直到委派給啟動類加載器,這樣⼀層⼀層往上委派。 只有當(dāng)⽗類加載器反饋⾃⼰沒法完成這個加載時,⼦加載器才會嘗試⾃⼰加載。 通過這個機(jī)制,保證了 Java 應(yīng)⽤所使⽤的都是同⼀個版本的 Java 核⼼庫的類,同時這個機(jī)制也保證了安全性。 設(shè)想如果應(yīng)⽤程序類加載器想要加載⼀個有破壞性的 java.lang.System 類,雙親委派模型會⼀層層向上委派,最終委派給啟動類加載器,⽽啟動類加載器檢查到緩存中已經(jīng)有了這個類,并不會再加載這個有破壞性的 System 類。

另外,類加載器還擁有全盤負(fù)責(zé)機(jī)制,即當(dāng)⼀個類加載器加載⼀個類時,這個類所依賴的、 引⽤的其他所有類都由這個類加載器加載,除⾮在程序中顯式地指定另外⼀個類加載器加載。

在 Java 中,我們⽤完全匹配類名來標(biāo)識⼀個類,即⽤包名和類名。 ⽽在 JVM 中,⼀個類由完全匹配類名和⼀個類加載器的實(shí)例 ID 作為唯⼀標(biāo)識。 也就是說,同⼀個虛擬機(jī)可以有兩個包名、 類名都相同的類,只要它們由兩個不同的類加載器加載。 當(dāng)我們在 Java 中說兩個類是否相等時,必須在針對同⼀個類加載器加載的前提下才有意義,否則,就算是同樣的字節(jié)碼,由不同的類加載器加載,這兩個類也不是相等的。 這種特征為我們提供了隔離機(jī)制,在 Tomcat 服務(wù)器中它是⼗分有⽤的。

URLClassLoader

我們在使⽤⾃定義類加載去加載類時,我們需要指明該去哪些資源中進(jìn)⾏加載,所以JDK提供了URLClassLoader來⽅便我們使⽤,我們在創(chuàng)建URLClassLoader時需要傳⼊⼀些URLs,然后在使⽤這個URLClassLoader加載類時就會從這些資源中去加載。

Tomcat中⾃定義的類加載器

Tomcat 擁有不同的⾃定義類加載器,以實(shí)現(xiàn)對各種資源庫的控制。 ⼀般來說,Tomcat 主要⽤類加載器解決以下 4 個問題。

  • 同⼀個Tomcat中,各個Web應(yīng)⽤之間各⾃使⽤的Java類庫要互相隔離。
  • 同⼀個Tomcat中,各個Web應(yīng)⽤之間可以提供共享的Java類庫。

為了使Tomcat不受Web應(yīng)⽤的影響,應(yīng)該使服務(wù)器的類庫與應(yīng)⽤程序的類庫互相獨(dú)⽴。

-Tomcat⽀持熱部署。

在 Tomcat中,最重要的⼀個類加載器是 Common 類加載器,它的⽗類加載器是應(yīng)⽤程序類加載器,負(fù)責(zé)加載 $ CATALINA_ BASE/lib、$CATALINA_HOME/lib 兩個⽬錄下所有的.class ⽂件與.jar ⽂件。

-Tomcat中⼀般會有多個WebApp類加載器-WebAppClassLoader ,每個類加載器負(fù)責(zé)加載⼀個 Web 程序。 它的⽗類加載器是Common類加載器。

由于每個 Web 應(yīng)⽤都有⾃⼰的 WebApp 類加載器,很好地使多個 Web 應(yīng)⽤程序之間互相隔離且能通過創(chuàng)建新的 WebApp類加載器達(dá)到熱部署。 這種類加載器結(jié)構(gòu)能有效使 Tomcat 不受 Web 應(yīng)⽤程序影響,

⽽ Common 類加載器的存在使多個 Web 應(yīng)⽤程序能夠互相共享類庫

Tomcat中類加載器架構(gòu)

在這里插入圖片描述

源碼位置如下,在bootstrap類的初始化過程中,初始了三個類加載:commonLoader,catalinaLoader,sharedLoader

    private void initClassLoaders() {
        try {
            commonLoader = createClassLoader("common", null);
            if (commonLoader == null) {
                // no config file, default to this loader - we might be in a 'single' env.
                commonLoader = this.getClass().getClassLoader();
            }
            catalinaLoader = createClassLoader("server", commonLoader);
            sharedLoader = createClassLoader("shared", commonLoader);
        } catch (Throwable t) {
            handleThrowable(t);
            log.error("Class loader creation threw exception", t);
            System.exit(1);
        }
    }

安全機(jī)制

Tomcat中設(shè)置了了⼀些安全策略,默認(rèn)的策略⽂件為conf/catalina.policy

Tomcat中設(shè)置了安全策略,規(guī)定了Tomcat在運(yùn)⾏過程中擁有的權(quán)限,Tomcat管理者可以修改該權(quán)限, 但是Tomcat中有⼀些類是必須能夠被訪問到的,所有Tomcat中在啟動過程中會提前去加載這些類,如果 發(fā)現(xiàn)沒有對應(yīng)的權(quán)限,那么將會啟動失敗。

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Spring Boot整合mybatis(一)實(shí)例代碼

    Spring Boot整合mybatis(一)實(shí)例代碼

    sprig-boot是一個微服務(wù)架構(gòu),加快了spring工程快速開發(fā),以及簡便了配置。接下來開始spring-boot與mybatis的整合
    2017-07-07
  • Java線程通信詳解

    Java線程通信詳解

    本篇文章主要介紹了Java線程通信問題,線程通信用來保證線程協(xié)調(diào)運(yùn)行,有需要的朋友可以了解一下。
    2016-10-10
  • springboot-mybatis/JPA流式查詢的多種實(shí)現(xiàn)方式

    springboot-mybatis/JPA流式查詢的多種實(shí)現(xiàn)方式

    這篇文章主要介紹了springboot-mybatis/JPA流式查詢,本文給大家分享三種方式,每種方式結(jié)合示例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • Springboot編寫CRUD時訪問對應(yīng)數(shù)據(jù)函數(shù)返回null的問題及解決方法

    Springboot編寫CRUD時訪問對應(yīng)數(shù)據(jù)函數(shù)返回null的問題及解決方法

    我在學(xué)習(xí)springboot,其中在編寫CRUD時發(fā)現(xiàn)訪問數(shù)據(jù)的函數(shù)執(zhí)行下去返回值是null但是其它部分正常,這篇文章主要介紹了Springboot在編寫CRUD時,訪問對應(yīng)數(shù)據(jù)函數(shù)返回null,需要的朋友可以參考下
    2024-02-02
  • Jackson序列化丟失泛型的解決

    Jackson序列化丟失泛型的解決

    這篇文章主要介紹了Jackson序列化丟失泛型的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • MybatisPlus調(diào)用原生SQL的實(shí)現(xiàn)方法

    MybatisPlus調(diào)用原生SQL的實(shí)現(xiàn)方法

    本文主要介紹了MybatisPlus調(diào)用原生SQL的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • java雙端隊(duì)列之ArrayDequeue原理講解

    java雙端隊(duì)列之ArrayDequeue原理講解

    這篇文章主要為大家介紹了java雙端隊(duì)列之ArrayDequeue原理講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 微信公眾號支付(二)實(shí)現(xiàn)統(tǒng)一下單接口

    微信公眾號支付(二)實(shí)現(xiàn)統(tǒng)一下單接口

    本篇文章主要給大家介紹調(diào)用微信公眾支付的統(tǒng)一下單API,通過參數(shù)封裝為xml格式并發(fā)送到微信給的接口地址就可以獲得返回內(nèi)容,需要的朋友可以參考下本文
    2015-09-09
  • 如何使用Spring自定義Xml標(biāo)簽

    如何使用Spring自定義Xml標(biāo)簽

    要實(shí)現(xiàn)自定義的xml配置,需要有兩個默認(rèn)spring配置文件來支持。一個是spring.schemas,一個是spring.handlers,前者是為了驗(yàn)證你自定義的xml配置文件是否符合你的格式要求,后者是告訴spring該如何來解析你自定義的配置文件。本文將介紹如何使用Spring自定義Xml標(biāo)簽
    2021-06-06
  • Java中Bean轉(zhuǎn)Map問題歸納總結(jié)

    Java中Bean轉(zhuǎn)Map問題歸納總結(jié)

    Java Bean轉(zhuǎn)Map的坑很多,最常見的就是類型丟失和屬性名解析錯誤的問題,下面這篇文章主要給大家介紹了關(guān)于Java中Bean轉(zhuǎn)Map問題歸納總結(jié)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06

最新評論