Geben Sie die Reihenfolge an, in der die Konfigurationsdateien und Klassen in Java geladen werden
Das Problem, das Sie lösen möchten
- Wenn beim Ausführen von WAR mehrere Einstellungsdateien mit demselben Namen aus irgendeinem Grund im Klassenpfad vorhanden sind, möchten Sie die Reihenfolge angeben, in der sie geladen werden.
- Die Umgebung setzt WebSphere Liberty, Java 8 voraus
- Es gibt drei einfache Möglichkeiten, die Konfigurationsdatei und die Klasse in den Klassenpfad aufzunehmen. Ich möchte diese drei Prioritäten bestätigen
- In WAR-Datei aufnehmen
- In die JAR-Datei aufnehmen und in die Datei WEB-INF / lib der WAR-Datei einfügen
- Platz außerhalb des WAR (in
<Bibliothek>
in Libertys server.xml angeben)
Ergebnis der Forschung
Die Reihenfolge war wie folgt. Da 1 und 2 aufgrund der Verpackungsmethode und der Anordnung umgebungsabhängiger Dateien schwer frei einzustellen sind, platzieren Sie die JAR außerhalb des WAR und dann <Bibliothek>, wenn Sie die Ladereihenfolge detailliert angeben möchten Es scheint gut, die Reihenfolge im Detail in
anzugeben.
- In WAR-Datei aufnehmen
- Fügen Sie es in die JAR-Datei ein und platzieren Sie es in der WAR-Datei WEB-INF / lib
- Platzieren Sie außerhalb des WAR (geben Sie in "" in Libertys server.xml an).
Insbesondere hat es eine solche Form. Die Reihenfolge der Angabe der untergeordneten Elemente von "" ist die Reihenfolge des Ladens der Klasse. Wenn nicht nur "", sondern auch "" angegeben wird, ist die Reihenfolge der XML-Elemente die Reihenfolge des Ladens der Klasse.
<library id="mydir">
<file name="/mydir/foo1.jar"/>
<file name="/mydir/foo2.jar"/>
</library>
<webApplication location="/dir/bar.war">
<classloader privateLibraryRef="mydir"/>
</webApplication>
Was ich nicht verstanden habe
Es scheint, dass dieselbe Einstellung durch Angabe des "Klassenpfads" von MANIFEST.MF vorgenommen werden kann. Wenn sie jedoch durch den "Klassenpfad" von MANIFEST.MF angegeben wird, der im WAR enthalten ist, ist sie aus irgendeinem Grund nicht das Ziel des Klassenladens. Es war wie.