我创建了一个 Osgi 服务。每次服务请求到来时,我都想为我的服务创建一个新实例。代码看起来像这样 -
@Component(immediate=true)
@Service(serviceFactory = true)
@Property(name = EventConstants.EVENT_TOPIC, value = {DEPLOY, UNDEPLOY })
public class XyzHandler implements EventHandler {
private Consumer consumer;
public static setConsumer(Consumer consumer) {
this.consumer = consumer;
}
@Override
public void handleEvent(final Event event) {
consumer.notify();
}
}
public class Consumer {
private DataSourceCache cache;
public void notify() {
updateCache(cache);
System.out.println("cache updated");
}
public void updateCache(DataSourceCache cache) {
cache = null;
}
}
在我的 Consumer 类中,我想访问 XyzHandler 的服务实例并设置属性 consumer。此外,我希望每次为每个请求都创建一个 XyzHandler 的新服务实例。我发现很少有文章提到使用 osgi 声明式服务注释可以实现这一点。 OSGi如何运行一项服务的多个实例
但我想在不使用 DS 1.3 的情况下实现这一目标。
如何在不使用注释的情况下做到这一点,或者如何使用 DS 1.2 做到这一点?