2012-06-07 2 views
0

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이다.

아무에게도 도움을 줄 수 없습니까?

미리 감사드립니다.

답변

0
<bean id="transactionManager" 
    class="org.springframework.transaction.jta.JtaTransactionManager"> 
    <property name="transactionManagerName" value="java:jboss/TransactionManager" /> 
    <property name="userTransactionName" value="java:comp/UserTransaction" /> 
    </bean> 

<tx:annotation-driven transaction-manager="transactionManager" /> 


<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /> 

오류 메시지를 지정하지 않았습니다. 구성 파일에이 행을 추가 할 수 있습니다.

관련 문제