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
相关推荐
中文资料。制茶温控系统。 以电加热为基础的制茶机械易于实现温 度的自动控制 , 虽然基于双金属片的自动控 ...绍一种以数字温度传感器 DS1820 为温敏元 件 , 运用80C592 单片机为微处理器的全数 字式温度测试系统。
:基于DS18B20 的温度控制系统,利用C8051F020 及其外围接口电路对直流稳压电源温度进行测量控制。 温度传感器DS18B20 对直流电源三点测温,信号通过C8051F020 进行处理。若温度超过设定值,C8051F020 发出控 制指令...
本资源包含SAP-PPDS 自开发启发式的配置和开发两部分内容,完整版示例代码,代码也有详细的注释,超级稀有!
DS串应用--KMP算法DS串应用--KMP算法DS串应用--KMP算法DS串应用--KMP算法
3ds Max Composite合成贴图工具3ds Max Composite合成贴图工具可支持动态高光(HDR)等特效,该工具基于Autodesk公司的Toxik软件
C51单片机 项目3-数字温度传感器DS18B20应用 (仿真文件+程序包)C51单片机 项目3-数字温度传感器DS18B20应用 (仿真文件+程序包)C51单片机 项目3-数字温度传感器DS18B20应用 (仿真文件+程序包)C51单片机 项目3-...
1-Wire开发应用 应用笔记192 DS2480B串行接口
基于Keil+51单片机DS1302时钟+DS18B20+无线遥控应用程序与仿真(源码+仿真)基于Keil+51单片机DS1302时钟+DS18B20+无线遥控应用程序与仿真(源码+仿真)基于Keil+51单片机DS1302时钟+DS18B20+无线遥控应用程序与仿真...
DS18B20原理及应用实例参考.pdf
DS18B20中文资料+详细应用说明 DS18B20中文资料+详细应用说明
DS12887是美国达拉斯半导体公司最新推出的时钟芯片,采用CMOS技术制成,把时钟芯片所需的晶振和外部锂电池相关电路集于芯片内部,同时它与目前 IBM AT计算机常用的时钟芯片MC146818B和DS1287管脚兼容,可直接替换。...
基于51的ds18b20应用实例 内涵protues仿真!
利用ds1302和ds18b20制作的例子。大家可以看一下,在网上很难找到关于这方面的东西。
多个中断服务程序,对周期性要求不高任务的可 在主程序中进行处理,对周期性有严格要求的 任务及随机发生的事件则放在各中断中服务程序 中。为了保持对对象的有效控制,一般每几毫 秒~几十毫秒须进行采样和处理,也...
DS18B20温度传感器应用实验 DS18B20温度传感器应用实验 DS18B20温度传感器应用实验
ds18b20应用源码
对误码测试芯片DS21354的典型应用,给出具体参考
本文介绍了数字式温度传感器DS1624的特性,工作原理,以及在温度检测系 统中的电路设计、软件设计,并讨论了使用中的注意事项。
DS18B20原理及应用,数字温度传感器DS18B20的工作原理及在变电站测温的应用
单片机C语言程序设计 用DS1302与1602LCD设计的可调式电子日历与时钟(有源码)单片机C语言程序设计 用DS1302与1602LCD设计的可调式电子日历与时钟(有源码)单片机C语言程序设计 用DS1302与1602LCD设计的可调式电子...