科技行者

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

知识库

知识库 安全导航

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

JBoss JTA的使用心得

  • 扫一扫
    分享文章到微信

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

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

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

关键字: 心得 JBoss JTA

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

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

      但是程序在执行到获取Sybase JNDI DataSource的时候总是出现ClassCastException,错误如下:
 
16:26:14,605 WARN [JBossManagedConnectionPool] Throwable while attempting to get a new connection: null
org.jboss.resource.JBossResourceException:
Could not create connection; - nested throwable: (java.lang.ClassCastException)
       at org.jboss.resource.adapter.jdbc.xa.XAManagedConnectionFactory.
createManagedConnection(XAManagedConnectionFactory.java:162)
       at org.jboss.resource.connectionmanager.InternalManagedConnectionPool.
createConnectionEventListener(InternalManagedConnectionPool.java:539)
       at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.
allocateConnection(BaseConnectionManager2.java:812)
       at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:88)

 
       这个错误耽误很长时间,后来突然发现,Sybase的jConnect驱动,竟然没有实现javax.sql.XADataSource的接口。
       于是,搜索了一下是否还有其他商业驱动支持Sybase IQ,但发现只有Sybase自身的jConnect。
 
       到这里好像Sybase IQ不支持XA,但是随后做了一个大胆的测试,就是对Sybase使用sybase-ds.xml,而对SQLServer依然采用mssql-xa-ds.xml。sybase-ds.xml配置如下:
<datasources>
  
<local-tx-datasource>
    
<jndi-name>jdbc/SybaseDB</jndi-name>
    
<connection-url>jdbc:sybase:Tds:localhost:2638</connection-url>
    
<driver-class>com.sybase.jdbc3.jdbc.SybDataSource</driver-class>
    
<user-name>dba</user-name>
    
<password>sql</password>
    
<exception-sorter-class-name>
org.jboss.resource.adapter.jdbc.vendor.SybaseExceptionSorter
</exception-sorter-class-name>
      
<metadata>
         
<type-mapping>Sybase</type-mapping>
      
</metadata>
  
</local-tx-datasource>
</datasources>
 
       这个测试后,竟然发现此种配置竟然也支持JTA。
 
       虽然这个实验可以控制Sybase IQ在JTA中的事务,但是到目前为止,我还是不太情况Sybase jConnect没有支持XADataSource接口,如何能够在JTA事务中控制的。
 
       后来又做了进一步的测试,把MSSqlServer的那个数据源也换成了mssql-ds.xml,也是没有使用XA那个,竟然发现也受JTA的事务完整性控制。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

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

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