我正在尝试在OSGi中注册一个简单的服务,但是一旦我写了@Reference,它在felix控制台中就不可见了。以下是我的服务。
@Component(metatype = true , immediate = true)
@Service(value = LoginAccessService.class)
@Properties({
@Property(name = "service.vendor", value = "AEM.Training"),
@Property(name = "service.description", value = "Login Access Testing")
})
public class LoginAccessImpl implements LoginAccessService {
private static final Logger logger = LoggerFactory.getLogger(LoginAccessImpl.class);
@Reference
protected AbstractSlingRepository2 repository;
@Override
public Node createNode(String path) {
return null;
}
}
如果我写的话
@Reference
protected SlingRepository repository;
它反映在费利克斯。任何想法如何发生这种情况。
答案 0 :(得分:1)
@Service
可以是registered only by its interface(s),因此只能引用该界面。而AbstractSlingRepository2是一个抽象类,而不是接口。所以使用
@Reference
protected SlingRepository repository;
是获取存储库的正确方法。