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 EE Discussion :

Intégration d'une DataSource


Sujet :

Java EE

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 15
    Points
    15
    Par défaut Intégration d'une DataSource
    Bonjour a tous,

    Je suis sur la conception d'un projet respectant une architecture MVC et utilisant le framework Struts.
    Je travaille actuellement sur la partie métier du projet. Je souhaite donc créer une connexion vers une base de données (MySQL pour le moment). Dans un premier temps, j'utilise seulement des connexions JDBC, donc pas de ORM (ce sera dans un second temps).

    J'ai donc décidé d'utiliser les DataSources pour gérer mes connexions, ce qui me permettra de posséder un pool. Mais c'est ici que mes problèmes surviennent.

    Dans un premier temps, j'ai voulu utiliser les Datasources les plus connues tel que DBCP ou C3PO.
    Avec C3PO, il est possible de créer un fichier qui configurera le datasource. Une mise en place très simple et qui fonctionne bien. Mais lorsqu'il y a des erreurs dans le fichier de configuration (un utilisateur avec un mauvais mot de passe, ...), la librairie ne remonte pas d'erreur. Si l'on tente d'ouvrir une connexion celle ci garde le Thread courant sans ne jamais rendre la main.

    Pour DBCP, la librairie fonctionne également bien, mais je n'ai pas trouvé ou l'on peut configurer (Limite des connexion active, ...).

    J'ai donc décider de pousser mes recherches, et vu qu'il était possible de paramétrer une DataSource via le serveur d'application lui meme, ou via Struts. En consultant quelques exemples, j'ai pu m'apercevoir que les requêtes vers la base de données étaient faites soit au niveau du controler (la servlet ou ActionSupport pour struts) ou pire dans la JSP. Donc il n'y a plus de respect de la norme MVC.
    Faut il que je permette le transfert de la Datasource du controler a mes classes models ?

    Je cherche un peu d'aide pour y voir plus claire. Peut être ai je loupé un détail important durant ma recherche ?
    Je vous remercie d'avance pour l'aide que vous pourriez me fournir.

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

    Informations forums :
    Inscription : Février 2009
    Messages : 115
    Points : 139
    Points
    139
    Par défaut
    En effet, il est plus intéressant de déleguer au serveur d'application le soin de parametrer la connexion à la base de données (en passant par JNDI). Cela permet d'avoir des .war "portables" dans le sens où l'on peut les passer d'un environnement à un autre (test à pré-prod à prod par exemple).

    Pour ce qui est de l'architecture logicielle, on va traditionnellement avoir une couche DAO qui va s'occuper de gérer la problématique de persistence des objets métier. C'est celle-ci qui va devoir travailler avec la DataSource.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Je te remercie de ta réponse
    Si je dois déléguer la datasource au serveur d'application, ma question est donc la suivante :
    Comment mes DAO vont avoir acces a l’implémentation de la datasource ?

    Le seul moyen que je vois pour pouvoir faire cette manipulation est l'injection de dépendance. C'est a dire a partir de mon controler (Servlet ou ActionSupport), je vais avoir ma classe Service avec la méthode ( ou dans le constructor directement) qui devra prendre l'interface Datasource, qui la transmettra lui même a mes DAOs.
    Est ce la bonne façon de raisonner ?

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

    Informations forums :
    Inscription : Février 2009
    Messages : 115
    Points : 139
    Points
    139
    Par défaut
    Avec l'injection de dépendance c'est relativement facile, il va falloir :
    • Injecter la DataSource dans les DAOs
    • Injecter les DAOs dans les services concernés
    • Injecter les services dans les Actions ou Servlet concernées

    Et hop, en voilà une belle architecture en couches

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par gwadaboug Voir le message
    Le seul moyen que je vois pour pouvoir faire cette manipulation est l'injection de dépendance. C'est a dire a partir de mon controler (Servlet ou ActionSupport), je vais avoir ma classe Service avec la méthode ( ou dans le constructor directement) qui devra prendre l'interface Datasource, qui la transmettra lui même a mes DAOs.
    Est ce la bonne façon de raisonner ?
    non, le plus simple est de faire un lookup JNDI pour récupérer la datasource dans la DAO.
    Tu peux te faire une petite classe utilitaire pour généraliser l'accès si tu as plusieurs DAO.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [VB ou C++] intégration d'une page web dans une application
    Par devmat dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/10/2005, 16h14
  2. [JBoss]Différence entre une DataSource et une XADataSource ?
    Par lalakers dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 03/10/2005, 12h18
  3. [ jboss ] Configuration d'une datasource Oracle 8i
    Par mikky dans le forum Wildfly/JBoss
    Réponses: 8
    Dernier message: 22/03/2005, 17h16
  4. Comment déclarer une DataSource dans server.xml
    Par guillaume06 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 16/06/2004, 15h27
  5. [Tomcat]Connexion à une DataSource Oracle
    Par iceman dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 04/08/2003, 17h48

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