我需要从一个捆绑包中注册多个服务,我想我不能使用服务工厂,因为我只有一个捆绑消耗服务 换句话说,我有一个代表物理设备(例如温度传感器)的捆绑,因为我有多个物理设备(例如10个温度传感器,每个都有一个唯一的ID)然后我需要有多个(10个)我的实例来自同一捆绑的服务,我该怎么做?
答案 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是部署单元或可执行的容器捆绑包可以注册零到多个服务,和/或使用其他捆绑包注册的服务。)