`
cjnetwork
  • 浏览: 179505 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

jotm跨数据库事务 spring + hibernate

阅读更多
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" />
<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" />
//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" />
//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包
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在打包发布的时候也不是完全可信的。切记。
分享到:
评论

相关推荐

    Spring+Jotm+Hibernate+Oracle+Junit 实现JTA分布式事务要求Demo工程

    2.Spring+Jotm整合实现JTA分布式事务,应用场景如转账等,同一事务内完成db1用户加100元、db2用户减100元。 3.Spring+Junit4单元测试,优点:不会破坏数据库现场,等等。 (特别注意:Spring3.0里不在提供对jotm的...

    struts + spring + hibernate + velocity + ajax + jotm + acegi

    Struts、Spring、Hibernate、Velocity、Ajax、JOTM 和 Acegi 是一组常见的技术栈,它们在构建企业级Java Web应用程序时发挥着关键作用。这些技术各有专长,结合使用可以构建出高效、灵活且安全的系统。接下来,我们...

    spring+hibernate+jtom demo

    **JOTM(Java Open Transaction Manager)** 是一个开源的Java事务管理器,实现了JTA(Java Transaction API),使得应用程序能够跨多个资源(如数据库、消息队列等)进行事务处理。 **Spring** 是一个广泛使用的...

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

    本篇文章将聚焦于如何结合Spring和JOTM(Java Open Transaction Manager)来实现多数据源的事务管理,特别是针对使用Hibernate的情况。 JOTM是Java平台上的一个开放源代码事务管理器,它遵循JTA(Java Transaction ...

    Spring2.5.3+Hibernate3.2+Struts2.0.11整合.

    这个整合项目中的文档,如"Spring2.5+Hibernate3.2+Struts2.0+jotm2.0集成配置.doc"、"spring 2.0 + hibernate3.2 + struts 2.0 开放配置.pdf"和"Spring2.5.3+Hibernate3.2+Struts2.0.11整合.pdf"应该详细介绍了这些...

    spring-hibernate-jotm 例子

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

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

    跨库事务处理,如在spring+hibernate+struts2+jta的项目中,需要考虑的细节更多,包括异常处理、回滚策略、事务隔离级别等,以确保在复杂的业务逻辑中保持数据一致性。 总的来说,跨多个数据库操作需要精细的事务...

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

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

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

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

    java之hibernate和spring技术难点及其要点总结

    3. **分布式事务(jotm)**:当涉及到多个服务或数据库时,分布式事务成为必需,Spring支持与JOTM集成来实现这一目标。 4. **适配器模式与代理模式**:这两种设计模式在Spring中被广泛应用于实现AOP等功能。 5. **...

    Spring多数据源配置_分布式数据

    Spring用于业务逻辑层的控制,Hibernate作为ORM(对象关系映射)框架,JOTM(Java Open Transaction Manager)提供事务管理功能,Struts作为MVC(Model-View-Controller)框架的一部分,以及Oracle数据库。...

    Spring and iBATIS

    ### Spring与iBATIS集成应用详解...通过本文的介绍,您可以了解到如何在Spring框架中使用iBATIS来构建高效可靠的数据库访问层,并掌握相关的事务处理、异常管理和测试技巧。希望本文能够为您的项目开发提供有用的指导。

    SSH + ajax + acegi

    SSH + AJAX + Acegi 是一个基于Java技术栈的Web应用开发框架组合...如果你想要寻找最新的系统版本,可以按照描述中的提示,使用struts spring hibernate acegi jotm等关键词进行搜索,以获取更现代、更优化的解决方案。

    简易搭建ssh 框架

    在IT行业中,SSH(Spring、Struts、Hibernate)框架是一个常用的Java Web开发组合,它极大地简化了企业级应用的开发工作。本篇文章将基于提供的压缩包文件,详细讲解如何简易搭建SSH框架,并介绍相关的库文件及其...

    主流工作流对比

    - **事务管理**: 使用jOTM进行事务控制。 - **流程定义工具**: 有JAWE作为定义工具。 - **开源性**: 部分开放源代码。 - **与业务关系**: 嵌入式工作流引擎。 - **扩展性**: 秉承模块化思想,易于扩展。 - **安装...

    JBPM5入门学习.doc

    - **4.3.2 导入SSH相关的依赖**: Spring、Hibernate和Struts等框架的依赖项需要添加到项目中。 - **4.3.3 导入jbpm相关的依赖**: 添加JBPM库和其他相关依赖项。 - **4.3.4 使用jotm配置tomcat数据源以支持JTA**: ...

    92个经典开源项目集锦

    3. **PostgreSQL** 和 **MySQL**:这两款是开源数据库管理系统,PostgreSQL 以其强大的事务处理能力和复杂查询支持而受青睐,MySQL 则以其轻量级和高效率在互联网应用中广泛应用。 4. **SAP DB, Hypersonic/Hsql, ...

    JAVA上百实例源码以及开源项目源代码

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!...

Global site tag (gtag.js) - Google Analytics