Spring实现分布式事务处理(两阶段提交事务)

来自:http://www.iteye.com/topic/81912

 

需求背景: 
由于系统涉及到多个数据源,所以想用两阶段提交事务(分布式事务)来保证数据的一致性,完整性。 
测试环境: 
OS-->win2000 
DB-->sql server 2K 
j2ee容器和IDE-->WSAD 
开发框架:struts+spring+hibernate 
配置文件: 

Java代码 
  1. "dataSourcedgLabourDB" class="org.springframework.jndi.JndiObjectFactoryBean">  
  2.         "jndiName" value="jdbc/dg_labour"/>  
  3.       
  4.   
  5.    "sessionFactorydgLabourDB" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  6.         "dataSource" ref="dataSourcedgLabourDB"/>  
  7.         "mappingDirectoryLocations">  
  8.               
  9.                 classpath:/com/legend/shipment/domain/dgLabour  
  10.               
  11.           
  12.         "hibernateProperties">  
  13.               
  14.                 "hibernate.dialect">${hibernate.dialect}  
  15.                 "hibernate.show_sql">${hibernate.show_sql}  
  16.                 "hibernate.cache.use_query_cache">${hibernate.cache.use_query_cache}  
  17.                 "hibernate.cache.provider_class">${hibernate.cache.provider_class}  
  18.               
  19.           
  20.       
  21.   
  22.     "wasTxMgr" class="org.springframework.transaction.jta.WebSphereTransactionManagerFactoryBean"/>  
  23.      
  24.    "transactionManagerdgLabourDB" class="org.springframework.transaction.jta.JtaTransactionManager">   
  25.         "transactionManager">  
  26.             "wasTxMgr"/>  
  27.           
  28.      
  29.   
  30.    "txProxyTemplatedgLabourDB" abstract="true"  
  31.         class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">  
  32.         "transactionManager">"transactionManagerdgLabourDB"/>  
  33.         "transactionAttributes">  
  34.               
  35.                 "save*">PROPAGATION_REQUIRED  
  36.                 "remove*">PROPAGATION_REQUIRED  
  37.                 "del*">PROPAGATION_REQUIRED  
  38.                 "update*">PROPAGATION_REQUIRED  
  39.                 "*">PROPAGATION_REQUIRED,readOnly  
  40.               
  41.           
  42.       



问题描叙: 
这几天我一直都在网上查找,自己实践摸索,确始终没有调试成功,希望那位能指点我一下谢谢! 
1) 使得SQL Server2K 有 XA能力。 
   下载sql Server2005 JDBC驱动程序( 
http://www.microsoft.com/downloads/details.aspx?FamilyID=E22BC83B-32FF-4474-A44A-22B6AE2C4E17&displaylang=zh-cn)。 
安照里面的指南安装好,也成功测试了中间的一个例子。 
2) 用WSAD JNDI的方式获取数据源。用WSAD中的XA方式配置数据源。 
按照IBM官方网上(http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0407_woolf/0407_woolf.html)的例子, 
建立了几个连接,也就是我的Spring配置文件中要使用的数据源。 

 

调试中的问题:

出现异常“未能找到存储过程 'master..xp_jdbc_open'”

解决:在Sql server中查找,确实没有那个存储过程。由于用的是sql server 2005 jdbc 驱动程序,而且WSAD5.1也只提供了sql server 2000 jdbc driver(XA),所以推断是不是版本不匹配。于是下载了sql server 2000 jdbc driver,这样成功了。

你可能感兴趣的:(Spring,编程)