Declarative Services is a declarative model which provides a publish/find/bind model for using services. DS is a new service from OSGi R4.
DS simplifies the task of authoring services by performing the work of registering services and handling service dependencies.
DS helps de-couple service bundles from the OSGi framework and other service bundles. Service bundles don't need to provide a BundleActivator class to collaborate with other through the service registry.
To provide DS, a DS description file is necessary. I usually use OSGI-INF/service.xml.
Here is an example to declare a service and its referencing service:
<?xml version="1.0" encoding="UTF-8"?>
<component name="AuthServiceImpl">
<implementation class="com.ibm.csdl.scakm.auth.impl.AuthServiceImpl"/>
<reference name="useradmin" interface="org.osgi.service.useradmin.UserAdmin" bind="setUserAdmin" unbind="unsetUserAdmin"/>
<service>
<provide interface="com.ibm.csdl.scakm.auth.AuthService"/>
</service>
</component>
A DS component has the following major parts:
1. service provided to service registry with specified interface (optional)
2. service implementation class or class factory (mandatory)
2. service references with specified interface (optional)
A bit like SCA model, huh?
The component class must implement the declared interface and at bundle startup time, the implementation will be registered in service registry to provide the capability of the interface. Sometimes the component needs to use services provided by other compnents, so it declares to find and bind those services by specified interfaces at startup time.
In the example, the component is implemented by AuthServiceImpl class, and offers service with com.ibm.csdl.scakm.auth.AuthService interface, and it references another service by interface org.osgi.service.useradmin.UserAdmin which is an OSGi standard service.
Let's see how another service uses the service in the example:
<?xml version="1.0" encoding="UTF-8"?>
<component name="AdminConsole">
<implementation class="com.ibm.csdl.scakm.console.AdminCommandProvider"/>
<reference name="auth" interface="com.ibm.csdl.scakm.auth.AuthService" bind="setAuthService" unbind="unsetAuthService"/>
</component>
Here the component doesn't provide a service to outside world, but only uses a service with interface com.ibm.csdl.scakm.auth.AuthService. At startup time, DS will resolve the reference between these two components, and set the AuthServiceImpl class instance to AdminCommandProvider.
分享到:
相关推荐
Declarative Services(DS),在OSGi环境中,是一种声明式的方式来管理服务和组件的机制。它的核心思想是通过XML配置文件来定义服务的提供者和消费者,而不是通过代码直接引用和依赖其他服务,从而实现更加灵活和...
DS(Declarative Services)是OSGi框架中的一个重要组件,用于声明式地管理服务。它简化了服务的生命周期管理,让开发者能够通过XML配置文件声明服务的依赖和行为,而不是通过代码来控制。 在标题“osgi-ds对应的...
本章聚焦于OSGi中的Declarative Services(DS),这是一种声明式的服务管理机制,它简化了服务的生命周期管理。 Declarative Services(DS)是OSGi服务模型的一部分,它允许开发者在配置文件中声明服务的依赖关系和...
2. OSGi Declarative Services (DS) 实现: DS是OSGi规范中的一个重要部分,它简化了服务的生命周期管理和依赖注入。在DS中,服务的声明和依赖关系都在XML配置文件(通常是MANIFEST.MF或_metatype/目录下的*.xml...
1. **OSGI简单实例DS**:这里的DS可能指的是Declarative Services,它是OSGI框架中的一个组件模型。Declarative Services允许开发者声明式地定义服务及其依赖关系,而不是通过编程方式管理服务生命周期。通过XML配置...
这是使用OSGi Declarative Services从头开始构建的最小的独立RESTful服务器,旨在证明OSGi不仅适用于超人大师。 该示例演示了OSGi应用程序的完整生命周期,从启动框架和安装所需的捆绑包到运行应用程序本身。 它还...
"Getting Started with OSGi 7 Introducing Declarative Services.doc"引入了声明式服务(Declarative Services,DS),这是OSGi中一种简化服务管理的方法。DS允许开发者通过XML配置文件来声明服务依赖和生命周期...
5. **Blueprint或Declarative Services**:这两种是OSGi中的服务配置方式,Blueprint更接近XML,而Declarative Services使用注解,简化了服务的声明和管理。 6. **远程服务**:OSGi Remote Services允许Bundle之间...
这个Bundle不仅包含Servlet类,还必须包含一个Servlet的部署描述符(如web.xml),尽管在OSGi中,通常推荐使用Declarative Services(DS)来注册Servlet。 5. **编写Declarative Services**:DS是OSGi标准的一部分...
4. **DS(Declarative Services)**:DS是OSGI中的一种服务组件模型,它允许开发者通过XML配置文件声明服务的生命周期和依赖关系,简化了服务的管理和维护。 5. **事件机制**:OSGI提供了一种事件传递机制,允许...
本文档基于`osgi.r4.services.pdf`文件提供的内容,深入探讨OSGi R4服务规范中的关键概念和技术要点。 #### 二、OSGi服务平台发布版4简介 - **发布日期**:2005年8月。 - **版权所有**:OSGi联盟版权所有2005年、...
在《OSGI进阶.pdf》这本书中,可能涵盖了更深入的话题,比如bundle的打包和部署、服务注册与查找、bundle间通信的协议(如白板模式和Declarative Services)以及如何使用OSGi进行企业级应用开发。这本书可能会详细...
Eclipse-plugins 插件,eclipse 各种插件 .jar 包,免费下载 eclipse202106 -plugins 各种插件 .jar 包,免费下载 如果下载不了,关注我,评论区联系我, Eclipse-plugins eclipse, plugins, eclipse202106, ...
客户端和服务端的实现通常会涉及到OSGi的Declarative Services(DS)或Blueprint,它们是声明式服务配置的方式,通过XML文件定义服务的依赖和行为。在DS中,我们可以使用`@Component`和`@Reference`注解来声明服务...
DS(Declarative Services)是OSGI中的一个核心服务,它提供了声明式的方式来管理和装配服务。而EVENT则是DS中关于事件处理的部分,用于在OSGI组件之间传递信息和协调工作。 OSGI服务是一种动态的服务注册和发现...
- Spring与OSGi的整合:介绍如何在OSGi环境中使用Spring,如使用Declarative Services或Blueprint API。 - 微服务架构:讨论如何利用OSGi的模块化特性构建微服务,实现松耦合和独立部署。 - AOP在OSGi中的应用:...
2. **Declarative Services (DS)**:在OSGi中,推荐使用Declarative Services来声明和管理服务,而不是直接在代码中硬编码依赖。DS允许在运行时动态发现和注入服务,包括事务管理服务。 3. **Transaction Manager**...
可能会包括如何创建和打包OSGi Bundle、配置Manifest文件(包含Bundle的元数据)、使用Blueprint或Declarative Services进行服务声明、理解OSGi的生命周期管理以及如何在实际项目中应用OSGi技术。 **OSGi原理与最佳...
7. **Blueprint和Declarative Services**:讲解OSGI中两种常见的服务配置方式,Blueprint XML和Declarative Services,它们简化了服务的声明和管理。 8. **Equinox与Felix**:作为OSGI实现的两个主流框架,Equinox...