前久看了一篇文章,
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
分享到:
相关推荐
10. **实战应用**:学习如何在实际项目中应用OSGISpring,如构建分布式系统、微服务架构等,了解如何解决实际遇到的问题。 为了深入了解OSGI与Spring的整合,阅读"OSGI入门和整合Spring.pdf"文档将是十分有价值的。...
4. **使用Spring DM或Spring OSGi**:配置元数据,如XML配置文件,描述服务的生命周期和依赖关系。 5. **部署和管理**:将bundle部署到OSGi容器,容器会自动管理服务的生命周期和依赖解析。 通过这个实例,开发者...
在OSGI环境中,Spring可以通过Blueprint或Declarative Services来声明性地配置服务。在这个案例中,Spring将用于管理Bean的生命周期和装配,以及提供事务管理。 Mybatis是一个轻量级的持久层框架,它简化了SQL映射...
4. **管理和监控**:在OSGi容器中,可以通过控制台或Web界面查看和管理bundle的状态,包括启动、停止、更新和解决依赖问题。 Spring OSGi的依赖包通常包括Spring核心库、Spring DM(Dependency Manager,已被Spring...
在OSGI环境中集成Spring MVC,我们需要处理Servlet的生命周期和路由问题。通常,我们需要一个OSGI兼容的Servlet容器,如Pax Web,来托管Spring MVC的应用。同时,Spring MVC的配置也需要适应OSGI环境,比如...
### 基于OSGi和Spring开发企业级Web应用 #### OSGi与Spring结合的重要性 ...综上所述,将OSGi和Spring结合起来使用,可以有效地解决企业级应用开发中面临的许多挑战,是一种值得推广的技术方案。
4. **创建Spring Extension Factory**:在Eclipse RCP中,你需要创建一个SpringExtensionFactory,这是一个特殊的工厂类,负责从OSGi服务中获取Spring配置并实例化Bean。 5. **注册OSGi服务**:将...
3. Spring Virgo服务器:学习如何配置、启动和管理Virgo服务器,以及如何发布和更新OSGi服务。 4. HTML5:掌握HTML5的新特性,如语义化标签、canvas、geolocation、离线存储(localStorage)等,并能编写符合标准的...
3. 依赖管理:OSGi的依赖管理系统能解决类路径问题,确保模块之间的依赖关系正确处理。 4. 服务导向:通过OSGi服务注册和发现机制,模块可以动态地查找和使用其他模块提供的服务,增强了组件之间的解耦。 三、...
总结来说,这个“osgi数据库连接demo”展示了如何在OSGi环境中配置C3P0连接池,使用iBATIS进行数据访问,并利用Spring-DS管理这些组件。整个过程涉及到OSGi的包管理、连接池的配置、数据访问层的集成以及日志记录。...
深入学习 Spring OSGi,可以研究安全性、远程服务、事件处理、事务管理等高级特性。同时,了解如何与其他 OSGi 组件如 Blueprint 和 Declarative Services 结合使用,提升应用的灵活性和可维护性。 总结,Spring ...
2. Spring在OSGI中的配置:讲解如何在OSGI中配置Spring,如使用Declarative Services(DS)声明依赖关系。 3. Hibernate在OSGI中的整合:阐述如何将Hibernate集成到OSGI环境中,包括SessionFactory和Session的管理。...
它允许开发者在OSGi容器中充分利用Spring的功能,例如配置管理、事务处理、数据访问等。Spring DM通过提供一种与OSGi服务交互的方式,使得Spring应用程序可以轻松地适应模块化的OSGi环境。 在本书中,读者会了解到...
这些命名空间涵盖了 Spring 框架的核心特性,如 Bean 定义、AOP、事务管理等,并且进行了适当的扩展以支持 OSGi 环境下的特定需求。 ##### 2.2 动态模块扩展器 Bundle 动态模块扩展器 Bundle(简称 Dynamic Module...
8. `org.springframework.osgi.io`:这个模块提供了OSGI环境下的资源读取和加载功能,如读取bundle中的配置文件。 9. `org.springframework.osgi.core`:这是Spring OSGI的核心模块,包含了一些基础的OSGI服务和...