2016-11-18 2 views
0

J'ai un problème « aucune transaction est en cours » pour source de données basée sur les conteneurs en wildfly 10.1.DeltaSpike données et JTA ne fonctionne pas

Il y a mes paramètres:

<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> 

Nous n'utilisons persistence.xml, il est donc mon 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> 

J'ai aussi ajouté apache-deltaspike .properties fichier avec la ligne

globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy=org.apache.deltaspike.jpa.impl.transaction.ContainerManagedTransactionStrategy 

pour fournir un soutien de la stratégie de transaction dans le conteneur, aussi. Mais malheureusement, dans mon un service @Stateless Je n'ai toujours pas de transactions. Quelqu'un pourrait me donner un conseil qui ne va pas avec ma configuration?

Répondre

0

Assurez-vous que vous ajoutez la ligne

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

dans hibernate.cfg.xml et aussi vous avez la mise en œuvre de javax.interceptor.InvocationContext dans votre classpath dans le même cas que le mien.