在一个包中有接口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 回答
如何称为'
doIt()
'方法?您在使用注释时不需要XML文件 .
如果安装了“arch”命令,则可以检查所有实例是否已声明且有效:
问候 .
你有没有创建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