Créez un programme qui effectue l'authentification SAML à l'aide de la bibliothèque opensaml NoClassDefFoundError se produit lors du déploiement sur le serveur weblogic après vérification du fonctionnement dans l'environnement Tomcat. La version java est 6. La version d'opsensaml est la 2.6.6.
Lorsque j'ai essayé Google, le même phénomène a été décrit ci-dessous.
https://stackoverflow.com/questions/30227152/opensaml-throws-java-lang-noclassdeffounderror-only-on-weblogic
Il a été écrit ci-dessus que si vous supprimez la bibliothèque suivante, cela fonctionnera pour le moment, donc quand j'ai essayé la même chose sur ce serveur, cela a certainement fonctionné. ・ Com.bea.core.bea.opensaml2_1.0.0.0_6-1-0-0 ・ Ce m. Être un. cette. Être un. Pensa ml_1.0.0.0.0_6-1-0-0
Au contraire, lorsque j'ai placé la bibliothèque ci-dessus dans l'environnement Tomcat et que j'ai essayé de la faire fonctionner, la même erreur que dans l'environnement weblogic s'est produite.
À partir des résultats ci-dessus, lorsque j'ai étudié la ligne de problème de l'ordre de chargement de la bibliothèque, cela a été décrit ci-dessous.
http://otndnld.oracle.co.jp/document/products/wls/docs92/programming/classloading.html#wp1082452
Apparemment, weblogic a priorité sur le répertoire de la bibliothèque (~ / WEB-INF / lib /) placé dans l'application Il y a un répertoire de la bibliothèque à charger, et cette fois, il semble qu'une erreur s'est produite car il n'y a pas de classe opensaml appelée depuis l'application placée ici dans l'opensaml ci-dessus qui existe là-bas.
Ainsi, lorsque j'ai vérifié si la bibliothèque opensaml placée ici pouvait être priorisée, c'était possible en spécifiant le nom du package que vous souhaitez prioriser avec la balise [prefer-application-packages] dans weblogic.xml, alors définissez la balise correspondante sur weblogic.xml. Après l'avoir ajouté, le problème a été résolu (voir le document ci-dessous).
https://docs.oracle.com/cd/E72987_01/wls/WLPRG/classloading.htm https://docs.oracle.com/cd/E28613_01/web.1211/b65890/weblogic_xml.htm
Voici le contenu ajouté.
<prefer-web-inf-classes>false</prefer-web-inf-classes>
<prefer-application-packages>
<package-name>org.opensaml.*</package-name>
</prefer-application-packages>
Lors de l'utilisation de la balise prefer-application-packages, il semble nécessaire de spécifier false dans la balise prefer-web-inf-classes. Au fait, si vous souhaitez donner la priorité au chargement de toutes les bibliothèques placées dans l'application, vous devez spécifier true dans la balise prefer-web-inf-classes.
http://otndnld.oracle.co.jp/document/products/wls/docs92/webapp/weblogic_xml.html
Le texte intégral de xml est le suivant.
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>
Peut-être que le même problème se reproduira, alors laissez-le tranquille.
Recommended Posts