初探Java企业级开源框架OSGi - 编程入门网
全局,不会因为局部的错误导致全局系统的崩溃。每个Bundle 也只有当服务被调用的时候才会启动,因此性能是较一般的框架高出许多。
第三点,可复用性强。OSGi 框架本身可复用性极强,很容易构建真正面向接口的程序架构,每一个Bundle 都是一个独立可复用的单元。但是采用OSGi 框架进行企业开发是需要气魄和勇气的,因为当前的软件企业,大多已经积累了许多年,都会遗留下来一些可复用的工具箱程序,而采用OSGi 架构需要重新对这些遗留系统进行封装,更有可能的是需要把整个体系架构打散了,进行重新的架构和排列。这个开发成本不能说是不高,但笔者认为是值得的,因为从此以后企业可以利用OSGi 独特的特性,将重复的知识轻易的过滤掉。对于新的开发,可以从企业的Bundles 库中精简出可复用的模块,量身定做新的Bundles,最大限度的利用了以前的积累,这样的过程更能促使企业竞争力的增强。 OSGi 开源框架介绍 当前的OSGi 开源框架主要包含如下几个: Equinox 最知名,也是更新最频繁的,由于Eclipse 基金的支持,其功能越来越完善,笔者后续的具体开发都是基于该框架来实现的。当前已发布版本是3.3.1 与Eclipse 版本相同,实现了OSGi R4 规范,并提供很多平台性质的服务,包括:常用功能模块、日志模块、Web服务器模块、Servlet 模块、JSP 解析模块等等。由于其与Eclipse 的天然联系,使得开发基于Equinox 的应用程序变得很简单,笔者推荐采用此框架进行二次开发。具体内容可以从http://www.eclipse.org/equinox/ 下载。 Knopflerfish 很早的,也很优秀的一个OSGi 框架,也实现了OSGi R4 标准,去年十一月发布了其2.0.2版本。该项目的宗旨在于创建一个易于开发的OSGi 平台,与Equinox 不同之处在于它本身提供一些小应用实例,包括一个可视化控制台等,也提供基于Eclipse 的插件。具体内容可以从http://www.knopflerfish.org/ 下载。 Felix 很新的一个OSGi 框架,社区很活跃,更新频率高,是Apache 的开源项目。该项目2007年8月才出1.0 版,也实现了OSGi R4 规范,也提供相关的基础服务和扩展服务功能。具体内容可以从http://felix.apache.org/site/index.html 下载。 OSGi 开发环境部署 讲了那么多原理,如果不动手实践一下,总是难以令人信服的。那么现在我们就开始动手搭建开发环境吧。 首先,你需要准备好Eclipse 笔者用的是Eclipse 3.3.1 ,还有从Equinox 网站上下载到的Equinox SDK。 其次,将Equinox SDK 解压,解压后是一个Eclipse 目录,将该目录下的所有内容拷贝至你的Eclipse 安装目录下,就像平时手动安装Eclipse 插件一样。 最后,测试下是否安装成功。启动你的Eclipse,选择Run>Open Run Dialog...在弹出的界面中,如果出现了OSGi Framework 的选项,那基本上就是成功了。点击新建一个OSGi Run方式,这时会列出一系列的加载组件,你可以检查一下,如果里面有org.eclipse.osgi ,org.eclipse.osgi.services 和一系列以org.eclipse.equinox 开头的组件,那么就真的安装成功了。选中org.eclipse.osgi 和org.eclipse.osgi.services,点击Run 按钮,控制台会出现“osgi>”的提示,输入“ss”,就会看到你运行的这两个Bundles 的ID和状态了。每次输入错误的时候,控制台会打印出完整的命令列表,读者可以在此参考。 初探Java企业级开源框架OSGi(4)时间:2011-06-25 51ctoOSGi 版HelloWorld 到了真的写一个HelloWorld 的时候了,该应用设计如下图: 这个应用包含五个Bundles:SayHello Bundle 包含一个接口,只有唯一的方法sayHello();BobSays、RodSays、KentSays 三个Bundles 分别实现了三个具体的sayHello();而SayHelloService Bundle 提供了说hello 的机会,是具体的一个 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
-
HTTP/1.1 401 Access Denied