0

我需要从一个捆绑包中注册多个服务,我认为我不能使用服务工厂,因为我只有一个捆绑包消耗以另一种方式放置的服务,我有一个捆绑包代表一个物理设备(例如温度传感器),因为我有多个物理设备(例如 10 个温度传感器,每个都有一个唯一的 ID)然后我需要从同一个包中拥有多个 (10) 服务实例,我该怎么做?

4

1 回答 1

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);
// ...

(请注意可能会为您节省一些混淆的术语小问题。捆绑包不会将自己注册为服务。它们创建对象并将其注册为服务。捆绑包是部署单元或可执行代码的容器。捆绑包可以注册零到多个服务,和/或使用其他捆绑包注册的服务。)

于 2013-01-29T00:40:13.733 回答