利用OSGi解决Eclipse插件难题 - 编程入门网
nym="broker"/>
</extension>
</plugin>
客户可以考虑创建一个接受以下参数的包装工厂类,如扩展点 ID、扩展 ID、元素名称(本例中是同 义词)、实际属性和资源包 ID。该包装类将参数格式化为类似上面代码的 XML 字符串。然后将此 XML 字符串读入将被传入到 IExtensionRegistry 接口的 addContribution() 方法的 ByteArrayInputStream 中。只有此方法的其他必需参数是用户标记和资源包 ID。值得注意的一点是,资源包 ID 应是做出该贡 献的资源包的 ID,不是在其中定义扩展点的资源包的 ID。 警告和提示 在 M5(于 2006 年 2 月 17 日构建的 Eclipse)中引入的一个特性是,对 addContributions() 的 调用是异步调用。这意味着该扩展不可立即使用,因为 Eclipse 启动了一项执行实际注册的作业。简单 地说,您必须开始自己的作业并与之同步,以获得任何类型的同步行为。 为了使此项任务更容易,下面给出了三条提示: 创建一项将其本身注册为一个 RegistryChangeListener 的新作业。 该作业运行时,确保您的作业代码侦听 RegistryListener 回调的 isRegistered 集合。 一旦所有注册完成,即退出您的作业。 当然,现在我们必须将调用代码与生成的作业结合起来,以获得同步调用。这只有在代码要求立即使 用扩展时才得到保证。希望您的代码设计为惰性,这样初始化就变得不重要。 结束语 动态扩展的使用可以通过编程方式创建。通过使用 OSGi 框架侦听服务何时可用(加载或卸载),动 态扩展增强了退耦功能。一起使用这些技术将允许声明性的贡献和组件之间 100% 退耦。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |