6 Replies Latest reply on Mar 10, 2009 8:50 AM by swd847

    How to add multiple entityNamager in one war?

    garyyding

      How to add multiple entityNamager in one war?


      I need multiple database connection in one war, how can I do it?

        • 1. Re: How to add multiple entityNamager in one war?
          garyyding

          Any people can give some sugestion?


          On one war or web application, it is easy to use one entityMaager to connect one database.But if I want connect multiple database, how I define multiple entityManager, and then injected into my service class?When I define multiple entityManager in components.xml file, it will issue error: found same components. Why?

          • 2. Re: How to add multiple entityNamager in one war?
            swd847

            Declare the two entityManagers in persistence.xml, then declare them in components.xml with different names.

            • 3. Re: How to add multiple entityNamager in one war?
              garyyding
              My code is
              <code>
              EntityManager em2 =  (EntityManager)getInstance("em2");
              EntityManager em1 =  (EntityManager)getInstance("em");
              User user = new User("test11","test11","test11");
              em1.persist(user);
              em2.persist(user);
              </code>

              But I found it is ok for "em1.persist(user);"
              but fail for "em2.persist(user);". When I call it, nothing happened. No database operation from console, no data saved into database.

              Please help to give some suggestion. Thanks.


              Please refer to detailed configuration
              1. in components.xml
              <code>
                      <transaction:entity-transaction  entity-manager="#{em}" />
                      <persistence:entity-manager-factory name="wfwcoredatasource" persistence-unit-name="wfwcoredatasource"/>
                      <persistence:managed-persistence-context name="em"
                      auto-create="true" entity-manager-factory="#{wfwcoredatasource}" />


                      <transaction:entity-transaction name="tt2" entity-manager="#{em2}"/>
                      <persistence:entity-manager-factory name="wfwcoredatasource2" persistence-unit-name="wfwcoredatasource2"/>
                      <persistence:managed-persistence-context name="em2" 
                      auto-create="true" entity-manager-factory="#{wfwcoredatasource2}" />
              </code>

              2. in persistence.xml
              <code>
              <persistence-unit name="wfwcoredatasource"
                              transaction-type="RESOURCE_LOCAL">  
              .....
              </persistence-unit>

              <persistence-unit name="wfwcoredatasource2"
                              transaction-type="RESOURCE_LOCAL">  
              .....
              </persistence-unit>

              </code>
              • 4. Re: How to add multiple entityNamager in one war?
                garyyding

                It seems that I am wrong to set/use the seam transaction.

                • 5. Re: How to add multiple entityNamager in one war?
                  garyyding

                  If I write the following code, it is ok



                  em2.getTransaction().begin();
                  em2.persist(u);
                  em2.getTransaction().commit();



                  But I don't want it.

                  • 6. Re: How to add multiple entityNamager in one war?
                    swd847

                    I take it you do not have the option of using JTA transactions rather than RESOURCE_LOCAL?