在一个捆绑包中有接口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注入好的实例,但似乎没有这样做。
我觉得我有一些非常明显的事情,但我不知道是什么。
答案 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
问候。