bundle之间存在耦合,就必然存在依赖关系,由于osgi特殊的classloader组织结构,osgi的bundle之间及bundle内部的依赖关系稍微比传统java应用稍微复杂点。
首先,在传统java应用中,在运行时,大部分jar包都是由同一个classloader来加载,所以它们在编译时和运行时时的依赖关系基本上是一致的,也就是说你编译通过了,在运行时,如果将编译时需要的jar包加载了,就一般不会存在在ClassNotFound之类的问题,所以通常做传统java应用开发的开发人员不需要或较少理会“编译时”和“运行时”两个阶段。
而在osgi语境下,编译时依赖和运行时依赖通常存在较大差别。 假设我们以maven来管理bundle的工程项目。
首先,bundle的编译是和manifest.mf无关的,无论manifest.mf里作了任何设置,都只会被原样打包到目标bundle里,编译器根本不会去解析manifest.mf。bundle编译时只与maven里的pom指定的依赖相关,如果bundle里的代码中引用了第三方包,那么pom里就需要显式指定或隐式地继承对这个第三方包的依赖。否则就无法编译通过。
而在运行时,bundle的状态从installed,到resolved,再到active。在installed到resolved的迁移过程中,需要满足manifest.mf中的import-package的条件,也就是必须有其它bundle export出这些packages,否则无法resolved。所以,bundle的运行时的依赖首先就是由manifest.mf里的import-package指定了(Bundle-Required等项也限定了)。而这时,原来在maven的pom.xml里指定的依赖关系不会影响bundle的resolve过程。
从上面分析可知,bundle的编译时和运行时的依赖关系是有区别的。 如果我们在maven的pom.xml中指定了多余的依赖关系,一般并不影响bundle的编译(除非有包的冲突)。但如果在manifest.mf的import-package里指定了多余的package,就可能会导致bundle无法resolved。
分享到:
相关推荐
OSGI bundle 在线用户管理 邮件发送
基于 equinox 的 OSGI 运行BUNDLE例子,已包含 ECLIPSE 下的OSGI平台包,按步骤运行即可。 当然,设置JAVA_HOME,及BIN环境变量运行JAVAC 就不用说了 ^-^
NULL 博文链接:https://salever.iteye.com/blog/1474694
osgi发布http服务的各种bundle,各种jar包,全全全~非常好用的技术包 包括:org.eclipse.equinox.http_1.0.0.v20060601a.jar org.eclipse.equinox.ds_1.0.0.v20060601a.jar org.eclipse.equinox.servlet.api_1.0.0...
NULL 博文链接:https://qtlkw.iteye.com/blog/2214254
OSGi with CAR-Bundle.ppt
本文将介绍 Equinox 的 ServletBridge 项目,提供一个示例来说明如何使用 ... 前一种:和普通的 OSGI bundle 开发差不多,而后一种:Equinox 提供 servletBridge 来将 OSGI framework 和 Servelet Container 联系起来。
osgi多个bundle之间读取同一配置文件,需要单独添加一个用来读取配置文件的bundle
博文链接:https://jiahej.iteye.com/blog/220177
OSGI原理与最佳实践的完整版,共12章 第1 章OSGi 简介 第2 章OSGi 框架简介 第3 章基于Spring-DM 实现Petstore 第4 章基于Apache CXF 实现分布式Petstore 第5 章构建OSGI Bundle Repositor'y 第6 章OSGi 规范解读 ...
osgi helloworld 实例,适合初学者。分为server和client两个bundle.
OSGi原理与最佳实践基于作者多年使用0SGi的经验而编写,涵盖了0SGi从/kfqN深入的知识体系,从OSGi的简介开始,介绍OSGi的作用及基本概念;其后进入OSGi实战,结合实例讲解如何基于OSGi框架编写模块化、动态化的各种...
基于osgi整合ssm框架开发web项目,使用ssm注解的方式开发,缺少两个jsp文件,能运行
探索 OSGi 框架的组件运行机制探索 OSGi 框架的组件运行机制
编译 mvn软件包将在目标中生成捆绑罐 跑步 将捆绑罐复制到OSGI容器,例如Felix或Faraf ...
osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍osgi介绍
blueprint-osgi-bundle
资源名称:OSGI原理与最佳实践内容简介:国内第一本OSGi图书OSGi国内推广者林昊多年经验的结晶涵盖OSGi从入门到深入的知识体系引领OSGi国内研究和普及本书基于作者多年使用OSGi的经验而编写,涵盖了OSGi从入门到深入...
网上收集的OSGI资料. 包括: OSGi原理与最佳实践(精选版).pdf OSGI实战和源码.rar osgi进阶.pdf Introduce.OSGi.ppt OSGi.in.action.ppt r4.cmpn.pdf r4.core.pdf r4.enterprise.pdf
把OSGI部署成一个可运行的例子,怎样 部署启动一个OSGI