`

spring+hibernate+jotm分布式事务配置总结

 
阅读更多
在前段开拓的体系 中,应用到了两个差别 网域的oracle数据库,必要 处理赏罚 之间的事宜,于是选择了spring+hibernate+jotm组合,现粘贴我的设置,看看人人有什么更优的设置或写法,谢谢。

一、环境 及框架
Tomcat+spring+hibernate+jotm,尚有 就是struts、Oracle等
二、需求阐发
体系 里有2套差别 网域的oracle数据库,之间的数据必要 举办交互。
三、Dao设置
1、界说 jtom Bean 
xml 代码


1. <bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean" /> 


2、界说数据源
xml 代码


1. <bean id="dataSourceA" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> 
2.     <property name="dataSource"> 
3.         <bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> 
4.             <property name="transactionManager"> 
5.                 <ref local="jotm" /> 
6.             </property> 
7.             <property name="driverName"> 
8.                 <value>oracle.jdbc.driver.OracleDriver</value> 
9.             </property> 
10.             <property name="url"> 
11.                 <value>jdbc:oracle:thin:@192.168.0.10:1521:A</value> 
12.             </property> 
13.         </bean> 
14.     </property> 
15.     <property name="user"> 
16.         <value></value> 
17.     </property> 
18.     <property name="password"> 
19.         <value> </value> 
20.     </property> 
21. </bean>  
22.  
23.  
24. <bean id="dataSourceB" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> 
25.     <property name="dataSource"> 
26.         <bean class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> 
27.             <property name="transactionManager"> 
28.                 <ref local="jotm" /> 
29.             </property> 
30.             <property name="driverName"> 
31.                 <value>oracle.jdbc.driver.OracleDriver</value> 
32.             </property> 
33.             <property name="url"> 
34.                 <value>jdbc:oracle:thin:@192.168.0.10:1521:B</value> 
35.             </property> 
36.         </bean> 
37.     </property> 
38.     <property name="user"> 
39.         <value> </value> 
40.     </property> 
41.     <property name="password"> 
42.         <value> </value> 
43.     </property> 
44. </bean>  


3、界说 sessionFactory
xml 代码


1. <bean id="sessionFactoryA" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
2.     <property name="dataSource"> 
3.         <ref local="dataSourceA" /> 
4.     </property> 
5.     <property name="mappingDirectoryLocations"> 
6.         <list> 
7.             <value>classpath:/org/testa/hibernate/model/</value> 
8.         </list> 
9.     </property> 
10.     <property name="hibernateProperties"> 
11.         <props> 
12.             <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop> 
13.             <prop key="hibernate.show_sql">true</prop> 
14.             <prop key="hibernate.jdbc.batch_size">50</prop> 
15.             <prop key="hibernate.cache.use_query_cache">true</prop> 
16.             <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> 
17.         </props> 
18.     </property> 
19.     <property name="jtaTransactionManager"> 
20.         <ref bean="jotm" /> 
21.     </property> 
22.     <property name="lobHandler" ref="lobHandler"/> 
23. </bean>      
24.          
25. <bean id="sessionFactoryB" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
26.     <property name="dataSource"> 
27.         <ref local="dataSourceB" /> 
28.     </property> 
29.     <property name="mappingDirectoryLocations"> 
30.         <list> 
31.             <value>classpath:/org/testb/hibernate/model/</value> 
32.         </list> 
33.     </property> 
34.     <property name="hibernateProperties"> 
35.         <props> 
36.             <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop> 
37.             <prop key="hibernate.show_sql">true</prop> 
38.             <prop key="hibernate.jdbc.batch_size">50</prop> 
39.             <prop key="hibernate.cache.use_query_cache">true</prop> 
40.             <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop> 
41.         </props> 
42.     </property> 
43.     <property name="jtaTransactionManager"> 
44.         <ref bean="jotm" /> 
45.     </property> 
46.     <property name="lobHandler" ref="lobHandler"/> 
47. </bean> 

4、事宜管理 设置
xml 代码


1. <bean id="myTransactionManager" 
2.     class="org.springframework.transaction.jta.JtaTransactionManager"> 
3.     <property name="userTransaction"> 
4.         <ref local="jotm" /> 
5.     </property> 
6. </bean> 


5、dao的设置
xml 代码


1. <bean id="testADaoTarget" class="org.testa.hibernate.dao.impl.TestADAO"> 
2. <property name="sessionFactory"> 
3.   <ref bean=" sessionFactoryA "/> 
4. </property> 
5. </bean> 
6.  
7. <bean id="testADao" class="org.springframework.aop.framework.ProxyFactoryBean"> 
8. <property name="proxyInterfaces"> 
9.   <value>org.testA.hibernate.dao.ITestADAO</value> 
10. </property> 
11. <property name="interceptorNames"> 
12.   <list> 
13.     <value> testADaoTarget </value> 
14.   </list> 
15. </property> 
16. </bean> 
17.  
18. <bean id="testBDaoTarget" class="org.testa.hibernate.dao.impl.TestBDAO"> 
19. <property name="sessionFactory"> 
20.   <ref bean=" sessionFactoryB "/> 
21. </property> 
22. </bean> 
23.  
24. <bean id="testBDao" class="org.springframework.aop.framework.ProxyFactoryBean"> 
25. <property name="proxyInterfaces"> 
26.   <value>org.testA.hibernate.dao.ITestBDAO</value> 
27. </property> 
28. <property name="interceptorNames"> 
29.   <list> 
30.     <value> testBDaoTarget </value> 
31.   </list> 
32. </property> 
33. </bean> 



四、留意事项
1、spring已经整合了jotm,假如你应用 spring自带的jotm,也许会提醒某些类找不到,下载一个最新的jotm包,把lib目次里的全部 jar包拷贝到lib目次。

2、假如体系 中应用 jndi,则原有的jndi做事也许会无效,提醒 NameNotFoundException非常,此时在src目次下添加一个carol.properties的属性文件,添加如下内容:


1. # do not use CAROL JNDI wrapper 
2. carol.start.jndi=false 
3.  
4. # do not start a name server 
5. carol.start.ns=false 
6.  
7. # Naming Factory 
8. carol.jndi.java.naming.factory.url.pkgs=org.apache.naming 

分享到:
评论

相关推荐

    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

    在本文中,我们将深入探讨如何使用Spring、Hibernate和JOTM进行分布式事务管理,以实现在一个Service方法中同时操作两个不同数据源的数据,并确保任何错误都能导致所有操作回滚。首先,我们需要了解这些技术的基本...

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

    总结来说,Spring结合JOTM和Hibernate进行多数据源事务管理,主要涉及以下几个步骤:配置JOTM依赖,定义XADataSource,创建并配置AtomikosTransactionManager,设定事务策略,以及正确地集成Hibernate ...

    spring-hibernate-jotm 例子

    为了运行这个示例,你需要将这些jar包添加到你的项目类路径中,然后配置Spring的事务管理器为JOTM,并配置Hibernate的相关设置。在Spring的配置文件中,你需要定义一个PlatformTransactionManager bean,通常是...

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

    该系统的架构主要包括:Tomcat作为应用服务器,Spring用于业务逻辑层的控制,Hibernate作为ORM(对象关系映射)框架,JOTM(Java Open Transaction Manager)提供事务管理功能,Struts作为MVC(Model-View-...

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

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

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

    JTA是Java平台上的标准,用于管理分布式事务,它允许"同时连接两个或以上的数据库"。 JTA提供了统一的API,使得开发者可以在不同的事务资源(如数据库、消息队列等)之间进行协调。在Java环境中,Spring框架是实现...

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

    对于多个数据库的事务管理,Spring主要依赖于JTA(Java Transaction API)和XAResource接口来实现分布式事务。然而,JTA的XA事务通常在J2EE环境下工作,需要容器支持,比如JBoss、WebLogic等。在J2SE环境中,Spring...

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

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

    JBPM5入门学习.doc

    - **4.3.4 使用jotm配置tomcat数据源以支持JTA**: 通过Jotm配置Tomcat的数据源,以支持分布式事务。 - **4.3.5 Jbpm相关配置文件更新**: 更新JBPM相关的配置文件,如persistence.xml、jbpm.cfg.xml等。 - **4.3.6 ...

    简易搭建ssh 框架

    - **jotm.jar**:这是一个开源的JTA(Java Transaction API)实现,用于处理分布式事务。 - **ezmorph-1.0.4.jar**:这个库可能用于对象转换,帮助在不同数据格式间进行转换。 在搭建SSH框架时,通常需要以下步骤:...

    OpenJWeb1.6Java快速开发平台功能手册090315

    - **3.4 JTA 集成**:集成 JOTM 的 JTA 产品,支持分布式事务处理。 - **3.5 日志拦截器**:采用 AOP 方式实现的日志拦截器,便于跟踪系统的运行情况。 - **3.6 字段校验器**:支持字段级别的数据校验,提高数据的...

    java开源包1

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包11

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包2

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包3

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包6

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

    java开源包5

    Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java...

Global site tag (gtag.js) - Google Analytics