4

在一个包中具有接口 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 中导入并启动这两个包时,我可以看到我的所有服务都使用 ipojo:instances 正确实例化,并且 ServiceImpl 提供了 IService。但是,执行 doIt() 时,service 为空。

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

我有一种很明显的感觉,我没有做,但我不知道是什么。

4

2 回答 2

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

于 2012-01-27T11:24:47.137 回答
0

怎么叫' doIt()'方法?

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

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

ipojo:instances
ipojo:instance instance_name

问候。

于 2012-02-24T19:20:21.947 回答