`
colorfire
  • 浏览: 33615 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

OSGi框架下使用iBATIS事务rollback不生效

阅读更多
关键词:osgi ibatis rollback autocommit

环境:
osgi框架下使用spring和iBATIS做数据库操作,其中事务是使用iBATIS的实现。
SqlMapClient sqlmapClient = this.getSqlMapClient();
		try
		{
			sqlmapClient.startTransaction();
			updateUsingChecks(id);
			deleteChecks(id);
			sqlmapClient.commitTransaction();
			sqlmapClient.endTransaction();
		}
		catch ( Exception e)
		{
			try
			{
				sqlmapClient.endTransaction();
			}
			catch ( SQLException e1)
			{
			}
			return false;
		}


实现本身没有错,但就是无法正常执行事务回退。框架这钟东西出问题很难排查,尤其是我这种对框架本身就不太熟悉的。无奈看源码,发现其事务实现类不同:

JdbcTransaction

ExternalTransaction


OSGI框架下是ExternalTransaction实现类,下面是该方法的注释:

	 * Set properties to be passed to the TransactionConfig instance used
	 * by this SqlMapClient. Supported properties depend on the concrete
	 * TransactionConfig implementation used:
	 * <p><ul>
	 * <li><b>ExternalTransactionConfig</b> supports "DefaultAutoCommit"
	 * (default: false) and "SetAutoCommitAllowed" (default: true).
	 * Note that Spring uses SetAutoCommitAllowed = false as default,
	 * in contrast to the iBATIS default, to always keep the original
	 * autoCommit value as provided by the connection pool.
	 * <li><b>JdbcTransactionConfig</b> does not supported any properties.
	 * <li><b>JtaTransactionConfig</b> supports "UserTransaction"
	 * (no default), specifying the JNDI location of the JTA UserTransaction
	 * (usually "java:comp/UserTransaction").
	 * </ul>


NND,原来iBATIS默认是自动提交,且不能修改。。。无奈了不知道哪些大牛出于啥目的。浪费半天时间,修改为spring事务处理也就是JdbcTransaction实现类,成功。。。

PS:不要说设置autoCommit为false,我试过无论怎么设置也不生效,不要问为啥,我也不知道。你要知道一定告诉我。


以上,希望对大家有用吧。

分享到:
评论
3 楼 colorfire 2010-12-17  
整合spring与ibatis,提交可以交给spring处理。终于搞明白了。
http://www.cnblogs.com/sunwei2012/archive/2010/11/26/1888497.html
2 楼 colorfire 2010-06-12  
嗯,没错。不过这老项目前人很多地方都是用的ibatis,要换事务方式,代码改动较多,比较纠结这个。。。所以才看的源码。
1 楼 crazier9527 2010-06-12  
你可以自己封装个datasource实现事务的控制

相关推荐

    osgi框架开发介绍

    OSGi(Open Services Gateway Initiative)框架是一个用于Java应用程序模块化的开放标准。它的核心特性是将应用程序分解为可独立部署、动态组合的模块,这些模块称为服务。OSGi框架的引入,旨在解决Java应用程序的...

    osgi-ibatis

    描述中提到"一个osgi集成ibatis的例子,我也是在网上下载的",这表明这个压缩包可能包含了一个完整的项目,用于演示如何在OSGi环境下配置和使用iBatis。这通常包括了配置文件、服务接口、实现类以及必要的依赖库。 ...

    四大OSGI框架最新技术对比分析

    - **与 Spring 完美结合**:Spring DM 充分利用了 Spring 的特性,使得开发人员可以在 OSGi 环境下方便地使用 Spring。 - **强大的配置能力**:提供了灵活的配置选项,使得应用可以根据不同环境进行调整。 - **高度...

    探索 OSGi 框架的组件运行机制

    探索 OSGi 框架的组件运行机制探索 OSGi 框架的组件运行机制

    基于osgi框架实战源码

    标题"基于osgi框架实战源码"揭示了本次学习的主题,即OSGi框架在实际项目中的应用。"osgi实战源码"这一描述进一步强调了这是一份可以动手实践的源代码,它以一个具体的购物车案例为背景,展示了如何在项目中运用OSGi...

    OSGi相关框架学习资料

    资源名称:OSGi相关框架学习资料资源目录:【】EclipseRCP与SpringOSGi技术详解与最佳实践【】osgi.core.javadoc-5.0.0【】OSGi_R4_Spec_zh_cn_origional【】OSGi原理与最佳实践【】OSGi原理与最佳实践的源码【】...

    ‪第一个OSGi框架工程

    这里推荐使用Eclipse Equinox作为OSGi框架的实现。Equinox是Eclipse项目的一部分,提供了完整的OSGi实现和支持。 1. **下载并安装Equinox**:访问官方下载页面(http://download.eclipse.org/equinox/),选择合适...

    Linux下OSGi框架实现笔记

    ### Linux 下 OSGi 框架实现笔记 #### 一、Linux 环境配置与准备 在开始实现 Linux 下的 OSGi 框架之前,首先需要确保已经正确配置了 Linux 的开发环境。 ##### 1. Linux 开发环境配置 **定义**:Linux 是一个...

    解决osgi spring 事务配置问题

    本篇文章将详细探讨如何在OSGi环境下解决Spring事务配置问题。 首先,我们需要理解OSGi的核心概念。OSGi提供了一个运行时环境,允许开发者创建可热插拔的Java模块,称为 bundles。这些bundles可以通过服务注册和...

    基于OSGI 框架 的客户端接口设计

    通过声明bundle的依赖,OSGi框架会自动管理这些依赖的生命周期,确保在使用服务之前先启动提供服务的bundle。 5. **动态性**:OSGi环境是高度动态的,接口设计应能适应这种变化。接口应当设计得足够灵活,以便在...

    OSGi.NET框架 Documentation

    本文档主要针对OSGi.NET模块化框架使用进行了描述 OSGi.NET框架是一个参照了OSGi规范的模块化管理框架。框架为应用程序(组件(bundle))提供了一个标准环境。整个框架可以划分为一些层次: 1.运行环境 2.模块...

    OSGI入门和例子

    5. **依赖管理**:OSGI使用MANIFEST.MF文件来声明bundle的依赖关系,这样在运行时可以自动解决这些依赖,避免了类加载的困扰。 6. **动态性**:OSGI的一大优势是其动态性,允许在运行时添加、删除或更新bundle,...

    漂亮的WPF界面框架(OSGi.NET插件)源码

    该界面框架是在ModernUI(http://mui.codeplex.com/)基础上开发的非常现代、漂亮的通用界面框架,通过简单的配置,您可以将自定义的功能注册到页面。...使用的OSGi.NET插件 欢迎感兴趣的用户下载研究

    OSGI原理与最佳实践(扫描版,带目录).pdf

    最后对0SGi知识进行深入讲解,通过对0SGi规范和实现框架(Equinox、Felix、Spring—DM和Apache CXF)的分析,以及最佳实践的介绍,帮助读者更好地使用OSGi。 OSGi原理与最佳实践 目录: 第1章 OSGi简介 第2章 OSGl...

    基于osgi整合ssm框架注解开发

    总结,"基于osgi整合ssm框架注解开发"的主题涵盖了使用OSGi的模块化特性来管理和部署基于Spring、SpringMVC和MyBatis的Web应用,同时利用注解简化配置和开发过程。通过这样的整合,开发者可以构建出高度可扩展、模块...

Global site tag (gtag.js) - Google Analytics