服务之间的osgi依赖注入

时间:2014-01-25 16:59:44

标签: service osgi code-injection between

我刚刚开始玩OSGi服务并且遇到以下情况。我有一个包含2项服务的项目。服务A需要服务B,所以我尝试使用

注入依赖服务
@Inject
private ServiceB svc;

但框架不会注入。如果我在服务A中设置以下两种方法 并在框架调用的OSGi componentA.xml中将这些方法设置为“bind / undbind” 这些方法我可以在服务A中使用服务B.

public synchronized void bind(IServiceB service)
{
  this.svc = service;
}

public synchronized void unbind(IServiceB service)
{
  if (this.svc == service)
  {
    this.svc = null;
  }
}

问题是,为什么它不能与@Inject一起使用?对不起,如果这是一个愚蠢的问题,我对这整个话题都很陌生。非常感谢提前!

1 个答案:

答案 0 :(得分:0)

看起来您正在使用Declarative Services,它不支持字段注入或JSR-330注释。现场注入在OSGi中的实用性有限,其中服务可以随时注入或“未注入”。方法注入通常更有用,因为它使您有机会在发生这种情况时执行某些操作。

但是我建议您使用Declarative Services的注释。这将使您不必手动编写component.xml。