Выбранная стратегия транзакций требует доступа к JTA TransactionManager - PullRequest
0 голосов
/ 15 ноября 2018

Подробности: -

  • Сборка и развертывание в openJDK 8
  • Spring - 3.1.1.RELEASE
  • Hibernate - 3.6.9.Final
  • Сервер Wildfly - 8.0.0.Final

Ошибка: -

15:25:22,969 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 53) MSC000001: Failed to start service jboss.persistenceunit."test.war#org.jbpm.persistence.jpa.test": org.jboss.msc.service.StartException in service jboss.persistenceunit."test.war#org.jbpm.persistence.jpa.test": javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.persistence.jpa.test] Unable to build EntityManagerFactory
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:172) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final]
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:117) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final]
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.8.0_181]
at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:474)
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:182) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_181]
at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_181]
at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.0.0.GA.jar:2.0.0.GA]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.persistence.jpa.test] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915) [hibernate-entitymanager-3.6.9.Final.jar:3.6.9.Final]
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74) [hibernate-entitymanager-3.6.9.Final.jar:3.6.9.Final]
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:318) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final]
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.access$1100(PersistenceUnitServiceImpl.java:67) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final]
at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:167) [wildfly-jpa-8.0.0.Final.jar:8.0.0.Final]
... 8 more
Caused by: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:390) [hibernate-core-3.6.9.Final.jar:3.6.9.Final]
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1872) [hibernate-core-3.6.9.Final.jar:3.6.9.Final]
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:906) [hibernate-entitymanager-3.6.9.Final.jar:3.6.9.Final]
... 12 more

15:25:22,993 ERROR [org.jboss.as.controller.management-operation] (XNIO-1 task-9) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "Test-8.21.war")]) - failure description: {"JBAS014671: Failed services" => {
"jboss.persistenceunit.\"test.war#org.jbpm.task.test\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"test.war#org.jbpm.task.test\": javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.task.test] Unable to build EntityManagerFactory
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.task.test] Unable to build EntityManagerFactory
Caused by: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager",
"jboss.persistenceunit.\"test.war#org.jbpm.persistence.jpa.test\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"test.war#org.jbpm.persistence.jpa.test\": javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.persistence.jpa.test] Unable to build EntityManagerFactory
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.persistence.jpa.test] Unable to build EntityManagerFactory
Caused by: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager"
 }}
15:25:22,995 ERROR [org.jboss.as.server] (XNIO-1 task-9) JBAS015870: Deploy of deployment "test.war" was rolled back with the following failure message: 
{"JBAS014671: Failed services" => {
"jboss.persistenceunit.\"test.war#org.jbpm.task.test\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"test.war#org.jbpm.task.test\": javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.task.test] Unable to build EntityManagerFactory
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.task.test] Unable to build EntityManagerFactory
Caused by: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager",
"jboss.persistenceunit.\"test.war#org.jbpm.persistence.jpa.test\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"test.war#org.jbpm.persistence.jpa.test\": javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.persistence.jpa.test] Unable to build EntityManagerFactory
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: org.jbpm.persistence.jpa.test] Unable to build EntityManagerFactory
Caused by: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager"
}}

Persistence.xml: -

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<persistence version="1.0"
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
                             http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
                             http://java.sun.com/xml/ns/persistence/orm 
                             http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
         xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/persistence">
 <persistence-unit name="org.jbpm.persistence.jpa.test" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:jboss/datasources/MSQLDS</jta-data-source>
    <mapping-file>META-INF/JBPMorm.xml</mapping-file>
    <mapping-file>META-INF/ProcessInstanceInfo.hbm.xml</mapping-file>
    <class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class>
    <class>org.drools.persistence.info.SessionInfo</class>
    <class>org.drools.persistence.info.WorkItemInfo</class>        
 </persistence-unit>
 <persistence-unit name="org.jbpm.task.test">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <mapping-file>META-INF/Taskorm.xml</mapping-file>
    <class>org.jbpm.task.Attachment</class>
    <class>org.jbpm.task.Content</class>
    <class>org.jbpm.task.BooleanExpression</class>
    <class>org.jbpm.task.Comment</class>
    <class>org.jbpm.task.Deadline</class>
    <class>org.jbpm.task.Comment</class>
    <class>org.jbpm.task.Deadline</class>
    <class>org.jbpm.task.Delegation</class>
    <class>org.jbpm.task.Escalation</class>
    <class>org.jbpm.task.Group</class>
    <class>org.jbpm.task.I18NText</class>
    <class>org.jbpm.task.Notification</class>
    <class>org.jbpm.task.EmailNotification</class>
    <class>org.jbpm.task.EmailNotificationHeader</class>
    <class>org.jbpm.task.PeopleAssignments</class>
    <class>org.jbpm.task.Reassignment</class>
    <class>org.jbpm.task.Status</class>
    <class>org.jbpm.task.Task</class>
    <class>org.jbpm.task.TaskData</class>
    <class>org.jbpm.task.SubTasksStrategy</class>
    <class>org.jbpm.task.OnParentAbortAllSubTasksEndStrategy</class>
    <class>org.jbpm.task.OnAllSubTasksEndParentEndStrategy</class>
    <class>org.jbpm.task.User</class>        
 </persistence-unit>
</persistence>

Applicationcontext.xml:-

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:p="http://www.springframework.org/schema/p"
   xmlns:util="http://www.springframework.org/schema/util"

   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
      http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
">  
<util:properties id="messages" location="classpath:messages.properties"/>
<util:properties id="fmsproperties" location="classpath:fms.properties"/>

<aop:aspectj-autoproxy proxy-target-class="true"/>
<bean id="taskService" class="com.test.workflow.services.TaskServiceImpl"/>
<bean id="taskManagement" class="com.test.workflow.engine.TaskManagementImpl"/>
<bean id="humanTaskHandler" class="com.test.workflow.engine.LocalHTWorkItemHandler"/>
<bean id="taskAspect" class="com.test.aspects.TaskNotificationAspect"/>
<bean id="userAspect" class="com.test.aspects.UserNotificationAspect"/>
<bean id="customerStatusAspect" class="com.test.aspects.CustomerStatusAspect"/>
<bean id="processAspect" class="com.test.aspects.ProcessNotificationAspect"/>
<bean id="configMap" class="java.util.HashMap" />

<context:component-scan base-package="com.test" use-default-filters="false">
    <context:include-filter expression="org.springframework.stereotype.Service" type="annotation" />
    <context:include-filter expression="org.springframework.stereotype.Component" type="annotation" />
    <context:include-filter expression="org.springframework.stereotype.Repository" type="annotation" />
</context:component-scan>

<util:properties id="system">
    <prop key="mqhost">${mq.host}</prop>
    <prop key="mqusername">${mq.username}</prop>
    <prop key="mqpassword">${mq.password}</prop>
    <prop key="mqvirtualhost">${mq.virtualhost}</prop>
    <prop key="mqexchange">${mq.exchange}</prop>
    <prop key="mqbaseroute">${mq.baseroute}</prop>
    <prop key="mqqueue">${mq.queue}</prop>
    <prop key="materialrevisesdefaultvalue">${materialRevises.defaultValue}</prop>
    <prop key="orderrevisesdefaultvalue">${orderRevises.defaultValue}</prop>
    <prop key="articleAutoCompleteProcess">${articleAutoCompleteProcess}</prop>
    <prop key="issueAutoCompleteProcess">${issueAutoCompleteProcess}</prop>
    <prop key="rabbitmqErrorFile">${rabbitmqErrorFile}</prop>
    <prop key="isFigUpdate">${isFigUpdate}</prop>
    <prop key="isUpdateRequiredTaskList">${isUpdateRequiredTaskList}</prop>
    <prop key="openOnExpireJobFlow">${openOnExpireJobFlow}</prop>
    <prop key="openOnExpireJobProcess">${openOnExpireJobProcess}</prop>
    <prop key="autoBookingStages">${autoBookingStages}</prop>
    <prop key="recopyOptionsStageList">${recopyOptionsStageList}</prop>
    <prop key="intermediateUploadPath">${intermediateUploadPath}</prop>
    <prop key="location">${location}</prop>
    <prop key="issueCPCJobflowStageList">${issueCPCJobflowStageList}</prop>
    <prop key="intermediateDownloadToPath">${intermediateDownloadToPath}</prop>
    <prop key="taskStatus">${taskStatus}</prop>
    <prop key="initiateStageList">${initiateStageList}</prop>
    <prop key="initiateStageName">${initiateStageName}</prop>
    <prop key="awsAccessKeyId">${aws.access.key.id}</prop>
    <prop key="awsSecretAccessKey">${aws.secret.access.key}</prop>
    <prop key="awsEndpoint">${aws.endpoint}</prop>
    <prop key="sqsQueue">${sqs.queue}</prop>
    <prop key="isSQS">${isSQS}</prop>
    <prop key="isRequeueRequired">${isRequeueRequired}</prop>
    <prop key="requeueMaxCount">${requeueMaxCount}</prop>
    <prop key="requeueMaxTime">${requeueMaxTime}</prop>
    <prop key="intermediateDownloadToPath">${intermediateDownloadToPath}</prop>
    <prop key="sqsProduceMsgEndRouteKeys">${sqsProduceMsgEndRouteKeys}</prop>
    <prop key="encryptionKey">${encryptionKey}</prop>
    <prop key="currentJobFlow">${currentJobFlow}</prop>
    <prop key="previousJobFlow">${previousJobFlow}</prop>
    <prop key="isStatusCheckRequired">${isStatusCheckRequired}</prop>
    <prop key="encryptedProperties">${encryptedProperties}</prop>
</util:properties>

<bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource"
      p:driverClassName="${jdbc.driver}"
      p:url="${jdbc.url}"
      p:username="${jdbc.username}"
      p:password="${jdbc.password}" />

<!--    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"
      p:driverClass="${jdbc.driver}" p:jdbcUrl="${jdbc.url}"
      p:user="${jdbc.username}" p:password="${jdbc.password}"

      p:acquireIncrement="1" 
      p:checkoutTimeout="3000"
      p:idleConnectionTestPeriod="5"           
      p:maxIdleTime="3" 
      p:maxIdleTimeExcessConnections="1" 
      p:maxPoolSize="20" p:maxStatements="20000" p:maxStatementsPerConnection="1000" 
      p:minPoolSize="1" 
      p:numHelperThreads="1000"
      p:overrideDefaultUser="${jdbc.username}" p:overrideDefaultPassword="${jdbc.password}"
      p:propertyCycle="3"
      p:testConnectionOnCheckin="true" />-->

<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate">
    <property name="dataSource" ref="dataSource"/>
</bean>

<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource">
        <ref local="dataSource"/>
    </property>
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration"/>
    <property name="packagesToScan">
        <list>
            <value>com.test.filemanagement.domain</value>
            <value>com.test.usermanagement.domain</value>
            <value>com.test.workflow.domain</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.hbm2ddl.auto">validate</prop>
            <!-- <prop key="hibernate.show_sql">${jdbc.hibernate.show_sql}    </prop> -->

            <!--<prop key="hibernate.show_sql">true</prop>-->

            <prop key="hibernate.show_sql">false</prop>

        </props>
    </property>
    <property name="eventListeners">
        <map>
            <entry key="pre-update">
                <bean class="com.test.hibernate.PreUpdateDateListener" />
            </entry>
            <entry key="pre-insert">
                <bean class="com.test.hibernate.PreInsertDateListener" />
            </entry>
        </map>
    </property>
</bean>

<!-- Hibernate Template -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory">
        <ref local="sessionFactory"/>
    </property>
    <property name="flushModeName" value="FLUSH_COMMIT" />
</bean>

<bean id="validatorFactory" class="javax.validation.Validation"
      factory-method="buildDefaultValidatorFactory" />

<bean id="validator" factory-bean="validatorFactory"
      factory-method="getValidator" />

<bean id="inflector" class="org.modeshape.common.text.Inflector"
      factory-method="getInstance" />


<beans profile="test">
<context:property-placeholder ignore-resource-not-found="true" location="classpath:pack.test.properties,file:///test/data/prop/pack.test.properties"/>
<bean id="jbpmEmf" class="javax.persistence.Persistence" factory-method="createEntityManagerFactory">
    <constructor-arg>
        <value>org.jbpm.persistence.jpa.test</value>
    </constructor-arg>
    <constructor-arg>
        <map>
            <entry key="hibernate.max_fetch_depth" value="3"> </entry>
            <entry key="hibernate.hbm2ddl.auto" value="validate"> </entry>
            <entry key="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"> </entry>
            <entry key="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"> </entry>
            <entry key="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"> </entry>
            <entry key="jboss.as.jpa.providerModule" value="application"> </entry>
        </map>
    </constructor-arg>
</bean>
<bean id="taskEmf" class="javax.persistence.Persistence" factory-method="createEntityManagerFactory">
    <constructor-arg>
        <value>org.jbpm.task.test</value>
    </constructor-arg>
    <constructor-arg>  
        <map>  
            <entry key="hibernate.max_fetch_depth" value="3"> </entry>
            <entry key="hibernate.hbm2ddl.auto" value="validate"></entry>
            <entry key="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"></entry>
            <entry key="hibernate.connection.url"  value="${hibernate.connection.url}"></entry>  
            <entry key="hibernate.connection.username" value="${hibernate.connection.username}"></entry>  
            <entry key="hibernate.connection.password" value="${hibernate.connection.password}"></entry>
            <entry key="hibernate.show_sql" value="true"></entry>
            <entry key="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"></entry>
            <entry key="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"></entry>
            <entry key="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider"></entry>
            <entry key="hibernate.c3p0.max_size" value="200"></entry>
            <entry key="hibernate.c3p0.min_size" value="10"></entry>
            <entry key="hibernate.c3p0.acquire_increment" value="100"></entry>
            <entry key="hibernate.c3p0.idle_test_period" value="120"></entry>
            <entry key="hibernate.c3p0.max_statements" value="2000"></entry>
            <entry key="hibernate.c3p0.timeout" value="60"></entry>
            <entry key="hibernate.c3p0.validate" value="true"></entry>
            <entry key="hibernate.c3p0.unreturnedConnectionTimeout" value="600"></entry>
            <entry key="hibernate.c3p0.debugUnreturnedConnectionStackTraces" value="true"></entry>
            <entry key="jboss.as.jpa.providerModule" value="application"> </entry>  
        </map>
    </constructor-arg>
</bean>
<bean id="jbpmTransactionManager" class="com.test.workflow.engine.BeanFactory" factory-method="createJBossTransactionManager">
</bean>
<bean id="hornetQ" class="com.test.workflow.engine.BeanFactory" factory-method="getAPIQueueName"/>
<tx:annotation-driven transaction-manager="txManager" proxy-target-class="true" />
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

Кроме того, если я перемещу свойство единицы персистентности в applicationContext.xml в файл persistence.xml.Работает нормально.

Я бы хотел устранить эту ошибку.Есть предложения?

...