0

私は現在、EJB 3.0(ステートレスSB)、JPA(プロバイダーとしてのHibernate)、トランザクションマネージャーとしてのJTAを含むプロジェクトに取り組んでいます。アプリサーバーはJBossAS7です。SpringはEJBとJPAの統合に使用されます。

EJBで発生する例外がある場合を除いて、すべてが正常に機能しているように見えます。永続性ユニットはSpringによって閉じられます。その後の要求で、永続性ユニットが再度作成されますが、これには時間がかかり、理想的な状況では発生しないはずです。

以下は構成の詳細です

persistence.xml

<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-datasourceに設定する役割を果たします。

誰かがこれについて何か助けを提供できますか?

前もって感謝します。

4

2 に答える 2

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

エラー メッセージを指定していません。これらの行を構成ファイルに追加できます。

于 2014-04-22T08:41:10.353 に答える