osgi中的事件通知机制,采用了Publish-Subscribe 的模式,首先所有的event Handler都需要在osgi框架中将自己进行注册成服务接口为org.osgi.service.event.EventHandler的服务,在注册的同时,需要将自己希望处理的处理的事件的topic和对事件进行过滤的filter作为所注册服务的属性,完成这个操作后,event admin Service就能在进行事件通知时,查找到合适EventHandler来处理所发生的事件。
在进行事件的发布时,Event Publisher从osgi框架中获取到event admin Service,需要借助于event admin Service的两个方法来通知event Handler来处理所发生的事件,一个是同步的sendEvent,另一个是异步的postEvent。
event admin Service是如何来选择event Handler?这就要通过event对象了,从event对象的构造器中就可以看出,event对象中包含了event topic和event 的属性,这样event Handler就能对所发生的事件进行过滤选择了,而且能从event的属性中获得event发生的相关信息。
从上面可以看出Event Publisher和event Handler是通过event admin Service联系起来的,event admin Service起了一个通道的作用。由于osgi框架动态的特性,event admin Service就需要确保event Handler选择的合理性,如:不能让bundle接收到自己被STARTED事件,同时也需要确保event Handler在处理同一个线程所发布的event的先后顺序,如:不能先接收到bundle被UNINSTALLED,然后在接收到这个bundle被INSTALLED。
分享到:
相关推荐
在Atlassian的插件体系中,OSGi事件机制使得插件之间可以订阅和发布事件,从而实现松耦合的交互。 2.6.0版本的Atlassian Plugins OSGi Events提供了丰富的API和工具,以帮助开发人员更好地处理事件。这些事件可以是...
探索 OSGi 框架的组件运行机制探索 OSGi 框架的组件运行机制
在OSGI环境中,消息机制是实现bundle之间通信的关键部分,而服务注册是OSGI中实现模块间服务发现和交互的核心功能。下面将详细探讨这两个知识点。 首先,我们来了解一下OSGI的消息机制。在OSGI框架中,bundle之间的...
OSGi(Open Services Gateway Initiative)是一种开放的标准框架,主要...通过对这些书籍的学习和实践,开发者能够全面理解OSGi的机制,掌握如何在项目中有效应用OSGi,从而构建更加高效、灵活和可维护的Java应用程序。
而在OSGi这样的模块化环境中,ClassLoader机制得到了进一步的发展,实现了更加精细的类加载控制和更好的模块隔离。理解并掌握ClassLoader的工作原理和在OSGi中的应用,对于开发高效、可扩展的Java应用程序至关重要。
OSGI(Open Services Gateway Initiative)是一种模块化系统和Java服务框架,它允许...同时,掌握OSGI的生命周期管理和服务发现机制,以及Spring在OSGI环境下的工作原理,对于构建灵活、可扩展的Eclipse插件至关重要。
首先,"OSGi R4核心规范文档"是理解OSGI机制的基础,R4代表了OSGI的第四代版本。该规范定义了OSGI框架的基础架构,包括模块系统、生命周期管理、服务注册与发现等核心概念。模块系统(Bundle)是OSGI的核心,它允许...
5. **依赖注入**:书中可能涵盖OSGI中的依赖注入机制,这是实现松耦合和简化代码的重要方式。 6. **实际应用**:通过实例,如构建Web应用、企业级应用或嵌入式系统,来展示OSGI的实际应用和优势。 7. **调试与监控...
OSGI使用服务注册和发现机制,允许组件之间通信,而无需硬编码依赖关系。 2. OSGI实战: 在实践中,OSGI被广泛用于大型复杂项目,如企业级应用、嵌入式系统和设备。例如,通过OSGI,开发者可以在不重启整个应用的...
2. **Service**:是bundle之间通信的机制,允许bundle以松散耦合的方式互相协作。 3. **生命周期**:bundle有安装、解析、启动、暂停、停止和卸载等状态,通过OSGi框架进行管理。 4. **类加载器**:每个bundle有自己...
"osgi-demo-2016-06-27"可能包含示例项目的源代码,展示了如何创建和注册服务,如何在bundle之间共享数据,以及如何处理事件。分析这些代码可以帮助理解OSGI的实际工作原理。 7. 实践应用: OSGI常用于嵌入式系统...
- **事件模型**:学习 OSGi 事件模型,了解如何在 bundle 之间通信。 - **安全控制**:掌握 OSGi 安全模型,保护服务免受未经授权的访问。 - **服务追踪**:理解服务追踪机制,方便调试和性能优化。 6. **资源与...
3. **服务化**:OSGi中的服务是一种轻量级的组件间通信机制,通过注册和查找服务,不同的Bundle可以相互协作。 4. **版本化**:OSGi框架支持对Bundle的版本控制,使得同一系统中可以共存同一个组件的多个版本。 5....
2. **动态性**:OSGi提供了完整的交互机制,管理Bundle和服务的生命周期,允许系统在运行时动态地改变行为,增强了系统的灵活性和适应性。 3. **SOA兼容性**:OSGi遵循面向服务的架构(SOA)原则,创建规范且可重用...
服务是OSGI组件间通信的关键机制。组件可以提供服务,其他组件则可以查找并消费这些服务。服务注册和查找过程动态进行,使得系统可以在运行时灵活地发现和使用新的服务。这允许开发者构建松耦合、高度可配置的应用...
OSGI的核心在于其强大的模块化机制,它为开发、部署和管理Java应用程序提供了前所未有的灵活性。 在OSGI中,每个bundle都包含一些Java类,以及描述这些类的元数据。这些元数据定义了bundle的依赖关系,使得系统可以...
4. **事件机制**:OSGi提供了事件发布和订阅机制,允许模块间通过事件进行异步通信,增强了系统的响应性和实时性。 三、OSGi框架的应用场景 1. **嵌入式系统**:由于其轻量级和动态性,OSGi常用于嵌入式设备,如...
此外,它还涵盖了OSGi的供应和解决机制,这些是企业OSGi应用能够灵活运作的关键组件。 为了帮助开发者理解和使用企业OSGi,书中还介绍了如何打包企业OSGi应用。打包对于确保应用在不同环境中一致性和可靠性至关重要...
例如,`org.eclipse.osgi.framework.internal.core.BundleHost`类负责管理bundle的启动和停止,`org.eclipse.osgi.framework.eventmgr.EventAdmin`则展示了OSGi事件模型的实现。 五、应用场景 OSGi在许多领域有着...
2. **类加载器调整**:由于Tomcat和OSGI都有自己的类加载机制,整合时需要调整Tomcat的类加载策略,以兼容OSGI的模块化特性。这可能涉及创建一个新的类加载器,用于加载OSGI Bundle内的类。 3. **配置管理**:OSGI...