模块化Java:动态模块化 - 编程入门网
功能描述和厂商)。
只要该bundle一启动,缩写服务就可用了。当bundle停止,框架将自动取消 服务注册。如果我们想要自己取消注册(比方说,对错误代码和网络接口不可用 所作出的响应)也很容易(用context.unregisterService())。 使用服务 一旦服务起来并运行之后,我们就可以用client访问它了。如果运行的是 Equinox,你可以用services命令罗列所有已安装的服务,以及它们是由谁注册 的:
在调用服务处理URL之前,client需要解析服务。我们需要获得一个服务引用 ,它可以让我们查看服务自身内部的属性,然后利用其来获得我们感兴趣的服务 。可是,我们需要能够重复处理相同及不同的URL,以便我们可以把它集成到 Equinox或Felix的shell里。实现如下:
模块化Java:动态模块化(4)时间:2010-11-29 infoq 译:宋玮当shorten方法被调用时,上面这段程序将查找服务引用并获得服务对象。然 后我们可以把服务对象赋值给一个IShorten对象,并使用它与前面讲到的已注册 服务进行交互。注意这些都是在同一个VM中发生的;没有远程调用,没有强制异 常,没有参数被序列化;只是一个POJO与另一个POJO对话。实际上,这里与最开 始class.forName()例子的唯一区别是:我们如何获得shorten POJO。 为了在Equinox和Felix里面使用这一服务,我们需要放一些样板代码进去。 必须提一下,当我们定义manifest时,我们可以在 Felix和 Equinox命令行上声 明可选依赖,这样,当我们两者中任何一个安装之后,我们就可以运行了。(一 个更好的解决方案是将其部署为单独的bundles,这样我们可以去掉选项;但是 如果bundle不存在,activator将会失败,因此无法启动)。Equinox和Felix特 定命令的源代码在com.infoq.shorten.command bundle中。 如果我们安装了命令client bundle,我们将得到一个新命令,shorten,通 过OSGi shell可以调用它。要运行该命令,需要先执行java -jar equinox.jar -console -noExit或java -jar bin/felix.jar,然后安装bundle,之后你就可 以使用该命令了:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |