gpt4 book ai didi

java - H2 数据库/Bitronix 不带 Java EE

转载 作者:行者123 更新时间:2023-12-01 04:19:31 26 4
gpt4 key购买 nike

为了进行简单的功能测试(遵循教程),我尝试使用 Bitronix 和 H2 内存数据库设置原始 JTA 环境。该测试应该在简单的 Java 应用程序中作为单元测试运行(没有 Java EE、没有服务器等)

不幸的是,我无法运行它,这是我的设置:

  1. 我按照教程添加了一些 jar(通过 Maven):

    • btm、h2、hibernate-entitymanager 和 hibernate-jpa-2.0-api
  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.properties:java.naming.factory.initial=bitronix.tm.jndi.BitronixInitialContextFactory

问题是:我得到这个堆栈:

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
[...]

所以这里肯定出了问题。你能帮我吗?

最佳答案

我可以通过使用 Hibernate 3.x 而不是 4.x 来解决这个问题 -> 某些东西一定已经改变了,但我没有进一步调查。

关于java - H2 数据库/Bitronix 不带 Java EE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19093482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com