最近在看去年买的一本叫作《OSGI原理与最佳实践》一书,在书中的第三章讲到一篇如何运行一个建立在springdm上的petstore程序。经过反复的出错和实践,终于按照书上的相关步骤弄出一个可以运行的例子。
书上所用的springdm为1.0版,而我这里用的是spring2.0 m1版,所以有些地方的配置可能和书上不一致。
首先准备以下文件:
Bootstrap
ProductDal
ProductList
ProductManagement
ShoppingCart
ShoppingCartDal
utils
以上这些文件是从相应的source中直接导入到eclipse中,由于使用的是默认的编译选项,所以需要修改默认的Bundle-ClassPath,默认的是相应的工程名, 我这里修改为/bin(即eclipse默认的编译输出目录)。
接下来,导入相应的springdm2.0的相应包
1),
org.springframework.osgi.core
org.springframework.osgi.extender
org.springframework.osgi.io
org.springframework.osgi.web
org.springframework.osgi.web.extender
2),
org.springframework.osgi.jetty.start.osgi
org.springframework.osgi.jetty.web.extender
3),
org.springsource.javax.servlet
org.springsource.net.sf.cglib
org.springsource.org.aopalliance
org.springsource.org.apache.log4j
org.springsource.org.objectweb.asm
org.springsource.slf4j.api
org.springsource.slf4j.log4j
org.springsource.slf4j.org.apache.commons.logging
4),
org.mortbay.jetty.server
org.mortbay.jetty.util
以上的相应包均从springdm2.0的dist和相应的lib包导入到eclipse中,其中第1部分从dist目录导入,第2部分,导入springdm与jetty融合的相应配置包,第3部分为相应运行所依赖的相应包,第4部分为jetty的运行服务器。这里需要注意的是不要导入eclipse所自带的jetty包,因为第2部分的包要求所依赖的jetty包的版本为6.1.9(即springdm自带的jetty包)。
接下来,导入spring的相应包,此处的spring要求为3.0以上的版本(因为springdm2.0要求spring的相关包,版本为[3.0,4.0)),下载相应的spring包,导入以下包
org.springframework.aop
org.springframework.asm
org.springframework.beans
org.springframework.context
org.springframework.context.support
org.springframework.core
org.springframework.expression
org.springframework.jdbc
org.springframework.transaction
org.springframework.web
导入完毕之后,设置工程中(即petstore)中所缺少的相应部分。配置运行时的包,即引用equinox的相应包,引用的包如下:
现在可以运行了,运行之后,输入网址:http://localhost/petstore/app即可访问了。有一个问题就是,如果观看运行的终端,可以看到jetty启动了两个console,一个为默认的80,另一个为8080,其中第一个为org.eclipse.equinox.http.jetty提供的默认80,另一个为org.springframework.osgi.jetty.start.osgi提供的8080。如果把后一个去掉,则会在运行中报一个有关jetty没有成为相应的service的错误(不知道为什么)。
配置过程中,出现了很多问题,比如servlet中无论如何也没有注入相应的httpService,最后才发现没有导入httpService的启动包,即(org.eclipse.equinox.http.jetty,它调用了由org.eclipse.quinox.http.servlet实现的httpserviceImpl,从而实现了org.eclipse.osgi.services,但这个实现类是由http.jetty包来启动的)。详细启动逻辑见http://flym.iteye.com/blog/687216。
OK,终于算是启动成功了,接下来,得好好研究下springdm。不过感觉这一个工程所导入的jar也太多了吧,可能是由于刚开始做osgi的工程,以前弄一大堆jar包习惯还没有改变过来。
- 大小: 38.3 KB
分享到:
相关推荐
2. "深入理解OSGi:Equinox原理、应用与最佳实践":Equinox是OSGi的一个实现,该书深入探讨了其原理,并结合实际应用给出了最佳实践指导。 3. "OSGi原理与最佳实践(精选版)":这可能是对原书的精简版,重点介绍OSGi...
OSGI原理与最佳实践的完整版,共12章 第1 章OSGi 简介 第2 章OSGi 框架简介 第3 章基于Spring-DM 实现Petstore 第4 章基于Apache CXF 实现分布式Petstore 第5 章构建OSGI Bundle Repositor'y 第6 章OSGi 规范解读 ...
资源名称:OSGI原理与最佳实践内容简介:国内第一本OSGi图书OSGi国内推广者林昊多年经验的结晶涵盖OSGi从入门到深入的知识体系引领OSGi国内研究和普及本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入...
本文将详细介绍OSGi Equinox的原理、应用以及最佳实践。 一、OSGi Equinox原理 OSGi框架的核心是其模块化系统,它将程序分割成一系列的“Bundle”,每个Bundle都是一个独立的模块,拥有自己的类加载器。这样做的...
OSGi原理与最佳实践基于作者多年使用0SGi的经验而编写,涵盖了0SGi从/kfqN深入的知识体系,从OSGi的简介开始,介绍OSGi的作用及基本概念;其后进入OSGi实战,结合实例讲解如何基于OSGi框架编写模块化、动态化的各种...
最后对OSGi知识进行深入讲解,通过对OSGi规范和实现框架(Equinox、Felix、Spring-DM和Apache CXF)的分析,以及最佳实践的介绍,帮助读者更好地掌握如何使用OSGi。 本书适合希望了解、深入掌握OSGi,以及编写模块化...
通过这个例子,你可以了解到如何在实际项目中设置和运行一个简单的OSGi应用。 1. **创建OSGi Bundle** 在OSGi中,最小的部署单元被称为Bundle,它类似于Java中的JAR文件,但包含额外的元数据来描述其依赖和其他...
提供的压缩包文件包含了"OSGi原理与实践"的多日培训内容,例如"Day3.pptx"、"Day2.pptx"和"Day5.pptx",这些文件可能涵盖了OSGi的基础概念、进阶技术和实际案例,可以帮助读者深入理解和掌握OSGi在实际项目中的应用...
InfoQ的"OSGi原理与最佳实践精选版"深入探讨了OSGi的关键概念、设计原则以及在实际开发中的应用策略。 OSGi的基本概念包括: 1. **模块化**:OSGi基于JAR(Java Archive)文件进行模块化,每个JAR都是一个独立的...
"OSGi原理与最佳实践"这本书可能会详细讲解以上各个方面,并可能包含实例代码和实战经验分享,对于深入理解OSGi并应用到实际项目中非常有帮助。另外,书中可能还会涵盖一些高级话题,如服务事件、远程服务、蓝绿部署...
其后进入OSGi实战,结合实例讲解如何基于OSGi框架编写模块化、动态化的各种Java应用;最后对OSGi知识进行深入讲解,通过对OSGi规范和实现框架(Equinox、Felix、Spring-DM和Apache CXF)的分析,以及最佳实践的介绍...
**OSGi原理与最佳实践的源码解析** OSGi(Open Service Gateway Initiative)是一个Java平台上的模块化系统,它提供了一种动态管理软件组件的方法,允许应用程序在运行时进行加载、卸载和更新。这个技术的核心是将...
### OSGi 入门与实践 #### OSGi 的历史背景 OSGi,全称为 Open Service Gateway Initiative,从字面上理解,它最初被设计为一个面向服务的平台。1999 年,OSGi 联盟成立,旨在为通过网络向设备提供服务建立开放的...
- **与Spring的集成**:Spring Dynamic Modules (Spring DM)是Spring框架与OSGi的桥梁,使得Spring应用可以在OSGi环境中运行。Spring DM允许在OSGi容器中管理Spring应用的bean和服务。 - **与Hibernate的集成**:在...
在《OSGi原理与最佳实践》这本书中,作者深入浅出地讲解了OSGi的核心概念、工作原理和实际应用。全书分为完整版和精简版,满足不同层次读者的需求。完整版通常包含了更详细的技术探讨和实践案例,而精简版则可能更...
在深入理解OSGi:Equinox原理、应用与最佳实践中,我们可以学习到以下几个关键知识点: 1. **模块化编程**:OSGi的核心是模块化,它将应用程序划分为独立的单元,称为服务或bundle。每个bundle都有自己的类路径,...
Eclipse作为一个流行的开源集成开发环境,自2003年起就选择了OSGi作为其插件的运行时架构,这表明OSGi与Eclipse之间有着非常密切的关系。Eclipse中的Equinox项目就实现了OSGi概念,并于2004年在Eclipse 3.3版本中...