Java-Klassenlader: Warum zuerst den übergeordneten Klassenlader durchsuchen?Java

Java-Forum
Anonymous
 Java-Klassenlader: Warum zuerst den übergeordneten Klassenlader durchsuchen?

Post by Anonymous »

Das korrekte Verhalten für einen Klassenlader in Java ist:
  • Wenn er bereits geladen wurde, geben Sie die Klasse zurück
  • Rufen Sie die übergeordnete LoadClass() auf
  • Versuchen Sie, die Klasse selbst zu laden.
Daher sollte die im Systemklassenpfad definierte Klasse immer zuerst geladen werden. Tomcat definiert den Klassenlader pro War, der den System-Klassenlader als übergeordnetes Element hat. Wenn Sie also versuchen, eine Klasse zu laden, sucht sie zuerst im Systemklassenpfad und dann im Klassenpfad, der in der WAR-Datei definiert ist.

Nach meinem Verständnis hat dies zwei Gründe:
  • Um Probleme mit der Verwendung unterschiedlicher Klassenversionen zu vermeiden. Stellen Sie sich vor, ich würde java.lang.Object in einem Krieg neu definieren, das wäre ein Albtraum.
  • Um Abhängigkeiten von untergeordneten Klassenladern zu vermeiden: Der System-Klassenlader kann nicht von untergeordneten Klassenladern abhängig sein: Es wäre beispielsweise schwierig, einen Krieg erneut bereitzustellen.
Die Frage lautet also:

Gibt es zusätzlich zu den oben genannten Problemen noch andere Fallstricke bei der Implementierung von a Klassenlader, der nicht zuerst eine übergeordnete Suche durchführt?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post