OSGI和克隆服务

时间:2013-01-28 14:10:13

标签: osgi

我需要从一个捆绑包中注册多个服务,我想我不能使用服务工厂,因为我只有一个捆绑消耗服务 换句话说,我有一个代表物理设备(例如温度传感器)的捆绑,因为我有多个物理设备(例如10个温度传感器,每个都有一个唯一的ID)然后我需要有多个(10个)我的实例来自同一捆绑的服务,我该怎么做?

1 个答案:

答案 0 :(得分:2)

只需重复调用context.registerService()即可注册多个服务实例。每个注册都可以包含一组不同的属性,例如:

Properties props1 = new Properties();
props1.put("my_id", "ID1");
context.registerService(Foo.class.getName(), new FooImpl(), props1);
// ...
Properties props2 = new Properties();
props2.put("my_id", "ID2");
context.registerService(Foo.class.getName(), new FooImpl(), props2);
// ...

(注意一个术语狡辩,可能会让你有些困惑.Bundles不会将自己注册为服务。他们创建对象并将其注册为服务.bund是部署单元或可执行的容器捆绑包可以注册零到多个服务,和/或使用其他捆绑包注册的服务。)