科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道JBoss JTA的使用心得

JBoss JTA的使用心得

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

前些日子,农总行的客户有个需求,需要跨Sybase ASE和Sybase IQ两个数据库操作,并且保证事务的完整性,而且客户不希望通过数据库层来保证事务,只希望在代码层控制。

作者:银狐999 来源:CSDN 2008年3月3日

关键字: java 心得 JBoss JTA

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

       前些日子,农总行的客户有个需求,需要跨Sybase ASE和Sybase IQ两个数据库操作,并且保证事务的完整性,而且客户不希望通过数据库层来保证事务,只希望在代码层控制。
 
       这样的需求可能第一反应就是采用JTA,及XA事务(及通常所说的两阶段提交)支持。但是,这其中有一个数据库Sybase IQ,这是一个“数据仓库型”的数据库。Sybase中国区的技术支持也不能肯定是否IQ支持XA事务,因为IQ跨数据库事务操作在国内还没有过。
      
于是,只得做了个技术预研。说真的,虽然搞了这么多年java,还真没有碰到过跨数据库事务的项目,这次机会难得,好好研究一把。
 
       本机暂时没有Sybase ASE,只能拿SQLServer替代一下。测试环境如下:
JTA Server: Jboss4.0.4
DataBase One: MS SQLServer 2000
DataBase Two:Sybase IQ 12.6
OS: Windows2003
                   JDBC Driver for sqlserver: jTDS1.2
                   JDBC Driver for Sybase IQ: jConnect-6_05
 
       首先在Jboss中配置XADataSource。在 jboss404\docs\examples\jca 目录下,只有mssql-xa-ds.xmlsybase-ds.xml,没有sybase-xa-ds.xml样例。于是自己写了一个sybase-xa-ds.xml。—— 后来发现这是“错误的做法”,只使用sybase-ds.xml即可了。
 
mssql-xa-ds.xml内容如下:
<datasources>
  
<xa-datasource>
    
<jndi-name>MSSQLXADS</jndi-name>
    
<track-connection-by-tx/>
    
<isSameRM-override-value>false</isSameRM-override-value>
   
<xa-datasource-class>net.sourceforge.jtds.jdbcx.JtdsDataSource</xa-datasource-class>
    
<xa-datasource-property name="ServerName">localhost</xa-datasource-property>
    
<xa-datasource-property name="DatabaseName">foxtest</xa-datasource-property>
    
<user-name>sa</user-name>
    
<password>sa</password>
      
<metadata>
         
<type-mapping>MS SQLSERVER2000</type-mapping>
      
</metadata>
  
</xa-datasource>
</datasources>
  
sybase-xa-ds.xml内容如下:
<datasources>
  
<xa-datasource>
    
<jndi-name>XASybaseDS</jndi-name>
    
<track-connection-by-tx/>
    
<isSameRM-override-value>false</isSameRM-override-value>
    
<xa-datasource-class>com.sybase.jdbc3.jdbc.SybDataSource</xa-datasource-class>
    
<xa-datasource-property name="ServerName">localhost</xa-datasource-property>
    
<xa-datasource-property name="User">dba</xa-datasource-property>
    
<xa-datasource-property name="Password">sql</xa-datasource-property>
    
<exception-sorter-class-name>
org.jboss.resource.adapter.jdbc.vendor.SybaseExceptionSorter
</exception-sorter-class-name>
    
<no-tx-separate-pools/>
    
<metadata>
         
<type-mapping>Sybase</type-mapping>
    
</metadata>
  
</xa-datasource>
</datasources>
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章