簡體   English   中英

獨立的CDI +沒有JNDI的JTA

[英]StandAlone CDI + JTA Without JNDI

我在獨立應用程序中使用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 Transaction與( https://deltaspike.apache.org/documentation/jpa.html )配合使用:

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

我想使用Infinispan同步我的應用程序緩存。 根據Infinispan doc:

“強烈建議為Hibernate配置JTA事務”

如何使用JTA交易? 我試圖將“ RESOURCE_LOCAL”更改為“ JTA”,但我不知道該為什么配置:

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

我沒有使用JNDI,並且不在應用程序服務器中。

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

本質上,您在詢問如何在不使用Java EE容器的情況下使用大多數Java EE功能。

當然,您可以將JTA實現(例如Atomikos)嵌入“獨立”應用程序中。

另一方面,從功能完善的Java EE環境開始,然后忽略或排除不需要的內容可能會容易得多。

如今,應用程序服務器非常輕巧,如果您需要一個自包含的可執行文件,請查看WildFly Swarm或Payara Micro。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM