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

Java Discussion :

Import dynamique selon fichier


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 125
    Par défaut Import dynamique selon fichier
    Bonjour,

    Voici la description du problème:

    J'ai un appel d'un web service s'effectuant comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @Autowired
    private ManagePartyAdapterService managePartyAdapterService;
     
    managePartyAdapterService.appelService();
    Il s'agit d'un interface.


    Selon le contenu d'un fichier de config, je dois pouvoir utiliser une autre interface.
    (Celle-ci possède le même nom et les mêmes méthodes, mais fonctionnant différemment sur un endPoint différent)

    Dans un cas j'aimerais donc avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import com.interfaces.(...).ManagePartyAdapterService;
    et dans l'autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import com.interfacesbis.(...).ManagePartyAdapterService;

    Solutions étudiées:

    Création de 2 varialbes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Autowired
    private package1.ManagePartyAdapterService service;
    // et 
    @Autowired
    private package2.ManagePartyAdapterService servicebis;
    et truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (lectureFichier = cas1) service.appelService();
    else servicebis.appelService();
    Mais j'aurai un problème avec la configuration Spring et les @Autowired + le setter qui doit être unique sinon ça complique pas mal de choses.

    Cette classe appelant le service possède des méthodes appelées un peu partout dans un projet de 200 classes je préfère donc pas dupliquer la classe et gérer son appel partout.

    Y a-t-il un moyen simple de régler ce problème? (en espérant que ce soit clair).
    Un import $package; serait parfait mais pas trouvé comment faire
    (Edit: je remarque que cette idée est stupide vu que je dis plus bas que je ne dois pas recompiler le projet)

    Je vois sinon la compilation dynamique en mettant un "change-me" à la place du package, et compiler en mettant le contenu du fichier, mais le projet ne doit pas être recompilé/redéployé. Il faut modifier le fichier de config et à la limite relancer l'appli.

    Voilou merci

  2. #2
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    Bonjour,

    l'import dynamique n'existe pas en Java.

    N'y a-t-il pas moyen de supprimer une des deux interfaces? As-tu la main dessus?
    Si c'est le cas, ça reste la solution la plus envisageable...

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 125
    Par défaut
    J'ai la main sur tout, mais les 2 interfaces doivent exister vu que dans un cas je dois en utiliser une, et si le fichier de config change je dois prendre l'autre.

    Mais en fait après avoir écrit ma dernière phrase j'ai remarqué que l'import dynamique ne résoudrait pas mon problème...

  4. #4
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    De ce que je comprend, tu as deux Web Services différents et tu dois utiliser l'un ou l'autre selon la configuration.

    Si ces deux Web Services possèdent les mêmes méthodes, tu dois pouvoir les regrouper sous une interface identique.

    J'ai du mal à comprendre pourquoi tu dois avoir deux interfaces. Tu ne peux pas avoir deux instances d'une même interface?

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2010
    Messages
    125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 125
    Par défaut
    Je comprend ce qui t'étonnes...

    On doit faire dans les 2 cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    service.findBySample(String id)
    Même si j'ai bel et bien une classe implémentant cette inteface, c'est par l'inteface que je passe pour appeler mon service.

    Certes j'ai quelque part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class AdapterServiceImpl implements ManagePartyAdapterService{
    ...
    }
    Mais je ne peux pas faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AdapterServiceImpl service1 = new AdapterServiceImpl();
    service1.findBySample(id);
    Enfin je ne sais pas si je ne "peux" pas, mais c'est comme ça que sont effectués tous les appels de service là dedans...
    Alors honnêtement je ne sais pas ce que cela impacterait de passer par des objets, je ne sais pas non plus si c'est possible avec la définissions des WSDL.

    Si c'est l'unique solution, je vais me pencher dessus.
    Mais je ne suis malheuresement pas encore expert web service donc ça me prendra du temps de tout analyser, j'espérais l'éviter

  6. #6
    Membre émérite
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Par défaut
    C'est très bien que tu passes par l'interface pour appeler ton service, c'est ce qu'il faut faire de manière générale.

    Je ne te demande pas d'appeler sur l'implémentation, mais d'appeler sur l'interface qui sera la même pour tes deux implémentations.

    Comme ça tu continues à appeler sur l'interface, sans te soucier de l'implémentation. C'est une des utilités de l'interfaçage d'ailleurs.

    Si test deux Services Web utilisent le même WSDL (à l'exception du endpoint), tu ne devrais avoir aucun problème pour utiliser la même interface Java.

    Ensuite, je ne suis pas un pro de Spring, mais je suppose que tu pourrais intégrer la configuration qui te permet de choisir l'un ou l'autre dans ta configuration Spring afin de n'injecter que le service qui t'intéresse.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout dynamique de fichiers selon des modèles prédéfinis
    Par Iori Yagami dans le forum Eclipse Modeling
    Réponses: 0
    Dernier message: 15/09/2013, 14h00
  2. [2.x] [Routing] Import Dynamique Fichier Routage
    Par decad7 dans le forum Symfony
    Réponses: 0
    Dernier message: 25/01/2013, 22h57
  3. Réponses: 1
    Dernier message: 29/02/2012, 17h42
  4. importation d'un fichier texte vers excel
    Par darkpocket dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/01/2005, 11h47
  5. [SQL*Plus] génération dynamique du fichier de spool
    Par lalystar dans le forum Oracle
    Réponses: 3
    Dernier message: 06/12/2004, 10h44

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