快速业务通道

模块化Java:静态模块化 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17

另外还有更小的定位于嵌入设备的OSGi R3运行时可用(比如Concierge),但本系列 文章只关注OSGi R4。

编译并运行bundle

获得framework.jar之后,把OSGi加入classpath并编译上面的例子,然后将其打包成 JAR:

javac -cp framework.jar com/infoq/*/*.java jar cfm example.jar MANIFEST.MF com

每种引擎都有shell,命令也相似(但不相同)。为了便于练习,让我们看看如何获得 这些引擎并使之运行、安装和启/停bundle。

一旦引擎启动并运行起来,你就可以安装bundle(由 file:// URL来定位)了,然后 可以使用安装bundle所返回的bundle id,启动或停止该bundle。

Equinox Felix Knopflerfish
启动应用 java -jar org.eclipse.osgi_*.jar -console java -jar bin/felix.jar java -jar framework.jar -xargs minimal.xargs
帮助 help
列表 ss ps bundles
安装 install file:///path/to/example.jar
启动 start id
更新 update id
停止 stop id
卸载 uninstall id
退出 exit shutdown

尽管所有的shell工作起来大都一样,但命令之间还是有容易混淆的细微差别。有两个 统一console的项目(Pax Shell,Posh)和运行器(Pax Runner)可以利用;OSGi RFC 132则是一个正在进行中的提案,试图标准化command shell。另外,Apache Karaf可以运 行在Equinox或Felix之上,提供统一的shell以及其他特性。尽管使用这些项目或工具进 行实际部署是可取的,但本系列文章还是关注于普通的OSGi框架实现。

如果你启动了OSGi框架,你应该能够安装上面所讲的com.infoq.minimal-1.0.0.jar( 你还可以用链接地址及install命令直接从网站上进行安装)。每次安装bundle,引擎都 会打印出该bundle的数字ID。

在安装好bundle之前不可能知道bundle的ID是多少,这取决于系统中其它bundle的ID 分配情况;但是你可以使用适当的命令罗列出已安装的bundle将其找出来。

模块化Java:静态模块化(3)

时间:2011-03-29 infoq Alex Blewitt 译:宋玮

依赖

迄今为止,我们只有一个bundle。模块化的一个好处是可以把系统分解为多个小模块 ,在此过程中,减小应用的复杂性。从某种程度上,Java的 package已经做到了这一点: 例如,一个common包有独立的client和server包,他们都依赖于该common包。但是Jetty 最近的例子(client意外地依赖于server)表明做到这一点并不总是很容易。实际上,有 些由OSGi给项目带来的好处纯粹就是强制模块间的模块化约束。

模块化的另一个好处是把''public''包从非public包中分离出来。Java的编译时系统允 许隐藏非public类(在特定包中是可见的),但是不支持更大程度的灵活性。然而在OSGi 模块中,你可以选择哪些包是exported(输出)的,这就意味着没有输出的包对其他模块 是不可见的。

让我们继续开发一个功能,用来初始化URI Templates(与Restlet中使用的一样)。 因为该功能可重用,我们想将其放在一个单独模块中,让使用它的客户端依赖于它。(通 常,bundle不适合这么细粒度的用法,但是其可用于说明工作原理)。该功能将根据一个 模板(比如h

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号