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

Langage Java Discussion :

War et classe en double


Sujet :

Langage Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 48
    Par défaut War et classe en double
    Bonjour,

    Nous utilisons une librairie sous le format .jar qui est inclue dans notre .war. Or nous avons eu besoin de modifier une classe de cette librairie.
    Au final celle ci est de nouveau inclue dans un autre jar et est présente à la fois dans le jar initial et dans le notre (même package, même classe). Une fois notre serveur d'application exécuté, c'est malheureusement la classe du jar initial qui est appelée et non la notre.

    Question : Peut on et comment imposer l'utilisation de la classe réécrite ?

    Merci

  2. #2
    Membre éprouvé Avatar de we.are.the.storm
    Profil pro
    Inscrit en
    Février 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 115
    Par défaut
    Bonjour,

    Une manière simple serait de remplacer le .class d'origine par le nouveau .class dans le .jar initial.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 48
    Par défaut
    On a bien pensé à faire ça ou reconstruire le jar mais le client ne veut pas. C'est un jar open source présent dans sa repository maven

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Question : pourquoi vouloir remplacer cette classe ?

    a++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 48
    Par défaut
    Euh... c'est important ?
    On a juste rajouté des logs de façon à tracer des traitements

  6. #6
    Membre éprouvé Avatar de jean.2edi
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 106
    Par défaut
    La stratégie de chargement dépend je crois de votre conteneur de Servlet (Tomcat ? JBoss ? Websphere ? ...). La doc de Tomcat par exemple ne précise pas le cas ou plusieurs jar embarquent la même classe...

    Soit vous trouvez l'ordre de recherche des classes, en regardant les sources du ClassLoader utilisé pour les WEB-INF/lib/*.jar, en utilisant le debugger, etc. et vous réussissez à forcer cet ordre.

    Sinon : la meilleure approche me paraît plutôt de surcharger la classe dont vous avez besoin et non pas la dupliquer !

  7. #7
    Membre expérimenté Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Par défaut
    Citation Envoyé par Gauden Voir le message
    Bonjour,

    Nous utilisons une librairie sous le format .jar qui est inclue dans notre .war. Or nous avons eu besoin de modifier une classe de cette librairie.
    Au final celle ci est de nouveau inclue dans un autre jar et est présente à la fois dans le jar initial et dans le notre (même package, même classe). Une fois notre serveur d'application exécuté, c'est malheureusement la classe du jar initial qui est appelée et non la notre.

    Question : Peut on et comment imposer l'utilisation de la classe réécrite ?

    Merci
    La logique est simple. Puis qu'on peut pas avoir 2 classes de même noms dans un même package et que chaque classe appelée dans une autre est référencé par un import donc il suffit de changer le import de la classe du jar avec ta classe modifiée et cela suppose que tu changer de nom de package.
    Bon Sinon regarde du coté de ton serveur d'application et sa manière de charger les classes.
    Une petite astuces de bricolage à tester:
    si tes jar sont declarés dans le classpath assure toi que ton jar modifié est inclu avant l'autre
    S'il sont dans un web.xml par exemple dans le cas de tomcat assure toi de l'ordre aussi. Ton jar modifié avant l'autre.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 48
    Par défaut
    Ok, merci tout le monde pour ces infos. On va étudier vos solutions

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/04/2007, 10h05
  2. Double propriété dans une classe
    Par Kiboumz dans le forum VB.NET
    Réponses: 3
    Dernier message: 28/03/2007, 13h49
  3. Réponses: 1
    Dernier message: 01/11/2006, 15h57
  4. Réponses: 8
    Dernier message: 18/04/2006, 12h16
  5. Réponses: 7
    Dernier message: 10/09/2004, 14h28

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