关键词: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,我试过无论怎么设置也不生效,不要问为啥,我也不知道。你要知道一定告诉我。
以上,希望对大家有用吧。
分享到:
相关推荐
OSGi(Open Services Gateway Initiative)框架是一个用于Java应用程序模块化的开放标准。它的核心特性是将应用程序分解为可独立部署、动态组合的模块,这些模块称为服务。OSGi框架的引入,旨在解决Java应用程序的...
描述中提到"一个osgi集成ibatis的例子,我也是在网上下载的",这表明这个压缩包可能包含了一个完整的项目,用于演示如何在OSGi环境下配置和使用iBatis。这通常包括了配置文件、服务接口、实现类以及必要的依赖库。 ...
- **与 Spring 完美结合**:Spring DM 充分利用了 Spring 的特性,使得开发人员可以在 OSGi 环境下方便地使用 Spring。 - **强大的配置能力**:提供了灵活的配置选项,使得应用可以根据不同环境进行调整。 - **高度...
探索 OSGi 框架的组件运行机制探索 OSGi 框架的组件运行机制
标题"基于osgi框架实战源码"揭示了本次学习的主题,即OSGi框架在实际项目中的应用。"osgi实战源码"这一描述进一步强调了这是一份可以动手实践的源代码,它以一个具体的购物车案例为背景,展示了如何在项目中运用OSGi...
资源名称:OSGi相关框架学习资料资源目录:【】EclipseRCP与SpringOSGi技术详解与最佳实践【】osgi.core.javadoc-5.0.0【】OSGi_R4_Spec_zh_cn_origional【】OSGi原理与最佳实践【】OSGi原理与最佳实践的源码【】...
这里推荐使用Eclipse Equinox作为OSGi框架的实现。Equinox是Eclipse项目的一部分,提供了完整的OSGi实现和支持。 1. **下载并安装Equinox**:访问官方下载页面(http://download.eclipse.org/equinox/),选择合适...
### Linux 下 OSGi 框架实现笔记 #### 一、Linux 环境配置与准备 在开始实现 Linux 下的 OSGi 框架之前,首先需要确保已经正确配置了 Linux 的开发环境。 ##### 1. Linux 开发环境配置 **定义**:Linux 是一个...
本篇文章将详细探讨如何在OSGi环境下解决Spring事务配置问题。 首先,我们需要理解OSGi的核心概念。OSGi提供了一个运行时环境,允许开发者创建可热插拔的Java模块,称为 bundles。这些bundles可以通过服务注册和...
通过声明bundle的依赖,OSGi框架会自动管理这些依赖的生命周期,确保在使用服务之前先启动提供服务的bundle。 5. **动态性**:OSGi环境是高度动态的,接口设计应能适应这种变化。接口应当设计得足够灵活,以便在...
本文档主要针对OSGi.NET模块化框架使用进行了描述 OSGi.NET框架是一个参照了OSGi规范的模块化管理框架。框架为应用程序(组件(bundle))提供了一个标准环境。整个框架可以划分为一些层次: 1.运行环境 2.模块...
5. **依赖管理**:OSGI使用MANIFEST.MF文件来声明bundle的依赖关系,这样在运行时可以自动解决这些依赖,避免了类加载的困扰。 6. **动态性**:OSGI的一大优势是其动态性,允许在运行时添加、删除或更新bundle,...
该界面框架是在ModernUI(http://mui.codeplex.com/)基础上开发的非常现代、漂亮的通用界面框架,通过简单的配置,您可以将自定义的功能注册到页面。...使用的OSGi.NET插件 欢迎感兴趣的用户下载研究
最后对0SGi知识进行深入讲解,通过对0SGi规范和实现框架(Equinox、Felix、Spring—DM和Apache CXF)的分析,以及最佳实践的介绍,帮助读者更好地使用OSGi。 OSGi原理与最佳实践 目录: 第1章 OSGi简介 第2章 OSGl...
总结,"基于osgi整合ssm框架注解开发"的主题涵盖了使用OSGi的模块化特性来管理和部署基于Spring、SpringMVC和MyBatis的Web应用,同时利用注解简化配置和开发过程。通过这样的整合,开发者可以构建出高度可扩展、模块...
Spring Dynamic Modules (Spring-DS) 是Spring框架在OSGi环境下的扩展,它帮助我们管理Spring应用在OSGi中的生命周期。`spring-osgi-core-1.2.1.jar`是Spring-DS的核心库。在这个场景下,我们可以使用Spring的...