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
相关推荐
DS(Declarative Services)是OSGI中的一个核心服务,它提供了声明式的方式来管理和装配服务。而EVENT则是DS中关于事件处理的部分,用于在OSGI组件之间传递信息和协调工作。 OSGI服务是一种动态的服务注册和发现...
DS(Declarative Services)是OSGi框架中的一个重要组件,用于声明式地管理服务。它简化了服务的生命周期管理,让开发者能够通过XML配置文件声明服务的依赖和行为,而不是通过代码来控制。 在标题“osgi-ds对应的...
本文将详细探讨pb_ds库在信息学奥林匹克竞赛(OI)中的应用,包括其基础用法和时间复杂度分析。 首先,pb_ds库的主要特点在于其高度的性能和灵活性。它提供了丰富的数据结构支持,而且其接口设计和STL保持了一致性...
本章聚焦于OSGi中的Declarative Services(DS),这是一种声明式的服务管理机制,它简化了服务的生命周期管理。 Declarative Services(DS)是OSGi服务模型的一部分,它允许开发者在配置文件中声明服务的依赖关系和...
【Fuse-DS:保险丝、声明式服务与AMQ】\n\nFuse-DS是基于开源项目Apache Karaf实现的一款轻量级企业服务框架,它整合了保险丝(Fuse)的中间件技术、声明式服务(Declarative Services)以及ActiveMQ(简称AMQ)的...
希尔思仪表DS 300-P便携式多功能测量仪是一款由德国CS Instruments GmbH公司生产的工业级测试设备。该设备广泛适用于各种测量和检测领域,特别适合于对流量、露点、压力等参数进行精确测量和监控。DS 300-P的特点...
标题中的“DS18B20数字式温度传感器STM32所有工程文件”指的是一个基于STM32微控制器的项目,该项目专注于利用DS18B20传感器进行温度测量。DS18B20是一款非常流行的数字温度传感器,它可以直接与微控制器通信,无需...
ARM DS-5提供了从系统分析、调试到性能分析等一站式解决方案,极大地方便了软件和硬件工程师进行高效、专业的开发和调试工作。 Eclipse是一个开源的集成开发环境,最初由IBM发起,是一个可以支持多种编程语言的跨...
通常,这类库会有一个主头文件(如 `DS1302.h`),包含了对外接口的声明,以及一个或多个实现文件(如 `DS1302.cpp`),包含了函数的具体实现。用户在 Arduino Sketch 中通过包含头文件,就可以使用库提供的功能。 ...
温度传感器DS18B20是一款广泛应用于物联网和智能家居领域的数字式温度传感器,它可以直接输出数字信号,无需ADC转换,简化了系统设计。本话题主要围绕DS18B20在单片机上的应用,以及如何通过串口助手来查看其测得的...
`DS18b20.h`可能包含了DS18B20的相关函数声明,如读取温度数据、配置传感器等。`kechengsheji.hex`是编译后的目标文件,用于烧录到微控制器中执行。而`.bak`和`.dsn`文件可能为项目开发过程中的备份或者工程文件。 ...
DS18B20是由DALLAS公司生产的一款一线式数字温度传感器,其小巧的3引脚TO-92封装形式使得它在各种环境中都能方便地安装和使用。这款传感器的主要特点包括: - 温度测量范围广泛:从-55℃到+125℃。 - 可编程A/D转换...
### Motorola DS457 固定式安装图像扫描器集成指南关键知识点 #### 一、产品概述 **Motorola DS457**是一款高性能固定式安装图像扫描器,专为工业自动化、零售、医疗保健等行业设计。该设备采用先进的成像技术,...
DS1302是Maxim Integrated公司生产的一款低功耗、高性能的RTC时钟芯片,常被应用于各种嵌入式系统、消费电子设备和便携式产品中。 DS1302的主要特点包括: 1. 内置SRAM用于保存日期和时间数据。 2. 采用串行接口与...
### Xilinx Virtex-4 FPGA 数据手册 (DS302 v4) 知识点解析 #### 一、概述 Xilinx Virtex-4 FPGA 是一款...此外,配套的文档集为用户提供了一站式的资源,帮助他们在项目开发过程中充分利用Virtex-4 FPGA的强大功能。
"云原生"(cloud native)是一个现代软件开发和部署的术语,它强调利用容器、微服务、持续交付和声明式API等技术,构建能够充分利用云计算优势的应用。ds-gear与云原生的关联意味着它可能支持云环境中的敏捷部署、...
在计算机图形学领域,将3ds模型导入到OpenGL是一个常见的任务,这涉及到3D对象的创建、纹理映射以及交互式操作。以下是对这个过程的详细解析: 首先,"3ds模型"是一种由Autodesk 3ds Max创建的三维模型文件格式,...
OSGi(Open Services Gateway Initiative)...通过这个系列的教程,开发者将全面了解OSGi技术,包括基本概念、服务注册与消费、依赖管理以及声明式服务的使用,从而能够构建更灵活、可扩展且易于维护的Java应用程序。