2015-03-30 6 views
1

Я хочу указать два соединения с DataBase.Multilple PersistenceContext CDI

создать два производителя:

@Singleton 
public class DataBaseProducerDB2 { 

    @Produces 
    @PersistenceContext(unitName = "contratbusiness") 
    private EntityManager em; 

    public EntityManager getEm() {return em;} 

} 

@Singleton 
public class DataBaseProducerMySQL { 

    public EntityManager getEm() { 
     return em; 
    } 

    @Produces 
    @PersistenceContext(unitName = "AutreSQL") 
    private EntityManager em; 

} 

Затем я впрыснуть производителя мне нужно для моего теста,

@Stateless(name = "contratbusiness.net.awl.bfi.contratbusiness.queries.DacomccbQueries") 
@TransactionAttribute(TransactionAttributeType.SUPPORTS) 
@LocalBean 
@Default 
public class DacomccbQueries { 

    @Inject 
    private DataBaseProducerMySQL baseProducerMySQL; 

    public List<Object[]> findInfosContratOuvert(final String contrat) { 
     final TypedQuery<Object[]> query = this.baseProducerMySQL.getEm().createNamedQuery(
       "net.awl.bfi.contratbusiness.entities.Dacomccb.findInfosContratOuvert", Object[].class); 
     query.setParameter("contrat", contrat); 

     return query.getResultList(); 
    } 

Я не понимаю, почему когда я запускаю тест Junit с производителем SQL, производитель DB2 является lau вместо этого.

@RunWith(EJBContainerRunner.class) 
public class DacomccbQueriesTest { 
    @Inject 
    private DacomccbQueries dacomccbQueries; 
} 

Вот лог:

(SchemaExport.java:perform:426) - [DataDirect] [DB2 JDBC Driver] [DB2] ...

UPDATE : добавление persistence.xml

<?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_2_0.xsd" 
    version="2.0"> 
    <persistence-unit name="contratbusiness" transaction-type="JTA"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <jta-data-source>jdbc/contratbusiness.DB</jta-data-source> 
     <class>net.awl.bfi.contratbusiness.entities.Dacomccb</class> 
     <class>net.awl.bfi.contratbusiness.entities.Daccbcpt</class> 
     <class>net.awl.bfi.contratbusiness.entities.Dacpt</class> 
     <class>net.awl.bfi.contratbusiness.entities.Daccbadr</class> 
     <class>net.awl.bfi.contratbusiness.entities.Daccbdvs</class> 
     <class>net.awl.bfi.contratbusiness.entities.Dacompdv</class> 
     <class>net.awl.bfi.contratbusiness.entities.keyid.DaccbcptId</class> 
     <class>net.awl.bfi.contratbusiness.entities.keyid.DacomccbId</class> 
     <exclude-unlisted-classes>true</exclude-unlisted-classes> 
     <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode> 
     <validation-mode>CALLBACK</validation-mode> 
     <properties> 
      <property name="hibernate.ejb.cfgfile" value="hibernate.cfg.xml" /> 
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider" /> 
     </properties> 
    </persistence-unit> 

    <persistence-unit name="AutreSQL" transaction-type="JTA"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <jta-data-source>jdbc/contratbusiness.DB</jta-data-source> 
     <class>net.awl.bfi.contratbusiness.entities.Dacomccb</class> 
     <class>net.awl.bfi.contratbusiness.entities.Daccbcpt</class> 
     <class>net.awl.bfi.contratbusiness.entities.Dacpt</class> 
     <class>net.awl.bfi.contratbusiness.entities.Daccbadr</class> 
     <class>net.awl.bfi.contratbusiness.entities.Daccbdvs</class> 
     <class>net.awl.bfi.contratbusiness.entities.Dacompdv</class> 
     <class>net.awl.bfi.contratbusiness.entities.keyid.DaccbcptId</class> 
     <class>net.awl.bfi.contratbusiness.entities.keyid.DacomccbId</class> 
     <exclude-unlisted-classes>true</exclude-unlisted-classes> 
     <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode> 
     <validation-mode>CALLBACK</validation-mode> 
     <properties> 
      <property name="hibernate.ejb.cfgfile" value="hibernate.cfg.mysql.xml" /> 
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider" /> 
     </properties> 
    </persistence-unit> 
</persistence> 
+0

Можете ли вы обновить свой вопрос с помощью 'persistence.xml', который содержит блок персистентности AutreSQL? Если оба находятся в одном и том же 'persistence.xml', выведите весь файл' persistence.xml'. Благодарю. –

+0

Да, ниже persistance.xml. – Kikou

+0

вы можете удалить ответ, я редактировал ваш вопрос с помощью 'persistence.xml'. Все нормально. Когда вы запускаете тест, запускается только DB2? Потому что оба будут выпущены ... –

ответ

0

Оба устройства сохранения используют s ame data-source, поэтому, когда источник данных был изменен, он работает.

Смежные вопросы