Websphere Classloading
Nous avons une application déployée dans Websphere application server 7. Ses déployé et le fonctionnement dans des environnements divers. Mais il a donné une méthode pas trouvé exception dans une nouvelle env. À creuser plus profond, nous avons constaté qu'une classe est présent dans 2 bocaux et de la classe à partir de la "mauvaise" pot a été prise en chargé dans le nouveau env. je suis allé dans le détail du chargeur de classe de la vue et de la séquence de chargement de pots étaient différents.
Sur la poursuite de l'enquête, il semblait y avoir variation aléatoire dans l'ordre dans lequel les fichiers jar ont été chargés dans chaque env.
2 questions:
1) Sur le facteur ne l'a ÉTÉ de chargement de classe politique dépendent & toute suggestion pour corriger le problème?
2) Plus généralement, lorsque nous préciser en supposant *.jar dans le classpath pour n'importe quel programme java comment tout JVM charge les pots? Comme c'est par ordre alphabétique ou selon l'heure de la dernière modification ou un tel fichier de propriété?
OriginalL'auteur Barun | 2009-12-15
Vous devez vous connecter pour publier un commentaire.
Lors de l'installation de web-apps en vertu de l'ÉTÉ, vous pouvez définir la classloading politique dans les options de l'application (ou globalement sur le serveur/au niveau du nœud)
Si les options stratégiques (recherche) "parent premier" /"parent" dernier " et un chargeur de classe par application ou par la guerre. La valeur par défaut est "parent premier /la guerre". Si votre web-app est livré avec tous les pots qu'il a besoin de vous serez mieux avec la politique de "parent dernier /l'application". Aussi, si vous modifiez votre web.xml pour tenir compte des modifications, veillez à régler "utiliser les binaires de configuration" dans le cas contraire, il sera toujours utiliser ce qu'il stockées lors de l'installation.
Si vous avez besoin d'une séquence spécifique, vous pouvez utiliser le MANIFESTE paramètre de chemin de classe (je n'ai jamais fait cela, mais a ÉTÉ docs de le mentionner.)
WEB-INF/classes
est recherchée avant les bocaux dansWEB-INF/lib
de sorte que vous pouvez extraire les classes dont vous avez besoin dans cet endroit. Une solution de contournement (pour une situation non désirée) est de supprimer l'offensive des classes à partir de la.jar
avant de l'emballer dans le.war
Hmm...les deux semblent un peu moche solutions de contournement, mais alors sa juste comme sa un vilain problème. J'avais essayé la deuxième option. Il a donné plus de questions..en gros à cause d'un mélange de classe de l'environnement lors de l'exécution. Une idée sur ce qu'facteurs que le chargement de ce pot dépend?
Ordre de recherche dans /lib n'est pas défini (autant que je sache) lorsqu'aucune classe est définie. Afin de trouver comment faire pour définir la web-app classpath dans le fichier MANIFESTE est votre meilleur pari. Si vous êtes en mesure de placer le
.jar
vous voulez chargé en premier sur le système de fichiers, vous pouvez définir une bibliothèque partagée via la console d'administration et de l'ajouter à votre site web-le classpath de l'application. En ÉTÉ 6.1 de la console d'administration contient un chargeur de classe de l'explorateur qui pourrait donner un aperçu dans une solution.OriginalL'auteur rsp
Java charges de classes dans l'ordre où elles sont indiquées dans le classpath. Donc, si votre classe est "c:\jar1.jar;c:\jar2.jar" et jar1.jar et jar2.jar contiennent la même classe, la classe à partir de jar1.jar sera toujours utilisé. Si l'ordre a été inversé, puis le jar2.jar la classe était toujours utilisée.
Wikipedia explique comment la Classe Chargeurs fonctionnent assez bien http://en.wikipedia.org/wiki/Java_Classloader
Le classpath peut être configuré par le biais de la Console d'Admin sur le Serveur sous Serveur > Définition de Processus > Java Virtual Machine
Il peut également être configuré par l'application.
Gotcha, vous pourriez être en mesure de spécifier l'ordre de la GUERRE par l'ajout d'un MANIFESTE.MF fichier et en spécifiant le Chemin de Classe de l'attribut. Plus d'infos ici: java.sun.com/j2ee/verified/packaging.html
OriginalL'auteur Bert Lamb
Vous demandez à de très grandes questions. Pour résoudre votre problème, il existe 2 options:
OriginalL'auteur Song