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

解决osgi spring 事务配置问题

    博客分类:
  • java
阅读更多
前久看了一篇文章,
http://www.iteye.com/topic/315257
里面说

由于目前还无法解决 osgi 环境下的 aspectj 问题 , 所以 , 处理事务无法使用 tx:advice 和 aop:config, 改用 DataSourceTransactionManager.

后又看了一篇文章页是他的,说Equinox Aspects可以解决这个问题。

于是去看了看,现在问题已经解决了。
以下我把我的例子的整个流程写一下。

一.jar包的准备,我用的是eclipse环境
1).首先去 http://download.eclipse.org/equinox/ 下载
equinox-SDK     这里我用的3.4的  配置事务的 3.5好像有问题。

2).去 http://www.springsource.org/osgi 下载
spring-osgi-1.2.0-rc1.zip
spring-osgi-1.2.0-rc1-with-dependencies.zip

3).去 http://www.springsource.org/download 下载
spring-framework-2.5.6.zip
spring-framework-2.5.6-with-dependencies.zip

4).去 http://www.eclipse.org/aspectj/downloads.php 下载
aspectj-1.6.1.jar

5).去 http://www.eclipse.org/equinox/incubator/aspects/equinox-aspects-quick-start.php 下载
org.eclipse.equinox.weaving-incubation-1.0.0.200807082136-archive.zip

下载好了就先解压吧。

二.配置eclipse的环境
首先,我们建一个环境项目,里面放jar包就可以了。
File->NewProject  选general->project 起个名字,我的是myTargetPlatform2。在这个项目里面建立一个目录,目录名是 target

在target里放入用到的包:
spring-osgi要用到的包
spring-osgi-annotation-1.2.0-rc1.jar
spring-osgi-core-1.2.0-rc1.jar
spring-osgi-extender-1.2.0-rc1.jar
spring-osgi-io-1.2.0-rc1.jar

spring-osgi依赖包里的
com.springsource.net.sf.cglib-2.1.3.jar
com.springsource.org.aopalliance-1.0.0.jar

spring的包
spring.jar

这里是运行要用到的包
org.eclipse.osgi_3.4.0.v20080605-1900.jar

这个是Equinox Aspects的
org.eclipse.equinox.weaving.aspectj_1.0.0.200807082136.jar
org.eclipse.equinox.weaving.caching_1.0.0.200807082136.jar
org.eclipse.equinox.weaving.caching.j9_1.0.0.200807082136.jar
org.eclipse.equinox.weaving.hook_1.0.0.200807082136.jar

com.springsource.org.apache.commons.logging-1.1.1.jar

放好后,window->preferences   plug-in Development->Target Platform 点一下。
这时旁边有add点一下,直接点next,点add,这时可以选路径,选择前边项目的里的target目录,同时设置一下Name。选定你建立好的平台(黑体是选定)。可以了。

三.建立项目。这里不说了,我把项目上传,自己导入一下吧。
org.aspectj.runtime
org.aspectj.weaver
分别是aspectj-1.6.1.jar包里的2个jar。

我没用ibatis,读取配置好像有问题,
我的spring是bundle的方式加载的,ibatis包是在dao实现的项目里classpath加载的,是读取不到ibatis的配置,看网上说是classloader的问题,希望高手能给解决一下。

这里事务用的标签式的事务。在实现类里配置的。

启动,下边有图是用到的包。


com.myTest.service.daoJdbcImpl 项目下有数据库配置要改一下。

数据库测试表结构
DROP TABLE IF EXISTS `mytest_user`;
CREATE TABLE `mytest_user` (
  `id` bigint(20) NOT NULL auto_increment,
  `name` varchar(100) NOT NULL,
  `sex` tinyint(1) default 0,
  `address` varchar(255) default '',
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在实现类的事务标签那里修改一下,改为
@Transactional(readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
忘记加事务回滚的,不过我测试不加也回滚了。下边有个文章介绍事务的
http://www.ibm.com/developerworks/cn/java/j-ts1.html?ca=drs-tp4608



跨bundle的事务的测试代码也写好了,有兴趣的可以下载跑一下。spring-osgiTest2.rar


做了一个简单quartz的bundle,使整体不依赖quartz包,bundle的启动,停止都会启动停止任务。spring-osgiTest3.rar





做了一个简单的拦截器测试,不知道为什么在spring dm中 <aop:aspectj-autoproxy proxy-target-class="true"/>老是报错,又是classloader的问题,就改了一下方法。看官方的例子在osgi中他用的aj文件,aop.xml的配置文件,加vm参数做的。还看了文章用spring管理,在配置bean加factory-method="aspectOf" 属性。于是写了一个测试,大家可以下载测试一些。

还加入了service相互依赖调用的例子。配置文件有注释。可以看一下。 文件  20100202.rar
  • 大小: 54.8 KB
分享到:
评论
3 楼 huanglei_jay 2014-03-02  
2 楼 malixxx 2010-03-25  
我也没研究了,我们的项目不用这个了,不过可以配置事务就应该可以做拦截的。
1 楼 oiunt 2010-03-20  
谢谢楼主,目前正在研究在spring dm下,如何配置跨bundle的aop,不知道楼主有没有研究?

相关推荐

    OSGISpring OSGISpring

    10. **实战应用**:学习如何在实际项目中应用OSGISpring,如构建分布式系统、微服务架构等,了解如何解决实际遇到的问题。 为了深入了解OSGI与Spring的整合,阅读"OSGI入门和整合Spring.pdf"文档将是十分有价值的。...

    osgi spring实例

    4. **使用Spring DM或Spring OSGi**:配置元数据,如XML配置文件,描述服务的生命周期和依赖关系。 5. **部署和管理**:将bundle部署到OSGi容器,容器会自动管理服务的生命周期和依赖解析。 通过这个实例,开发者...

    OSGI整合Spring、Mybatis、Spring MVC实现一个登录应用案例

    在OSGI环境中,Spring可以通过Blueprint或Declarative Services来声明性地配置服务。在这个案例中,Spring将用于管理Bean的生命周期和装配,以及提供事务管理。 Mybatis是一个轻量级的持久层框架,它简化了SQL映射...

    spring-osgi.jar及其依赖包

    4. **管理和监控**:在OSGi容器中,可以通过控制台或Web界面查看和管理bundle的状态,包括启动、停止、更新和解决依赖问题。 Spring OSGi的依赖包通常包括Spring核心库、Spring DM(Dependency Manager,已被Spring...

    OSGI应用中整合Spring、Mybatis、Spring MVC案例

    在OSGI环境中集成Spring MVC,我们需要处理Servlet的生命周期和路由问题。通常,我们需要一个OSGI兼容的Servlet容器,如Pax Web,来托管Spring MVC的应用。同时,Spring MVC的配置也需要适应OSGI环境,比如...

    基于OSGi和Spring开发企业级Web应用

    ### 基于OSGi和Spring开发企业级Web应用 #### OSGi与Spring结合的重要性 ...综上所述,将OSGi和Spring结合起来使用,可以有效地解决企业级应用开发中面临的许多挑战,是一种值得推广的技术方案。

    在Eclipse RCP中应用Spring OSGI 管理bean(一)

    4. **创建Spring Extension Factory**:在Eclipse RCP中,你需要创建一个SpringExtensionFactory,这是一个特殊的工厂类,负责从OSGi服务中获取Spring配置并实例化Bean。 5. **注册OSGi服务**:将...

    OSGi, Spring , Web

    3. Spring Virgo服务器:学习如何配置、启动和管理Virgo服务器,以及如何发布和更新OSGi服务。 4. HTML5:掌握HTML5的新特性,如语义化标签、canvas、geolocation、离线存储(localStorage)等,并能编写符合标准的...

    Spring OSGi 入门.rar

    3. 依赖管理:OSGi的依赖管理系统能解决类路径问题,确保模块之间的依赖关系正确处理。 4. 服务导向:通过OSGi服务注册和发现机制,模块可以动态地查找和使用其他模块提供的服务,增强了组件之间的解耦。 三、...

    osgi数据库连接demo

    总结来说,这个“osgi数据库连接demo”展示了如何在OSGi环境中配置C3P0连接池,使用iBATIS进行数据访问,并利用Spring-DS管理这些组件。整个过程涉及到OSGi的包管理、连接池的配置、数据访问层的集成以及日志记录。...

    Spring OSGi 入门.pdf

    深入学习 Spring OSGi,可以研究安全性、远程服务、事件处理、事务管理等高级特性。同时,了解如何与其他 OSGi 组件如 Blueprint 和 Declarative Services 结合使用,提升应用的灵活性和可维护性。 总结,Spring ...

    OSGI&spring;&hibernate;

    2. Spring在OSGI中的配置:讲解如何在OSGI中配置Spring,如使用Declarative Services(DS)声明依赖关系。 3. Hibernate在OSGI中的整合:阐述如何将Hibernate集成到OSGI环境中,包括SessionFactory和Session的管理。...

    Apress - Pro Spring Dynamic Modules for OSGi Service Platforms 2009

    它允许开发者在OSGi容器中充分利用Spring的功能,例如配置管理、事务处理、数据访问等。Spring DM通过提供一种与OSGi服务交互的方式,使得Spring应用程序可以轻松地适应模块化的OSGi环境。 在本书中,读者会了解到...

    Spring-OSGI 1.0 M3 中文手册

    这些命名空间涵盖了 Spring 框架的核心特性,如 Bean 定义、AOP、事务管理等,并且进行了适当的扩展以支持 OSGi 环境下的特定需求。 ##### 2.2 动态模块扩展器 Bundle 动态模块扩展器 Bundle(简称 Dynamic Module...

    OSGI 实例eclipse插件开发

    8. `org.springframework.osgi.io`:这个模块提供了OSGI环境下的资源读取和加载功能,如读取bundle中的配置文件。 9. `org.springframework.osgi.core`:这是Spring OSGI的核心模块,包含了一些基础的OSGI服务和...

Global site tag (gtag.js) - Google Analytics