读书人

spring+hibernate+jpa配置JTA事务出错

发布时间: 2012-10-08 19:54:56 作者: rapoo

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>

>

读书人网 >软件架构设计

热点推荐