在前段开拓的体系 中,应用到了两个差别 网域的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+hibernate+jotm分布式事务配置总结
最新推荐文章于 2024-09-15 09:47:04 发布