【问题标题】:StandAlone CDI + JTA Without JNDI不带 JNDI 的独立 CDI + JTA
【发布时间】:2016-10-27 12:11:59
【问题描述】:

我在独立应用程序中使用 CDI + DeltaSpike + Camel。

这是我目前的设置:

persistence.xml

<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="primary" transaction-type="RESOURCE_LOCAL">
    <shared-cache-mode>DISABLE_SELECTIVE</shared-cache-mode>
</persistence-unit>

EntityManagerFactoryProducer 上的自定义属性:

properties.put("hibernate.connection.provider_class", "org.example.HikariConnectionProvider");

我将 DeltaSpike JPA 事务与 (https://deltaspike.apache.org/documentation/jpa.html) 一起使用:

  • org.apache.deltaspike.jpa.api.transaction.TransactionScoped;
  • org.apache.deltaspike.jpa.api.transaction.Transactional;

我想使用 Infinispan 来同步我的应用缓存。 根据 Infinispan 文档:

“强烈建议Hibernate配置JTA事务”

如何使用 JTA 事务? 我试图将“RESOURCE_LOCAL”更改为“JTA”,但我不明白我应该配置什么:

  • hibernate.transaction.factory_class
  • hibernate.transaction.jta.platform

我没有使用 JNDI,而且我不在应用服务器中。

另外,我想使用 @javax.transaction.Transactional 而不是 DeltaSpike。

【问题讨论】:

    标签: java hibernate jpa transactions cdi


    【解决方案1】:

    本质上,您问的是如何在不使用 Java EE 容器的情况下使用大多数 Java EE 功能。

    当然,您可以将诸如 Atomikos 之类的 JTA 实现嵌入到“独立”应用程序中。

    另一方面,从一个成熟的 Java EE 环境开始,然后忽略或排除任何您不需要的东西,可能会容易得多。

    如今,应用程序服务器相当轻量级,如果您必须拥有独立的可执行文件,那么请查看 WildFly Swarm 或 Payara Micro。

    【讨论】:

      猜你喜欢
      • 2016-03-24
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多