spring+hibernate+jpa配置JTA事务出错,如何解决?

我使用了spring3.0+hibernate3.3.2+JPA,其中JPA的事务采用JTA的方式,部署在weblogic10.3.2中,但是无法成功初始化,我知道问题出在JTA的配置中,JNDI数据源我也在Weblogic中配置了,但项目还是无法初始化,下面是异常信息:

 <2010-3-15 下午08时46分09秒 CST> <Error> <Deployer> <BEA-149205> <Failed to initialize the application '_appsdir_sshdj2_dir' due to error weblogic.application.ModuleException: Failed to load webapp: 'sshdj2'.
weblogic.application.ModuleException: Failed to load webapp: 'sshdj2'
 at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:378)
 at weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:176)
 at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
 at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:391)
 at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:83)
 Truncated. see log file for complete stacktrace

Caused By: org.hibernate.HibernateException: The chosen transaction strategy requires access to the JTA TransactionManager
 at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:371)
 at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341)
 at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
 at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)
 at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:132)
 Truncated. see log file for complete stacktrace

 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

具体配置如下:

persitence.xml:

<?xml version="1.0" encoding="UTF-8"?>

<persistence xmlns="http://java.sun.com/xml/ns/persistence"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence

    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"

    version="1.0">

 

    <persistence-unit name="sshdj" transaction-type="JTA">

       <provider>org.hibernate.ejb.HibernatePersistence</provider>

        <jta-data-source>jdbc/mysqlDatasource</jta-data-source>

       <properties>

           <property name="dialect" value="tool.HibernateForMySQLDialect" />

           <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />

           <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/sshd2" />

           <property name="hibernate.connection.username" value="root" />

           <property name="hibernate.connection.password" value=".456852QWEQAZ" />

           <property name="hibernate.hbm2ddl.auto" value="update" />

           <property name="hibernate.show_sql" value="true" />

           <property name="transaction.manager_lookup_class" value="org.hibernate.transaction.WeblogicTransactionManagerLookup" />       

       </properties>

    </persistence-unit>

</persistence>

 

 

application-config.xml:

 

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"

    xmlns:security="http://www.springframework.org/schema/security" xmlns:jee="http://www.springframework.org/schema/jee" 

    xsi:schemaLocation="

            http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd

            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd

           http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

           http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd">

 

    <jee:jndi-lookup id="dataSource" jndi-name="jdbc/mysqlDatasource" />

    <tx:jta-transaction-manager/>

    <!-- 配置entityManagerFactory-->

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">

        <property name="dataSource" ref="dataSource"/>

       <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />

        <property name="persistenceUnitName" value="sshdj" />

       <property name="loadTimeWeaver" >

           <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />

       </property>

    </bean>

 

    <!-- 配置事务 -->

    <bean id="transactionManager" class="org.springframework.transaction.jta.WeblogicJtaTransactionManager">

       <property name="entityManagerFactory" ref="entityManagerFactory" />

    </bean>

 

    <!-- 配置事务的传播特性 -->

    <tx:advice id="txAdvice" transaction-manager="transactionManager">

       <tx:attributes>

           <tx:method name="*" propagation="REQUIRED" />

       </tx:attributes>

    </tx:advice>

 

    <!-- 那些类的哪些方法参与事务 -->

    <aop:config>

       <aop:advisor pointcut="execution(* hibernate.dao.impl.*.*(..))"

           advice-ref="txAdvice" />

    </aop:config>

   

    <!--使用Spring注解功能 -->

    <context:annotation-config />

   

</beans>

>

你可能感兴趣的:(spring,AOP,Hibernate,weblogic,jpa)