`

DS(声明式服务)的应用

阅读更多

Declarative Services 定义

Declarative Services 是一个面向服务的组件模型,它制订的目的是更方便地在 OSGi 服务平台上发布、查找、绑定服务,对服务进行动态管理,如监控服务状态以及解决服务之间的复杂的依赖关系等问题。Declarative Services 采用服务组件的延迟加载以及组件生命周期管理的方式来控制对于内存的占用以及启动的快速,很好的解决了传统的 OSGi 服务模型在开发和部署比较复杂应用时内存占用大、启动慢等问题,并且对服务组件的描述采用XML来实现,十分便于用户理解和使用。 

 

1、 定义服务

    获取 [r1] OSGi的一个eclipse实现。

    在sample.http插件中,编写一个接口UserService, 并把它的package包export暴露给其他插件。

 

2、 服务组件Component

  1> 使用事件策略(像依赖注入的set方式)

    (1)新建Helper类,作为服务组件实现;

public class UserHelper {

	public UserHelper() {
	}

	private static UserHelper INSTANCE;

	public static UserHelper getInstance() {
		return INSTANCE;
	}

	protected void activate() {
		System.out.println("activate "  + this);
		INSTANCE = this;
	}

	protected void deactivate() {
		System.out.println("deactivate "  + this);
		INSTANCE = null;
	}

	private UserService service;

	public UserService getService() {
		return service;
	}

	protected void setService(UserService manager) {
		System.out.println("register user-service : " + manager);
		this.service = manager;
	}

	protected void unSetService(UserService manager) {
		System.out.println("unregister user-service : " + manager);
		this.service = null;
	}

}

 

    (2)添加org.eclipse.equinox.ds插件的依赖;

    (3)在OSGI-INF目录下新建组件New->Plug-in Development->Component Defintion。在MANIFEST.MF中添加Service-Component 属性,指定该 Bundle 应用的服务组件配置文件;

    reference参数含义请查看这里

 

    2> 使用lookup策略,在上下文中通过name获得服务。

 

3、 绑定(实现)服务

   (1) 新建插件sample.http.user.en插件,然后添加sample.http和org.eclipse.equinox.ds的依赖;

   (2) 实现UserService接口。

   (3) 新建Component Defintion,绑定到服务。

 

4、 测试

运行/sample.server/server-web.product,打开浏览器http://localhost/helloworld?username=test

 

源码:

[r1]简单的OSGi :https://github.com/winse/hello/tree/ca902237e03c05f13c7a3cf838de48c825d98dc4

[r2]实现后的DS版本: https://github.com/winse/hello/tree/5ffea88d723bae34099d6c94686436dc8fd2eb28

 

参考资料:

1: 利用 Eclipse 开发基于 OSGi 的 Bundle 应用(使用代码注册服务)

http://www.ibm.com/developerworks/cn/opensource/os-ecl-osgibdev/index.html

2: OSGi 中的 Declarative Services 规范简介

http://www.ibm.com/developerworks/cn/opensource/os-ecl-osgids/index.html

3: Getting Started with OSGi: Declarative Services and Dependencies (这一篇文章太正了!同时是一篇CommandProvider的实现)

http://www.eclipsezone.com/eclipse/forums/t97690.rhtml

4: Getting Started with OSGi: Introducing Declarative Services

http://www.eclipsezone.com/eclipse/forums/t96740.html

5: Declarative Services规范简介及应用

http://marsvaadin.iteye.com/blog/1678286

6: OSGi 中的 Declarative Services 规范简介

http://www.ibm.com/developerworks/cn/opensource/os-ecl-osgids/index.html

  • 大小: 33.4 KB
  • 大小: 49.9 KB
  • 大小: 59 KB
  • 大小: 59.4 KB
分享到:
评论

相关推荐

    OSGI服务 DS EVENT

    DS(Declarative Services)是OSGI中的一个核心服务,它提供了声明式的方式来管理和装配服务。而EVENT则是DS中关于事件处理的部分,用于在OSGI组件之间传递信息和协调工作。 OSGI服务是一种动态的服务注册和发现...

    pb_ds库在OI中的应用

    本文将详细探讨pb_ds库在信息学奥林匹克竞赛(OI)中的应用,包括其基础用法和时间复杂度分析。 首先,pb_ds库的主要特点在于其高度的性能和灵活性。它提供了丰富的数据结构支持,而且其接口设计和STL保持了一致性...

    osgi-ds对应的demo

    DS(Declarative Services)是OSGi框架中的一个重要组件,用于声明式地管理服务。它简化了服务的生命周期管理,让开发者能够通过XML配置文件声明服务的依赖和行为,而不是通过代码来控制。 在标题“osgi-ds对应的...

    《osgi与equinox 创建高度模块化的java系统》第6章DS代码

    本章聚焦于OSGi中的Declarative Services(DS),这是一种声明式的服务管理机制,它简化了服务的生命周期管理。 Declarative Services(DS)是OSGi服务模型的一部分,它允许开发者在配置文件中声明服务的依赖关系和...

    fuse-ds:保险丝 + 声明式服务 + AMQ

    【Fuse-DS:保险丝、声明式服务与AMQ】\n\nFuse-DS是基于开源项目Apache Karaf实现的一款轻量级企业服务框架,它整合了保险丝(Fuse)的中间件技术、声明式服务(Declarative Services)以及ActiveMQ(简称AMQ)的...

    希尔思仪表DS 300-P便携式多功能测量仪操作手册.pdf

    希尔思仪表DS 300-P便携式多功能测量仪是一款由德国CS Instruments GmbH公司生产的工业级测试设备。该设备广泛适用于各种测量和检测领域,特别适合于对流量、露点、压力等参数进行精确测量和监控。DS 300-P的特点...

    DS18B20数字式温度传感器STM32所有工程文件

    标题中的“DS18B20数字式温度传感器STM32所有工程文件”指的是一个基于STM32微控制器的项目,该项目专注于利用DS18B20传感器进行温度测量。DS18B20是一款非常流行的数字温度传感器,它可以直接与微控制器通信,无需...

    ARM DS-5 Eclipse 集成开发环境使用手册v5.16

    ARM DS-5提供了从系统分析、调试到性能分析等一站式解决方案,极大地方便了软件和硬件工程师进行高效、专业的开发和调试工作。 Eclipse是一个开源的集成开发环境,最初由IBM发起,是一个可以支持多种编程语言的跨...

    DS1302.zip

    通常,这类库会有一个主头文件(如 `DS1302.h`),包含了对外接口的声明,以及一个或多个实现文件(如 `DS1302.cpp`),包含了函数的具体实现。用户在 Arduino Sketch 中通过包含头文件,就可以使用库提供的功能。 ...

    温度传感器DS18B20 用串口助手显示

    温度传感器DS18B20是一款广泛应用于物联网和智能家居领域的数字式温度传感器,它可以直接输出数字信号,无需ADC转换,简化了系统设计。本话题主要围绕DS18B20在单片机上的应用,以及如何通过串口助手来查看其测得的...

    DS18B20温度控制+LED显示

    `DS18b20.h`可能包含了DS18B20的相关函数声明,如读取温度数据、配置传感器等。`kechengsheji.hex`是编译后的目标文件,用于烧录到微控制器中执行。而`.bak`和`.dsn`文件可能为项目开发过程中的备份或者工程文件。 ...

    实例(进阶篇)之DS18B20测温

    DS18B20是由DALLAS公司生产的一款一线式数字温度传感器,其小巧的3引脚TO-92封装形式使得它在各种环境中都能方便地安装和使用。这款传感器的主要特点包括: - 温度测量范围广泛:从-55℃到+125℃。 - 可编程A/D转换...

    ds1302\DS1302八位数码管C语言可调时钟日历

    根据给定的信息,本文将详细解释DS1302芯片的...综上所述,该程序通过DS1302芯片实现了时钟和日历的功能,并通过按键控制显示和调整时间及日期,适用于各种需要实时时间显示的应用场景,如智能家居、教学实验等领域。

    ds302--xilinx v4 datasheet

    ### Xilinx Virtex-4 FPGA 数据手册 (DS302 v4) 知识点解析 #### 一、概述 Xilinx Virtex-4 FPGA 是一款...此外,配套的文档集为用户提供了一站式的资源,帮助他们在项目开发过程中充分利用Virtex-4 FPGA的强大功能。

    motorola DS457

    ### Motorola DS457 固定式安装图像扫描器集成指南关键知识点 #### 一、产品概述 **Motorola DS457**是一款高性能固定式安装图像扫描器,专为工业自动化、零售、医疗保健等行业设计。该设备采用先进的成像技术,...

    RTC时钟芯片DS1302驱动程序

    DS1302是Maxim Integrated公司生产的一款低功耗、高性能的RTC时钟芯片,常被应用于各种嵌入式系统、消费电子设备和便携式产品中。 DS1302的主要特点包括: 1. 内置SRAM用于保存日期和时间数据。 2. 采用串行接口与...

    PyPI 官网下载 | ds-gear-0.1.18.tar.gz

    "云原生"(cloud native)是一个现代软件开发和部署的术语,它强调利用容器、微服务、持续交付和声明式API等技术,构建能够充分利用云计算优势的应用。ds-gear与云原生的关联意味着它可能支持云环境中的敏捷部署、...

    3ds模型导入opengl,实现旋转平移缩放

    在计算机图形学领域,将3ds模型导入到OpenGL是一个常见的任务,这涉及到3D对象的创建、纹理映射以及交互式操作。以下是对这个过程的详细解析: 首先,"3ds模型"是一种由Autodesk 3ds Max创建的三维模型文件格式,...

    OSGi Technology 教程

    OSGi(Open Services Gateway Initiative)...通过这个系列的教程,开发者将全面了解OSGi技术,包括基本概念、服务注册与消费、依赖管理以及声明式服务的使用,从而能够构建更灵活、可扩展且易于维护的Java应用程序。

Global site tag (gtag.js) - Google Analytics