[JAVA] [Opensaml] NoClassDefFoundError tritt auf, wenn von Tomcat zu Weblogic gewechselt wird

Erstellen Sie ein Programm, das die SAML-Authentifizierung mithilfe der opensaml-Bibliothek durchführt NoClassDefFoundError tritt bei der Bereitstellung auf einem Weblogic-Server auf, nachdem der Betrieb in der Tomcat-Umgebung überprüft wurde. Die Java-Version ist 6. Die Version von opsensaml ist 2.6.6.

Als ich Google ausprobierte, wurde das gleiche Phänomen unten beschrieben.

https://stackoverflow.com/questions/30227152/opensaml-throws-java-lang-noclassdeffounderror-only-on-weblogic

Es wurde oben geschrieben, dass wenn Sie die folgende Bibliothek löschen, es vorerst funktioniert. Als ich also dasselbe auf diesem Server versuchte, funktionierte es auf jeden Fall. ・ Com.bea.core.bea.opensaml2_1.0.0.0_6-1-0-0 · Das m. Bea. Dies. Bea. Pensa ml_1.0.0.0.0_6-1-0-0

Im Gegenteil, als ich die obige Bibliothek in die Tomcat-Umgebung stellte und versuchte, sie zu betreiben, trat der gleiche Fehler wie in der Weblogic-Umgebung auf.

Ausgehend von den obigen Ergebnissen wurde die Problemlinie der Ladereihenfolge der Bibliothek im Folgenden beschrieben.

http://otndnld.oracle.co.jp/document/products/wls/docs92/programming/classloading.html#wp1082452

Anscheinend hat Weblogic Vorrang vor dem Bibliotheksverzeichnis (~ / WEB-INF / lib /) in der App Es gibt ein Verzeichnis der zu ladenden Bibliothek, und dieses Mal scheint ein Fehler aufgetreten zu sein, da keine opensaml-Klasse aufgerufen wurde, die von der hier in der oben vorhandenen opensaml platzierten Anwendung aufgerufen wurde.

Als ich prüfte, ob die hier platzierte opensaml-Bibliothek priorisiert werden konnte, war es möglich, den Paketnamen, den Sie priorisieren möchten, mit dem Tag [bevorzugen-Anwendungspakete] in weblogic.xml anzugeben. Setzen Sie also das entsprechende Tag auf weblogic.xml. Nach dem Hinzufügen wurde das Problem behoben (siehe das folgende Dokument).

https://docs.oracle.com/cd/E72987_01/wls/WLPRG/classloading.htm https://docs.oracle.com/cd/E28613_01/web.1211/b65890/weblogic_xml.htm

Das Folgende ist der hinzugefügte Inhalt.

    <prefer-web-inf-classes>false</prefer-web-inf-classes>
    <prefer-application-packages>
       <package-name>org.opensaml.*</package-name>
    </prefer-application-packages>

Bei Verwendung des Tags "Prefer-Application-Packages" muss im Tag "Prefer-Web-Inf-Classes" möglicherweise "false" angegeben werden. Übrigens, wenn Sie dem Laden aller in der Anwendung platzierten Bibliotheken Vorrang einräumen möchten, sollten Sie im Tag "Prefer-Web-Inf-Classes" den Wert "true" angeben.

http://otndnld.oracle.co.jp/document/products/wls/docs92/webapp/weblogic_xml.html

Der vollständige Text von XML lautet wie folgt.

weblogic.xml


<?xml version='1.0' encoding='UTF-8'?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.3/weblogic-web-app.xsd">
  <session-descriptor></session-descriptor>
  <jsp-descriptor></jsp-descriptor>
  <container-descriptor>
    <prefer-web-inf-classes>false</prefer-web-inf-classes>
    <prefer-application-packages>
       <package-name>org.opensaml.*</package-name>
    </prefer-application-packages>
 </container-descriptor>
   <context-root>/</context-root>
   <wl-dispatch-policy>******</wl-dispatch-policy>
 </weblogic-web-app>

Vielleicht taucht das gleiche Problem wieder auf, also lass es in Ruhe.

Recommended Posts

[Opensaml] NoClassDefFoundError tritt auf, wenn von Tomcat zu Weblogic gewechselt wird
Änderungen bei der Migration von Spring Boot 1.5 auf Spring Boot 2.0
Änderungen bei der Migration von Spring Boot 2.0 zu Spring Boot 2.2
Vorsichtsmaßnahmen bei der Migration von VB6.0 auf JAVA
Migration von der Eclipse-Serverfunktion (Tomcat) zum Einbetten von Tomcat
Was tun, wenn beim Starten von Tomcat eine ClassNotFoundException auftritt?
Schreiben und Notizen bei der Migration von VB zu JAVA
Hinweise zum Zeichencode bei der Migration von Windows auf Mac
Woran ich dachte, als ich anfing, von Java nach Kotlin zu migrieren
Hinweise zur Migration von CircleCI 1.0 auf 2.0
Was tun, wenn eine javax.batch.operations.JobStartException auftritt?
Was tun, wenn eine javax.el.PropertyNotWritableException auftritt?
Fehlerbehebung beim Anheben von Mastodon von v3.0.x auf v3.1.x.
Zusammenfassung der Punkte, über die ich mir bei der Migration von Java nach Kotlin Sorgen gemacht habe
NoClassDefFoundError trat auf, als versucht wurde, eine Android-Funktion von Unity über jar aufzurufen