Данные DeltaSpike и JTA не работают

У меня возникла проблема "транзакция не выполняется" для источника данных на основе контейнера в 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 у меня до сих пор нет транзакций. Может ли кто-нибудь дать мне совет, что не так с моей конфигурацией?


person ZaptoS    schedule 18.11.2016    source источник


Ответы (1)


Убедитесь, что вы добавили строку

   <property name="hibernate.transaction.coordinator_class">jta</property>

в hibernate.cfg.xml, а также у вас есть реализация javax.interceptor.InvocationContext в вашем пути к классам в том же случае, что и у меня.

person ZaptoS    schedule 23.11.2016