IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Weblogic Java Discussion :

[weblogic 6][ejb]Ordre de chargement des classes


Sujet :

Weblogic Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [weblogic 6][ejb]Ordre de chargement des classes
    Bonjour,

    Savez-vous comment forcer un ejb à utiliser un jar utilitaire (ex: xerces.jar) plutôt que des classes parentes fournies par weblogic?

    Sous Eclipse, j'ai pu ajouter xerces.jar dans le classpath de weblogic. Mais en "version EAR", je n'ai pas l'autorisation d'ajouter xerces.jar dans le classpath du serveur weblo 6 (risque d'impacts sur d'autres applis). Peut-on configurer le fichier application.xml de l'ear (ou autre) pour palier à ce problème?
    NB : Il ne s'agit pas à priori d'un pb de fichier MANIFEST.MF de l'ejb: j'y ai bien indiqué une ligne "Class-path : xerces.jar"

  2. #2
    Membre confirmé
    Avatar de bmoussaud
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 218
    Points : 555
    Points
    555
    Par défaut
    On retrouve ici sur un problème rencontré fréquemment c'est derniere années: la gestion de la version du parseur XML. Chaque serveur embarquait un parseur ou une version différente de Xerces. A l"époque les évolutions et les standards XML évoluaient tres vites et les applications demandaient une version plus récente.
    Si on regarde de pres le class loader du serveur d'application, on trouve:
    1/ le system classloader (JVM)
    2/ le classloader du server Weblogic, composé des classes indiquées dans le classpath au demarrage du server (weblogic.jar,xerces.jar,...)
    3/ le classloader de l'application EAR (JAR+WAR).
    Les 3 niveaux sont reliés sous forme d'héritage entre classloader.
    Lorsque une application demande une classe, le classloader recherche la classe, en commencant par regarder dans les classloader de plus bas niveau (ici 1 et 2) avant de regarder dans son propre classloader. Donc dans ton cas, même si tu embarquse une nouvelle version de xerces, vu qu'il a déja été charge par le classloader du server, c'est cette version qu'il te renverra. Meme si tu packages xerces.jar dans ton ear, dans APP-INF/lib et celui-ci indiqué dans manifest

    Solution standard
    1/ remplacer le xerces.jar au niveau du lancement de Weblogic et tester l'ensemble des applicaitons pour en voir l'impact
    2/ Installer et déclarer un nouveau serveur dans ton domain weblogic ou sera déployé ton uniquement ton application

    Cette FAQ de weblogic 6.1 donne la procédure pour changer la version de xerces: http://e-docs.bea.com/wls/docs61/faq/xml.html#740643
    Le principe est d'utiliser L'option "PreferWebInf Classes" qui indique à weblogic de regarder d'abord dans le classloader de l'application web et ensuite dans celui du server. Cela semble etre indique pour les WebApp, a tester sur les EAR.
    Benoit Moussaud - XebiaLabs - Automatisation des déploiements. Screencast & Demo

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/07/2009, 21h28
  2. Réponses: 6
    Dernier message: 28/10/2008, 12h11
  3. Ordre de chargement des librairies
    Par Duc Lebowski dans le forum Weblogic
    Réponses: 1
    Dernier message: 15/01/2008, 16h31
  4. Réponses: 5
    Dernier message: 10/11/2004, 19h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo