OSGI context提供service register方法负责osgi服务的注册发布,服务发布时,可带上服务属性,这些服务属性可用于服务引用方查找服务时的filter。
一般来说,没有依赖的简单服务,可以直接在bundle的activator start方法里注册发布,但通常情况下,服务都会存在或多或少的依赖,由于osgi平台的动态性,被依赖的服务并不能确定在依赖它的服务所在的bundle启动前变为可用,所以,一般会借助service tracker来监听服务注册的事件,当被依赖的服务可用时,service tracker就能感知到,进而引用它,然后发布自己的服务,这样服务之间的依赖关系就不会受限于bundle的启动次序,而bundle的启动次序并不是确定。
除了采用java代码方式注册服务之外,Declarative Service、Blueprint都提供更简便的方式实现服务的注册和引用,并管理服务间的依赖关系。
但无论是Declarative Service还是Blueprint,其本质还是用osgi的service register、servicetracker之类来注册服务,只是这些工作有Declarative Service或Blueprint容器负责 ,你需要做的事就是写好相应的XML文档。
至于Declarative Service或Blueprint容器如何实现osgi服务的发布与引用,则是后话。
分享到:
相关推荐
但是,这种方式也存在一些缺点,如:OSGi 的动态性无法保证获取的引用长期有效,每次访问都需要手动释放服务,过于依赖 bundle 的启动顺序。因此,这种方式不推荐使用。 2. Listener 方式 Listener 方式是 OSGi ...
服务提供者实现服务接口,并通过服务注册表发布服务。服务消费者则查找并绑定到所需的服务,从而使用服务提供的功能。这种松耦合的设计使得OSGi服务具有高度的可扩展性和适应性。 标签“osgi服务”强调了这个示例的...
- 绑定服务:一旦找到服务,bundle通常会保持对服务实例的引用,并在需要时调用服务接口中定义的方法。 3. 服务的动态性 OSGi服务层的一个重要特性是服务的完全动态性。这意味着服务可以在任何时候改变或消失。...
在OSGI框架中,bundle之间的通信主要通过服务事件和服务引用来实现。服务事件允许bundle监听其他bundle提供的服务的变化,例如服务的注册、修改或注销。这些事件可以被感兴趣的bundle订阅,以便在服务状态改变时采取...
它允许开发者使用熟悉的Spring配置来定义服务和引用,简化了OSGi环境下的应用开发。 2. 自动化服务注册和发现:Spring DM会自动将Spring Bean注册为OSGi服务,并自动发现其他服务进行注入,降低了服务集成的复杂度。...
服务层则提供了动态服务管理,允许服务的发布、查找和绑定,以满足模块间的通信需求。有两种使用服务的方式,一种是直接通过服务接口,另一种是通过服务注册表。 总之,OSGi为Java开发带来了模块化、动态性和服务化...
**SCA与OSGI(Open Services Gateway Initiative)** 有所不同,OSGI最初设计用于移动设备计算,关注点在于动态管理和模块化,而SCA专注于企业级应用集成。尽管两者都涉及服务和组件的概念,但OSGI更注重运行时环境...
组件通过声明服务接口来定义其公开的功能,并通过引用其他组件的服务来使用外部功能。 ### 6. 服务 服务是OSGi组件之间通信的桥梁。一个组件可以发布一个服务,其他组件可以查找并使用这个服务。服务注册和发现...
5. **服务发现和消费**: 由于OSGi的动态性,服务可以在运行时被发布和发现。通过Blueprint,我们可以声明服务引用,当服务可用时,它会被自动注入到我们的bean中。 6. **测试和调试**: 在OSGi环境中,测试和调试...
- **服务导向**:OSGi服务允许模块之间通过接口进行通信,而不是直接引用彼此,增强了系统的可插拔性和可重用性。 - **生命周期管理**:Bundle有启动、暂停、停止和更新等生命周期状态,可以通过OSGi框架动态地控制...
3. **服务接口设计**: 设计清晰的服务接口,提供服务的发布和消费机制,减少模块间的直接引用。 4. **动态部署与更新**: 利用OSGI的动态性,实现热更新和热部署,减少系统停机时间。 5. **使用OSGI框架**: 如...
2. **服务导向**:OSGi强调服务的概念,允许模块之间通过服务接口进行通信,而不是直接引用彼此的内部实现。这降低了模块间的耦合度,增强了系统的可扩展性和灵活性。 3. **生命周期管理**:OSGi框架提供对Bundle的...
OSGi框架定义了服务引用和服务对象的概念,以及发布服务和绑定服务的生命周期。 OSGi框架允许开发者在服务层动态地发现和绑定服务。当一个模块想要使用另一个模块提供的服务时,它可以注册一个服务监听器来监听感...
5. **事件机制**:当Bundle的状态改变或服务注册/注销时,OSGI会发布相应的事件,允许其他模块监听并作出响应。 **三、OSGI在实际开发中的应用** 1. **大型项目模块化**:OSGI可以帮助大型项目实现模块化,每个...
具体而言,它介绍了如何解决与Spring和Hibernate的集成问题,如何在Spring bean.xml文件中发布和引用OSGi服务,以及如何重构留言板列表模块。这些集成实践对于想要把现有应用迁移到OSGi平台的开发者来说至关重要。 ...
这种实现方式需要手动管理服务的生命周期和依赖关系,可能涉及服务的查找、引用和解除引用等操作。 2. OSGi Declarative Services (DS) 实现: DS是OSGi规范中的一个重要部分,它简化了服务的生命周期管理和依赖...
**OSGi企业版本的技术规范**是OSGi联盟为满足企业级应用的需求而制定的一套详细的技术标准与指导原则。该规范旨在提供一个灵活且可扩展的框架,支持复杂的企业级应用开发与部署。 #### 二、OSGi核心框架解析 #####...
- **服务**:OSGi服务是一种动态发现和交互的方式,允许模块之间共享功能,而无需直接引用。 - **生命周期管理**:OSGi支持bundle的安装、启动、停止、更新和卸载,使开发者能动态管理应用程序组件。 - **包解析*...
OSGi服务层是OSGi框架的核心特性,提供了发布、绑定和查找服务的能力,使得服务提供者和服务请求者能够动态协作。 在OSGi服务中,服务具有接口和实现,发布在OSGi框架上,并通过注册服务来暴露其功能。服务可以通过...