2013-09-30 4 views
1

Для простой проверки функциональности (после учебника) я пытаюсь настроить примитивную среду JTA с базой данных Bitronix и H2 в памяти. тест должен работать как Test Unit в простой Java Application (без Java EE, не сервер и т.д.)База данных H2/Bitronix без Java EE

К сожалению, я не получаю его запустить, вот моя установка:

  1. Я добавил некоторые банки (через мавена) после урока:

    • BTM, h2, спящий режим-EntityManager и спящий режим JPA-2,0-апи-
  2. Я добавил persistence.xml, hibernate.cfg.xml и файл jndi.properties в путь к классам.

  3. В методе испытаний (грязный ...) Я ставлю этот код:

    PoolingDataSource ds = new PoolingDataSource(); 
    ds.setUniqueName("jdbc/BitronixJTADataSource"); 
    ds.setClassName("org.h2.jdbcx.JdbcDataSource"); 
    ds.setMaxPoolSize(3); 
    ds.setAllowLocalTransactions(true); 
    ds.getDriverProperties().put("user", "sa"); 
    ds.getDriverProperties().put("password", "sasa"); 
    ds.getDriverProperties().put("URL", "jdbc:h2:mem:mydb"); 
    ds.init(); 
    
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.persistence.jpa"); 
    

И это мой persistence.xml конфигурации:

<persistence-unit name="org.persistence.jpa" transaction-type="JTA"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <jta-data-source>jdbc/BitronixJTADataSource</jta-data-source> 
    <class>org.drools.persistence.info.SessionInfo</class> 
    <class>org.drools.persistence.info.WorkItemInfo</class> 
    <properties> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect" /> 
     <property name="hibernate.max_fetch_depth" value="3" /> 
     <property name="hibernate.hbm2ddl.auto" value="update" /> 
     <property name="hibernate.show_sql" value="true" /> 
     <property name="hibernate.jndi.class" value="bitronix.tm.jndi.BitronixInitialContextFactory"/> 
     <property name="hibernate.transaction.manager_lookup_class" 
      value="org.hibernate.transaction.BTMTransactionManagerLookup" /> 
    </properties> 
</persistence-unit> 

И JNDI. свойства: java.naming.factory.initial = bitronix.tm.jndi.BitronixInitialContextFactory

Проблема is: Я получаю этот стек:

javax.persistence.PersistenceException: [PersistenceUnit: org.drools.persistence.jpa] Unable to build EntityManagerFactory 
[...] 
Caused by: org.hibernate.service.jndi.JndiException: Error parsing JNDI name [jdbc/BitronixJTADataSource] 
[...] 
Caused by: javax.naming.OperationNotSupportedException 
[...] 

Так что, конечно, что-то не так. Вы можете мне помочь?

ответ

1

Я мог бы решить это, используя Hibernate 3.x вместо 4.x -> что-то должно было измениться, но я не исследовал дальше.

-1

«Я мог бы решить это, используя Hibernate 3.x вместо 4.x -> что-то должно было измениться, но я не исследовал дальше».

Под «возможно» вы подразумеваете «Я думаю», или вы имеете в виду, что вы получили его для работы с Hibernate 3.x?

+0

извините, пожалуйста, удалите его, используя hibernate 3.x – Alex