`

jotm跨数据库 事务

阅读更多
jotm跨数据库 spring + hibernate


软件包
ow2-jotm-dist-2.1.9-bin.tar.gz
spring-framework-3.0.5.RELEASEhibernate-3.6.0.Final
hibernate-3.6.0.Final

spring和hibernate不再详述,讲讲jotm如何与spring集成
web开发中,使用hibernate的SessionFactory,而在SessionFactory中注入DataSource
DataSource需要支持事务,因此采用软件包ow2-jotm-dist-2.1.9-bin.tar.gz中的xapool.jar包来配置DataSource,放弃了org.springframework.jdbc.datasource.DriverManagerDataSource

配置jta事务管理器JtaTransactionManager
重点<property name="userTransaction" ref="jotm" />
Java代码  收藏代码

    <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean" /> 
        <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> 
            <property name="userTransaction" ref="jotm" /> 
            <property name="allowCustomIsolationLevels" value="true"></property> 
        </bean> 




数据源配置(DataSource)
重点<property name="transactionManager" ref="jotm" />
Java代码  收藏代码

    //1号数据库 
    <bean id="dataSource1" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> 
            <property name="dataSource"> 
                <bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> 
                    <property name="transactionManager" ref="jotm" /> 
                    <property name="driverName" value="com.mysql.jdbc.Driver" /> 
                    <property name="url" value="jdbc:mysql://127.0.0.1:3306/db1?characterEncoding=utf-8" /> 
                </bean> 
            </property> 
            <property name="user" value="root" /> 
            <property name="password" value="" /> 
        </bean> 
     
    //2号数据库 
    <bean id="dataSource2" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> 
            <property name="dataSource"> 
                <bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> 
                    <property name="transactionManager" ref="jotm" /> 
                    <property name="driverName" value="com.mysql.jdbc.Driver" /> 
                    <property name="url" value="jdbc:mysql://127.0.0.1:3306/db2?characterEncoding=utf-8" /> 
                </bean> 
            </property> 
            <property name="user" value="root" /> 
            <property name="password" value="" /> 
        </bean> 



SessionFactory配置
重点<property name="dataSource" ref="dataSource1" />
重点<property name="dataSource" ref="dataSource2" />
Java代码  收藏代码

    //1号SessionFactory 
    <bean id="sessionFactory1" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
            <property name="hibernateProperties"> 
                <props> 
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
                </props> 
            </property> 
            <property name="dataSource" ref="dataSource1" /> 
            <property name="packagesToScan" value="com.yuce.test.entity"/> 
        </bean> 
     
    //2号SessionFactory 
    <bean id="sessionFactory2" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
            <property name="hibernateProperties"> 
                <props> 
                    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
                </props> 
            </property> 
            <property name="dataSource" ref="dataSource2" /> 
            <property name="packagesToScan" value="com.yuce.test.entity"/> 
        </bean> 



附录
jotm必须的jar包
Java代码  收藏代码

    xapool.jar 
    jotm-core.jar 
    carol.jar 
    carol-interceptors.jar 




后记:
在使用spring的    进行跨数据库测试的时候没有问题,而在发布web的时候,启动始终都报异常javax.resource.spi.XATerminator找不到,查看类库的时候发现该类就在javaee.jar中,但发布的时候始终找不到。后来发现,这是由于在MyEclipse发布web的时候,设置项目->属性->Order and Export中没有将javaee.jar等jar包发布到web中,于是勾选该jar包,但测试仍然不能成功。
最后将javaee.jar包copy到tomcat是lib目录中,启动tomcat进行测试,一切正常。
暂时好不知道为什么设置了Order and Export也不能行的原因,只是知道在MyEclipse在打包发布的时候也不是完全可信的。切记。

转自:http://www.iteye.com/topic/1018356
分享到:
评论

相关推荐

    使用JOTM实现分布式事务管理(多数据源)

    在多数据源环境中,JOTM可以帮助我们处理复杂的事务边界,保证在不同的数据库或服务之间的一致性,即使在出现故障时也能正确回滚。 首先,我们需要理解JTA的核心概念。JTA定义了一套标准接口,允许应用程序透明地...

    Spring+JOTM 分布式事务管理

    JOTM支持XAResource,使得它可以与其他数据库系统、消息队列等资源适配器协同工作,实现跨多个资源的分布式事务。 **3. 集成Spring与JOTM:** 要将JOTM集成到Spring中,首先需要在项目中引入JOTM的依赖。通常,这...

    spring+jotm 多数据源事务管理(二)hibernate

    然后,你可以使用`HibernateTransactionManager`,但要注意将其与JOTM的事务管理器配合使用,以确保跨数据源的事务一致性。 总结来说,Spring结合JOTM和Hibernate进行多数据源事务管理,主要涉及以下几个步骤:配置...

    跨多个数据库操作,同时连接多个的数据库,同时操作

    这通常涉及到跨数据库操作和分布式事务处理,确保数据的一致性和完整性。以下是一些关于这个主题的重要知识点: 1. **JTA(Java Transaction API)**:JTA是Java平台中用于处理分布式事务的标准API。它允许应用程序...

    spring + JTA + JOTM实现分布式事务

    JTA是Java平台的标准事务API,它允许应用程序进行跨多个数据源(如数据库或消息队列)的全局事务处理。通过JTA,开发者可以编写不关心具体事务管理细节的代码,这样就提高了代码的可移植性和可维护性。 JOTM则是JTA...

    jotm2.0最新源码包

    5. **XAResource接口**:JOTM与数据库或者其他资源管理系统交互是通过实现XAResource接口来完成的。理解这个接口的实现,有助于你在自己的项目中集成其他资源。 6. **性能优化**:JOTM源码还包含了各种性能优化措施...

    JOTM开发所需jar包

    在实际开发中,这些JAR文件会被添加到项目的类路径中,以支持JOTM的功能,例如处理跨数据库的事务一致性、管理数据源连接池以及实现定时任务等。理解每个JAR的作用并正确配置,对于成功集成JOTM到项目中至关重要。...

    JOTM jar包

    4. **可扩展性**:JOTM支持多种事务资源,如数据库、JMS队列、文件系统等,并且可以方便地添加新的事务资源适配器。 5. **容错性和恢复能力**:JOTM具备事务日志记录功能,即使在系统故障后,也能进行事务恢复,...

    跨多个数据库操作,同时连接两个一上的数据库,用事物关联起来

    总的来说,跨多个数据库操作需要精细的事务管理,JTA提供了一个强大的解决方案,而Spring框架则简化了这个过程,使得开发者能够在各种环境下高效地处理多数据库事务。理解和熟练运用这些技术,对于构建健壮的、高...

    spring JTA集成JOTM或Atomikos配置分布式事务(Tomcat应用服务器)

    在IT行业中,分布式事务处理是复杂系统架构中的一个重要环节,特别是在多数据库或者微服务环境中。...通过上述步骤,开发者能够在Tomcat应用服务器上实现跨数据库的事务一致性,从而构建更健壮的分布式应用。

    spring对多个数据库进行事务管理.doc

    Spring 框架确实提供了对多个数据库事务管理的支持,这对于多数据源的应用场景非常关键。在Spring中,事务管理可以通过编程式和声明式两种方式进行。编程式事务管理需要程序员手动控制事务的开始、提交、回滚等操作...

    spring-hibernate-jotm 例子

    这个项目旨在展示如何在Java应用程序中有效地管理和协调数据库事务,特别是对于分布式事务处理。 Spring是一个广泛使用的轻量级应用框架,它提供了一个全面的基础架构,支持面向切面编程(AOP)和依赖注入(DI),...

    jotm-2.0.11.MR5.rar_Jotm jar_jotm_jotm-2.0.11.MR5_jotm.jar _jtom

    1. **分布式事务管理**:JOTM能够协调跨越多个资源(如数据库、消息队列等)的事务,确保数据的一致性和完整性。它支持两阶段提交(2PC)协议,这是分布式事务处理中的标准模式。 2. **JTA兼容**:遵循Java EE的JTA...

    JOTM简单测试DEMO(不含jar包)

    JOTM作为一个事务协调者,负责管理跨多个资源的事务,确保它们要么全部成功,要么全部失败,这就是ACID(原子性、一致性、隔离性、持久性)原则的体现。在Spring框架中,我们可以利用Spring的声明式事务管理,通过...

Global site tag (gtag.js) - Google Analytics