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

JOnAS Java Discussion :

[EJB3] Multiple database


Sujet :

JOnAS Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 93
    Par défaut [EJB3] Multiple database
    Bonjour
    Me voici de nouveau bloqué avec mes petits EJB3
    J'ai installé un jonas4.8.6 qui marche bien, j'ai déployé dessus easybeans qui tourne bien aussi pour déployer des EJB3.
    Je bloque actuellement sur le fait d'utiliser 2 bases de données différentes.

    J'ai crée un fichier persistence.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?xml version='1.0' encoding='utf-8'?>  
     
    <persistence xmlns="http://java.sun.com/xml/ns/persistence" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
         <persistence-unit name="source1_ds">
             <jta-data-source>jdbc/xxxxx/newSource1</jta-data-source>
         </persistence-unit>	
         <persistence-unit name="source2_ds">
             <jta-data-source>jdbc/xxxxx/newSource1</jta-data-source>
         </persistence-unit>     
    </persistence>
    les source1 et source 2 dont définit par 2 rars mis dans le fichier rar/autoload du serveur jonas.
    Ces rar sont utilisés couramment sur d'autre serveur.
    Tant que je n'indique pas la source2, mes EJB marchent bien quand je la rajoute.
    J'obtiens l'erreur suivante :
    Exception in thread "main" javax.ejb.EJBException: java.lang.IllegalArgumentException: Too many persistence-unit defined, cannot take the default one.
    at org.ow2.easybeans.proxy.client.AbsInvocationHandler.handleThrowable(AbsInvocationHandler.java:176)
    at org.ow2.easybeans.proxy.client.ClientRPCInvocationHandler.invoke(ClientRPCInvocationHandler.java:218)
    at org.ow2.easybeans.proxy.client.ClientRPCInvocationHandler.invoke(ClientRPCInvocationHandler.java:111)
    at $Proxy0.createDecalogUser(Unknown Source)
    at com.sits.userManager.test.decalog.TestEjbDecalogUser.main(TestEjbDecalogUser.java:19)
    Caused by: java.lang.IllegalArgumentException: Too many persistence-unit defined, cannot take the default one.
    at org.ow2.easybeans.persistence.PersistenceUnitManager.getPersistenceContext(PersistenceUnitManager.java:104)
    at org.ow2.easybeans.persistence.PersistenceUnitManager.getEntityManager(PersistenceUnitManager.java:124)
    at org.ow2.easybeans.injection.EntityManagerHelper.getEntityManager(EntityManagerHelper.java:70)

    Bon d'après l'erreur j'ai l'impression qu'il faut une JTA par défaut...
    Sauf que j'ai aucune idée de comment faire et je n'ai pas trouvé par google :'(
    D'après mes recherches, j'ai l'impression que mon persistence.xml est correct du coup je comprends pas

    Merci d'avance pour toute piste

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2009
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 93
    Par défaut
    Bonjour
    en fait j'étais a côte de la plaque
    le problème venait de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	@PersistenceContext(name = CommonConstants.PERSISTANCE_CONTEXT_DECALOG_NAME)
    	private EntityManager em_decalog;
    je définis des unit name dans persistence.xml et j'utilse des names
    ceci marchait tant qu'il n'y avait qu'une source
    la bonne réponse était :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    	@PersistenceContext(unitName = CommonConstants.PERSISTANCE_CONTEXT_DECALOG_NAME)
    	private EntityManager em_decalog;
    Bonne journée

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut
    Bonjour,

    je suis interessé par le développement de ta solution...

    car je cherche à faire exactement comme toi. soit me connecter à de multiples database dans une application.

    et je suis intrigué par :

    CommonConstants.PERSISTANCE_CONTEXT_DECALOG_NAME

    qu'est ce que c'est que ca ?

    Merci

  4. #4
    Membre chevronné Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Par défaut
    C'est le nom de la persistence-unit duquel provient ton EntityManager.
    En clair, c'est une clé que tu retrouves dans ton fichier persistence.xml.

    Ce fichier peut contenir plusieurs persistece-unit, chacune d'entre elles pouvant etre connectée sur une DataSource (== base de donnée) différente.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut
    Merci de ta réponse, mais ça c'est la seule partie que j'ai compris ... C'est la suite qui m'est plus vague...

    Ce que je cherche c'est : Comment se connecter à plusieurs database de façon "automatique". En gros, c'est comment mon application peut reconnaitre le domaine qui l'appelle et en fonction de cela, se rediriger vers la bonne base de données ?

    Merci

  6. #6
    Membre chevronné Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Par défaut
    Ben ton EntityManager est issu d'une persistence-unit et cette persistence unit elle meme référence 1 et 1 seule DataSource (qui te donne des connexions vers ta base de donnee).

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
                 version="2.0">
      <persistence-unit name="le-nom-que-tu-mets-dans-l-annotation" transaction-type="JTA">
        <jta-data-source>jdbc/MyDataSource1</jta-data-source>
      </persistence-unit>
      <persistence-unit name="le-nom-que-tu-mets-dans-une-autre-annotation" transaction-type="JTA">
        <jta-data-source>jdbc/MyDataSource2</jta-data-source>
      </persistence-unit>
    </persistence>
    Apres, il faut que ces datasources soient configurées dans le serveur:
    http://jonas.ow2.org/JONAS_5_2_0/doc...config.jdbcxml
    ou
    http://jonas.ow2.org/JONAS_5_2_0/doc...html#config.ra
    ou encore
    http://jonas.ow2.org/JONAS_5_2_0/doc...ml#config.jdbc

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

Discussions similaires

  1. [MySQL-5.5] Multiple database ou multiserver
    Par sinquem dans le forum Installation
    Réponses: 0
    Dernier message: 25/10/2014, 10h30
  2. Configuration Hibernate Multiple Database
    Par shouwy dans le forum Hibernate
    Réponses: 4
    Dernier message: 24/01/2014, 10h13
  3. SP2010 - Problème de multiple Database SQL server 2008
    Par zencorp dans le forum Installation
    Réponses: 0
    Dernier message: 19/01/2011, 16h46
  4. Spring et multiples databases dynamiques
    Par R1D3M4N dans le forum JPA
    Réponses: 4
    Dernier message: 15/12/2008, 13h33
  5. Problème de select multiple + database
    Par thomfort dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2008, 23h50

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