OSGI系列 服务注册
2016-01-15 22:55
441 查看
之前一直都是在说在blueprint中怎么发布(注册)服务以及获取服务,现在就来说说怎么通过代码来发布(注册)我们的服务和获取服务的
前提,需要引入咱们OSGI环境的依赖包:
一、发布(注册)服务
1、首先,我们来创建咱们的服务接口以及实现
服务接口:IService1.java
服务接口:Service1.java
2、然后,写一个Activator类,该类专用来注册服务的
二、获取服务
1、方式一(推荐)
2、方式二(最原始)
前提,需要引入咱们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"); // 获取多个Service Object[] 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); } }
相关文章推荐
- 图像处理资料分享
- [乡土民间故事_徐苟三传奇]第五回_黄知县对联丢尽脸
- ndis小端口驱动总结---发文于2014.1.1
- linux学习
- 威胁情报
- 演讲译文:鸟和青蛙——数学之两翼
- 键盘控制div上下左右移动
- java代码创建文件和文件夹
- ndis协议驱动总结---发文于2013-12-30
- [乡土民间故事_徐苟三传奇]第四回_张员外受骗摔新锅
- leetcode165---Compare Version Numbers
- 遇到一个把.o文件strip后出现的奇怪问题
- Android开源框架Universal-Image-Loader基本介绍和使用
- RPC总结 ---发文于2013-12-20
- 尝试使用request.getRemoteAddr()时获得ipv6地址:0.0.0.0.0.0.0.1的解决方法
- Mybatis学习(1)开发环境搭建
- cvFloodFill漫水填充算法
- 博客,开启我的博客
- 04-transform
- 两个栈实现队列