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