IPojo - @Reference不注入服务

时间:2011-12-21 15:54:39

标签: java osgi apache-felix

在一个捆绑包中有接口IService,由ServiceImpl类实现:

public interface IService
{
    void doSomething();
}

@Component
@Provides
@Instantiate
public class ServiceImpl implements IService
{
    public void doSomething()
    {
    }
}

在第二个包中,我有另一个类,ServiceConsumer(一个GoGo shell命令;不包括特定的注释),使用第一个包中提供的服务:

@Component
@Provides
@Instantiate
public class ServiceConsumer
{
    @Requires
    private IService service;

    public doIt()
    {
        service.doSomething();
    }

}

当我在Felix中导入并启动两个bundle时,我可以看到我的所有服务都使用ipojo:instance正确实例化,而ServiceImpl提供了IService。但是,当执行doIt()时,service为null。

由于IService似乎可用,我希望@Requires注入好的实例,但似乎没有这样做。

我觉得我有一些非常明显的事情,但我不知道是什么。

2 个答案:

答案 0 :(得分:1)

您是否还创建了metadata.xml? 请在此处查看示例http://felix.apache.org/site/ipojo-in-10-minutes.html

afaik你也可以用maven插件生成它 见http://felix.apache.org/site/ipojo-hello-word-maven-based-tutorial.html

答案 1 :(得分:0)

如何称为“doIt()”方法?

您在使用注释时不需要XML文件。

如果安装了'arch'命令,则可以检查所有实例是否已声明且有效:

ipojo:instances
ipojo:instance instance_name

问候。