`
Fly_m
  • 浏览: 259678 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

(OSGI应用与实践)运行petstore例子

    博客分类:
  • osgi
阅读更多

    最近在看去年买的一本叫作《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的相应包,引用的包如下:

    eclipse自带的运行包

    现在可以运行了,运行之后,输入网址: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
分享到:
评论
1 楼 TANHAIWEI 2011-11-15  
我今年才看,就卡在HelloWorld Web版那里了,HTTP死活启动不了,纠结哈...

相关推荐

    OSGi原理与最佳实践 例子和pdf

    2. "深入理解OSGi:Equinox原理、应用与最佳实践":Equinox是OSGi的一个实现,该书深入探讨了其原理,并结合实际应用给出了最佳实践指导。 3. "OSGi原理与最佳实践(精选版)":这可能是对原书的精简版,重点介绍OSGi...

    OSGi原理与最佳实践pdf下载(完整版)

    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从入门到深入...

    深入理解OSGi:Equinox原理、应用与最佳实践.pdf

    本文将详细介绍OSGi Equinox的原理、应用以及最佳实践。 一、OSGi Equinox原理 OSGi框架的核心是其模块化系统,它将程序分割成一系列的“Bundle”,每个Bundle都是一个独立的模块,拥有自己的类加载器。这样做的...

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

    OSGi原理与最佳实践基于作者多年使用0SGi的经验而编写,涵盖了0SGi从/kfqN深入的知识体系,从OSGi的简介开始,介绍OSGi的作用及基本概念;其后进入OSGi实战,结合实例讲解如何基于OSGi框架编写模块化、动态化的各种...

    OSGI原理最佳实践(包含源代码)

    最后对OSGi知识进行深入讲解,通过对OSGi规范和实现框架(Equinox、Felix、Spring-DM和Apache CXF)的分析,以及最佳实践的介绍,帮助读者更好地掌握如何使用OSGi。 本书适合希望了解、深入掌握OSGi,以及编写模块化...

    基于osgi构建小例子

    通过这个例子,你可以了解到如何在实际项目中设置和运行一个简单的OSGi应用。 1. **创建OSGi Bundle** 在OSGi中,最小的部署单元被称为Bundle,它类似于Java中的JAR文件,但包含额外的元数据来描述其依赖和其他...

    OSGi原理与实践

    提供的压缩包文件包含了"OSGi原理与实践"的多日培训内容,例如"Day3.pptx"、"Day2.pptx"和"Day5.pptx",这些文件可能涵盖了OSGi的基础概念、进阶技术和实际案例,可以帮助读者深入理解和掌握OSGi在实际项目中的应用...

    InfoQ - OSGi原理与最佳实践精选版.zip

    InfoQ的"OSGi原理与最佳实践精选版"深入探讨了OSGi的关键概念、设计原则以及在实际开发中的应用策略。 OSGi的基本概念包括: 1. **模块化**:OSGi基于JAR(Java Archive)文件进行模块化,每个JAR都是一个独立的...

    OSGi原理与最佳实践(完整版下载)

    "OSGi原理与最佳实践"这本书可能会详细讲解以上各个方面,并可能包含实例代码和实战经验分享,对于深入理解OSGi并应用到实际项目中非常有帮助。另外,书中可能还会涵盖一些高级话题,如服务事件、远程服务、蓝绿部署...

    OSGi原理与最佳实践

    其后进入OSGi实战,结合实例讲解如何基于OSGi框架编写模块化、动态化的各种Java应用;最后对OSGi知识进行深入讲解,通过对OSGi规范和实现框架(Equinox、Felix、Spring-DM和Apache CXF)的分析,以及最佳实践的介绍...

    OSGi原理与最佳实践的源码

    **OSGi原理与最佳实践的源码解析** OSGi(Open Service Gateway Initiative)是一个Java平台上的模块化系统,它提供了一种动态管理软件组件的方法,允许应用程序在运行时进行加载、卸载和更新。这个技术的核心是将...

    osgi入门与实践

    ### OSGi 入门与实践 #### OSGi 的历史背景 OSGi,全称为 Open Service Gateway Initiative,从字面上理解,它最初被设计为一个面向服务的平台。1999 年,OSGi 联盟成立,旨在为通过网络向设备提供服务建立开放的...

    osgi 资料 总结 实践

    - **与Spring的集成**:Spring Dynamic Modules (Spring DM)是Spring框架与OSGi的桥梁,使得Spring应用可以在OSGi环境中运行。Spring DM允许在OSGi容器中管理Spring应用的bean和服务。 - **与Hibernate的集成**:在...

    OSGi原理与最佳实践完整版+精简版+代码

    在《OSGi原理与最佳实践》这本书中,作者深入浅出地讲解了OSGi的核心概念、工作原理和实际应用。全书分为完整版和精简版,满足不同层次读者的需求。完整版通常包含了更详细的技术探讨和实践案例,而精简版则可能更...

    深入理解OSGi:Equinox原理、应用与最佳实践,书本源代码

    在深入理解OSGi:Equinox原理、应用与最佳实践中,我们可以学习到以下几个关键知识点: 1. **模块化编程**:OSGi的核心是模块化,它将应用程序划分为独立的单元,称为服务或bundle。每个bundle都有自己的类路径,...

    OSGi原理与最佳实践 学习笔记 一

    Eclipse作为一个流行的开源集成开发环境,自2003年起就选择了OSGi作为其插件的运行时架构,这表明OSGi与Eclipse之间有着非常密切的关系。Eclipse中的Equinox项目就实现了OSGi概念,并于2004年在Eclipse 3.3版本中...

Global site tag (gtag.js) - Google Analytics