OSGI系列 服务注册
来源:互联网 发布:centos 指令 编辑:程序博客网 时间:2024/04/29 21:13
之前一直都是在说在blueprint中怎么发布(注册)服务以及获取服务,现在就来说说怎么通过代码来发布(注册)我们的服务和获取服务的
前提,需要引入咱们OSGI环境的依赖包:
一、发布(注册)服务
1、首先,我们来创建咱们的服务接口以及实现
服务接口:IService1.java
服务接口:Service1.java
2、然后,写一个Activator类,该类专用来注册服务的
public class Activator { protected static final Logger logger = LoggerFactory.getLogger(Activator.class); private BundleContext bundleContext; private Service1 service1; private Service2 service2; private ServiceRegistration serviceServiceRegistration; public void start() { Dictionary<String, String> properties = new Hashtable<>(); properties.put("service.exported.interfaces","*"); properties.put("service.exported.configs","service.rpc"); serviceServiceRegistration = bundleContext.registerService(Service1.class.getName(), service1, properties); serviceServiceRegistration = bundleContext.registerService(Service2.class.getName(), service2, properties); logger.info("Score core started"); } public void stop() { serviceServiceRegistration.unregister(); } public void setBundleContext(BundleContext bundleContext) { this.bundleContext = bundleContext; } public void setService1(Service1 service1) { this.service1 = service1; } public void setService2(Service2 service2) { this.service2 = service2; } }
二、获取服务
1、方式一(推荐)
ServiceTracker tracker = new ServiceTracker(context, Service1.class.getName(), null);tracker.open();Service1 service = (Service1) tracker.getService();if(service!=null)service.log(Service1.LOG_INFO,"ok");// 获取多个ServiceObject[] services = tracker.getServices();// 获取Service的数量int count = tracker.getTrackingCount();tracker.close();
2、方式二(最原始)
// 获取Service引用ServiceReference ref = context.getServiceReference(LogService.class.getName());if(ref!=null){// 获取Service实例Service1 service = (Service1) context.getService(ref);if (service != null) {// 调用Service方法service.log(Service1.LOG_INFO, "ok");// 释放Service,在此之后不应该再继续使用Service实例context.ungetService(ref);}}
0 0
- OSGI系列 服务注册
- OSGi 起步(4): 注册服务
- OSGI系列 WebService发布服务
- OSGI系列 Restful发布服务
- OSGI服务注册、引用、以及跟踪
- OSGI动态注册和创建服务
- [转] 简单osgi实践---ds注册服务
- OSGi 探秘系列 (5)- OSGi之动态服务
- OSGI传统注册式服务与声明式服务
- OSGI系列 Servlet-Rest发布Http服务
- osgi注册服务和servlet的两种方法
- OSGi服务
- OSGi入门必读系列《OSGi服务:非常适合SOA的架构》
- 使用OSGI的服务
- OSGI服务层
- 计算机服务平台OSGi
- OSGi服务平台
- OSGi服务管理
- ndis协议驱动总结---发文于2013-12-30
- httpclient 4.3.x 版本 post 中文乱码问题
- java代码创建文件和文件夹
- ndis小端口驱动总结---发文于2014.1.1
- Mybatis学习(2)以接口的方式编程
- OSGI系列 服务注册
- linux学习
- 对360沙盒的驱动的一点逆向分析---发文于2014-1-19
- Bitmap 究竟占多大内存?
- MIT算法导论-第12讲-最小生成树-Kruskal算法+并查集
- [乡土民间故事_徐苟三传奇]第六回_放牛伢妙计订合同
- 2014年Robot杯全国机器人公开赛
- Android Volley的基本用法
- python核心编程-sock例子