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 

你可能感兴趣的:(Hibernate)