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

Spring Java Discussion :

datasource qui change pendant l'execution


Sujet :

Spring Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 59
    Par défaut datasource qui change pendant l'execution
    Bonjour,

    J'ecris une application qui peut changer de base de données pendant son execution.

    Est-il possible d'utiliser les injections de dependance spring a mes dao (pour leur injecter la datasource) ?
    De quelle maniere puis-je faire pour qu'au changement de base, la datasource soit reinjectée dans tous les daos ?

    Merci d'avance

    pirbd

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 210
    Par défaut
    Il faut utiliser le pattern proxy

    Ca serait exactement comme utiliser LazyConnectionDataSourceProxy ou UserCredentialsDataSourceAdapter ...

    Tu extends org.springframework.jdbc.datasource.DelegatingDataSource.
    et tu appelles ca un truc genre SwitchableDataSourceProxy

    Tu balances ce proxy sur tous tes dao en lieu et place de ta datasource d'origine.
    Ensuite quand tu veux changer de datasource, tu appelles setTargetDatasource() sur ce seul bean.

    En revanche je ne garantis pas le fonctionnement des Transactions de cette manière simpliste. Et encore moins le fonctionnement avec un pool... Ca demandera + de réflexion

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 144
    Par défaut
    Bonjour, j'ai un problème similaire au tient je crois.
    J'ai une appli Web ou peuvent se connecter plusieurs utilisateurs, et chaque utilisateurs peut choisir une base de données différentes pour se logguer a l'application. Je ne vois pas comment faire cela, je suis completement perdu cela est il possible ?
    Ma question est en fait la suivante :
    est il possible qu'un utilisateur puisse se connected avec un datasource, et qu'un autre utilisateur puisse se connecter avec un autre datasource sans que cela n'interfère ?

    Merci

  4. #4
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    Oui ca devrait marcher si les DAO ont un scope session dans Spring.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 144
    Par défaut
    d'accord ! merci ! je vais voir ce que ca donne

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 144
    Par défaut
    Bon finalement, Spring a été abandonné pour diverses raisons (ce n'est pas moi qui choisit)...
    Du coup il me reste Struts2 + Hibernate + JDK5 (pour les annotations)...

    Et j'en reviens donc a mon point de depart : comment faire pour que mes utilisateurs puissent choisir des bases de données différentes au moment de se logguer ?

    Merci d'avance !

  7. #7
    Membre Expert

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Par défaut
    Il te reste plus qu'à ré-écrire le code d'injection de dépendance.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 59
    Par défaut
    Je sais qu'en SQL il y a moyen de préciser quelle base de données tu utilises pour telle requête... il y a juste à mettre le nom de la base devant le nom de la table séparer par un '.'. Ex: SELECT * FROM ma_base.ma_table ...
    Du coup tu peux (mais c'est un peu bourrin je le concède) faire autant de requête que de base et faire le choix de la requête (et donc de la base) dans ton code Java???

    C'est pas très propre, ni très suivable (hou! le néologisme) mais ca devrait marché ...

    Mohicane

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 59
    Par défaut
    Merci pour les reponses.

    En fait, mais peut etre je me trompe, il me semble que cela ce fasse tout seul :

    1) La datasource est injectée au DAOs.
    2) Au changement de base, je met a jour ma datasource pour qu'elle ait les parametres de la nouvelle mais elle ne change pas! pas besoin de la reinjecter ...

    Je n'ai pas pu encore tester mais à part des questions de pool, je vois pas ou ca peut poser probleme

Discussions similaires

  1. update Datasource avec un comboBox qui change
    Par cbleas dans le forum Windows Forms
    Réponses: 2
    Dernier message: 03/10/2014, 10h15
  2. procedure stockée qui ralenti pendant son execution
    Par deterred dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 21/08/2009, 08h49
  3. Boite à outils qui s'affiche pendant l'execution d'une macro
    Par Raadgever596 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/12/2008, 17h20
  4. Executable qui change de StyleSheet
    Par wassimb dans le forum Qt
    Réponses: 1
    Dernier message: 01/07/2008, 09h27
  5. Réponses: 3
    Dernier message: 22/07/2002, 14h19

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