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

Hibernate Java Discussion :

Architecture: 2 web app utilisant hibernate


Sujet :

Hibernate Java

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 19
    Points
    19
    Par défaut Architecture: 2 web app utilisant hibernate
    Bonjour,

    J'ai développé une appli web J2EE basé sur hibernate 3 (+ Struts/Tiles, le tout sous Tomcat). Tout roule, je suis satisfait de l'animal.
    Maintenant, le projet s'étend et une deuxieme applications web va etre développée.
    Particularité: elle doit utiliser la meme base de données que la premiere appli, et puisqu'elles partageront des données.

    Donc si je duplique l'architecture de la 1ere appli telle quelle, je me retrouve avec 2 appli qui auront 2 instances d'hibernate séparées et donc 2 instances de cache. Donc il me semble que si des updates sont faits d'un coté, le cache ne sera pas forcément notifié dans l'autre application.

    Vers quel type d'architecture dois-je me tourner?
    Comment faire une appli commune ou un genre de framework commun pour gerer la couche de persistence ?
    Y-a t'il des patterns pour ca?

    La question peut paraitre bete, mais je sais pas trop par où commencer a chercher en fait!?

    Merci !!
    Ju

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 480
    Points
    3 480
    Par défaut
    Salut,

    Il te faudrait un cache de type clusterisé, partagé par tes 2 applications.
    Je te propose de jeter un oeil à JBossCache qui permet de le faire, bien qu'il soit un peu compliqué à mettre en oeuvre.

    EHCache ne permet pas de le faire malheureusement.

    A+
    K

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Si tu déploies ta première application en spécifiant un lien JNDI,
    tu dois pouvoir accéder à ta session factory hibernate, à partir de ta deuxième application via le lien JNDI.
    Tu partageras donc en théorie la même session factory (donc le même cache) et donc la même base de données.

    A vérifier que c'est possible avec Tomcat.

  4. #4
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 480
    Points
    3 480
    Par défaut
    Salut,

    Le sessionFactory est au niveau de la JVM me semble-t-il, et même au niveau de l'application qui l'initialise; Partager une connexion JNDI ne garantie pas d'avoir le même cache; Juste le même moyen de connexion à la base de données.

    Me semble-t-il ^^

    A+
    K

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Oui tout à fait, cependant, si les deux applications sont éxécutées dans la même instance de Tomcat, on est dans la même JVM, donc ça devrait passer, non ?
    On aurait qu'une seule SessionFactory et un seul cache associé.

    Ci-joint un lien qui explique comment utiliser la session factory via jndi sous Tomcat:
    http://www.hibernate.org/416.html

  6. #6
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 851
    Points : 3 480
    Points
    3 480
    Par défaut
    Le sessionFactory gère un cache de niveau 1; J'imagine, que le souhait du posteur initial s'interesse plutot au cas du cache de niveau 2, type EHCache, non ?
    K

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Le cache de niveau 1 est géré par la session.
    Le cache de niveau 2 par la session factory. (voir API Hibernate)

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Donc si je resume: le cache de niveau 2 est associé a la session factory, et mes 2 webapps devraient utiliser la meme session factory.

    Par contre, je dois declarer une resource de type global resource si je veux qu'elle soit visible par les 2, non?
    Mais dans ce cas ca veut dire que tout ma config hibernate doit etre packagée séparément et mise dans "common" afin d'etre visible par Tomcat ...

    Citation Envoyé par fr1man
    Le cache de niveau 1 est géré par la session.
    Le cache de niveau 2 par la session factory. (voir API Hibernate)

  9. #9
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Il me semble.
    Ou alors, tu laisses ta première application initialiser ta session factory Hibernate, et ta deuxième application aura juste à récupérer l'instance de session factory déjà créée.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/05/2013, 16h50
  2. Réponses: 10
    Dernier message: 12/12/2006, 01h44
  3. [Web-App][Servlet][Axis] Problème lors de l'arrêt de la web-app
    Par c.tranquille dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 02/12/2005, 09h49
  4. Tomcat 5.5 ( gestion des privilèges d'une web app )
    Par mick72 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 03/09/2005, 06h54
  5. [CR9] [D2005] [ASP.NET WEB App] Création dynamique d'un état
    Par Crystalou dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 09/03/2005, 09h21

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