我在Wildfly 10.1中遇到基于容器的数据源的问题“没有正在进行的事务”。
有我的设置:
<datasource jta="true" jndi-name="java:jboss/datasources/MY_DATASOURCE" pool-name="MY_DATASOURCE_POOL" enabled="true" use-java-context="true" use-ccm="true" statistics-enabled="true">
<connection-url>jdbc:postgresql://localhost:5432/test</connection-url>
<driver>postgresql</driver>
<transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
<pool>
<min-pool-size>50</min-pool-size>
<max-pool-size>150</max-pool-size>
</pool>
<security>
<user-name>test</user-name>
<password>test</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>true</background-validation>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
</validation>
</datasource>
我们不使用persistence.xml,所以它是我的 hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQL95Dialect</property>
<property name="hibernate.transaction.jta.platform">org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!-- Configuration for multitenancy separate database support -->
<property name="hibernate.multiTenancy">DATABASE</property>
<property name="hibernate.tenant_identifier_resolver">org.example.TenantResolver</property>
</session-factory>
</hibernate-configuration>
我还添加 apache-deltaspike.properties 文件
globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy=org.apache.deltaspike.jpa.impl.transaction.ContainerManagedTransactionStrategy
也用于在容器中提供事务策略支持。但不幸的是,在我的 @Stateless 服务中,我仍然没有交易。有人能给我一个建议,我的配置有什么问题吗?
答案 0 :(得分:0)
确保添加行
<property name="hibernate.transaction.coordinator_class">jta</property>
在hibernate.cfg.xml中,你的类路径中也有 javax.interceptor.InvocationContext 的实现,与我的情况相同。