EJB 3.0 (상태 비 저장 SB), JPA (공급자로서의 최대 절전 모드), 트랜잭션 관리자 인 JTA가 포함 된 프로젝트에서 현재 작업 중입니다. 응용 프로그램 서버는 JBoss AS 7입니다. Spring은 EJB와 JPA를 통합하는 데 사용됩니다.EJB 3.0 -> Spring -> JPA (트랜잭션 관리자와 JTA)
EJB에서 발생하는 예외가있는 경우를 제외하고 모두 지속적인 단위가 Spring에 의해 닫히는 것을 제외하면 모두 잘 작동하는 것처럼 보입니다. 후속 요청에서, 지속성 단위가 다시 생성되며, 이는 시간 소모적이며 또한 이상적인 상황에서 발생해서는 안됩니다.
다음은 구성 세부
<persistence-unit name="test" transaction-type="RESOURCE_LOCAL">
<class>com.test.User</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
</properties>
</persistence-unit>
spring-application-context.xml
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
<jee:jndi-lookup id="dataSource" jndi-name="java:/datasources/test" />
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="generateDdl" value="false" />
<property name="database" value="MYSQL" />
<property name="showSql" value="true" />
<property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect"/>
</bean>
</property>
<property name="jpaPropertyMap">
<map>
<entry key="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"></entry>
<entry key="hibernate.current_session_context_class" value="jta" />
<entry key="hibernate.connection.release_mode" value="auto" />
</map>
</property>
<property name="persistenceUnitPostProcessors">
<list>
<bean class="com.transaction.processor.JtaPersistenceUnitPostProcessor">
<property name="jtaMode" value="true"/>
<property name="jtaDataSource" ref="dataSource"/>
</bean>
</list>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManagerName" value="java:/TransactionManager"></property>
<property name="autodetectUserTransaction" value="false"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
클래스 JtaPersistenceUnitPostProcessor는 JTA로 트랜잭션 유형과 JTA - 데이터 소스에 대한 데이터 소스를 설정하기위한 책임이
의 persistence.xml이다.
아무에게도 도움을 줄 수 없습니까?
미리 감사드립니다.