bundle classloader
默认情况一个bundle的classloader可以load本身bundle包含的class资源,至于manifest.mf中描述的其他bundle中的资源,是通过bundle loader做代理的,通过它来找到相关bundle的classloader,然后再load资源
bundle loader 查找class 资源顺序:(适合 eclipse3.3)
1.如果是java系统包,使用parentClassloader
2.如果是osgi代理的包,使用parentClassloader
3.查找import package中的资源
4.查找import bundle的资源
5.查找本身的class 资源
6.查找动态import的资源
7.使用buddy的classloader查找资源
8.使用parentClassloader
代码主要逻辑在org.eclipse.osgi.framework.internal.core.BundleLoader类里面的findClassInternal方法里面
bundle parent classloader
主要取决于系统变量 osgi.parentClassloader,主要有app,ext,fwk,boot四个值,默认是boot
- app 意味着你使用系统的classpath做parentclassloader
- ext 意味中你使用系统的ext做为parentclassloader
- fwk 意味着你使用org.eclipse.osgi_*.jar做为parentclassloader
- boot 意味着你的classloader是 null
分享到:
相关推荐
类的隔离是通过ClassLoader机制实现的,每个Bundle都有自己的ClassLoader,这样确保了模块间的类加载隔离,防止了命名冲突。 类的加载过程遵循经典的Delegation模型,即从父ClassLoader开始查找,找不到再在当前...
在OSGi环境中,每个Bundle都有自己的ClassLoader,从而确保了模块间的隔离性。当需要加载类时,会遵循经典的委托模型,即先尝试从父ClassLoader加载,若未找到再在当前ClassLoader中查找。 #### Bundle类共享机制 ...
这一部分深入探讨了OSGi的核心概念和技术细节,包括OSGi规范、ClassLoader的工作原理、Bundle的生命周期、Bundle之间的通讯机制、Declarative Services(DS)中Component的生命周期和通讯机制,以及...
- **7.3.1 ClassLoader**:深入探讨OSGi的类加载机制及其特点。 - **7.3.2 Bundle的生命周期**:详细说明Bundle的不同状态及其转换过程。 - **7.3.3 Bundle的通讯机制**:介绍Bundle之间如何进行通信,包括...
- **文档结构**:文档分为多个章节,覆盖了从基础到高级的各个方面,包括体验OSGI、OSGI带来的好处、案例分析、框架介绍、基于Equinox的实战等内容。 - **实战内容**: - **做好准备**:介绍了开始OSGI项目之前所...
- **6.7 Equinox基于OSGI的扩展**: 分析了如何利用Equinox提供的API扩展其功能,如添加新的服务或修改现有行为。 - **6.8 现有类型系统基于OSGI的开发** - **6.8.1 B/S**: 如何在浏览器/服务器(B/S)架构中使用OSGI...
- **Bundle上下文**:每个Bundle都有自己的Classloader,这有助于隔离不同Bundle之间的资源。 ##### 1.1.3 声明服务 服务是OSGi的核心组成部分之一,通过服务可以实现模块间的通信和协作。在OSGi中,服务由服务...
文档通过各个章节,逐步深入到OSGi的关键部分,例如ClassLoader、Bundle的生命周期和通讯机制、DS(Declarative Services)中Component的生命周期和通讯机制等。 面向接口的开发是OSGi强调的一个重要方面,文档中...
- **7.3 OSGI关键部分讲解**:深入剖析OSGI中的关键技术点,如类加载器(ClassLoader)、Bundle的生命周期、Bundle间通信机制、声明式服务中的组件生命周期和组件间通信机制等。 #### 八、应用OSGI - **8.1 模块化...
在OSGi环境中,插件被封装为独立的bundle,可以通过API来启动、停止或与其他bundle交互。 6. **Spring Framework的动态加载**: Spring框架提供了强大的插件支持。例如,使用Spring的`ApplicationContext`,可以...
- **类加载机制**:每个bundle有自己的类加载器,通过特定机制加载其他bundle中的类。 #### JVM调优实践 - **调优工具**:如VisualVM、JProfiler等。 - **案例分析**:例如通过监控发现频繁的Full GC导致性能瓶颈,...