OSGi中的服务没有注册

时间:2014-12-17 10:51:51

标签: osgi cq5

我正在尝试在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;

它反映在费利克斯。任何想法如何发生这种情况。

1 个答案:

答案 0 :(得分:1)

  1. 由于@Service可以是registered only by its interface(s),因此只能引用该界面。而AbstractSlingRepository2是一个抽象类,而不是接口。
  2. AbstractSlingRepository2仅适用于AEM(CQ)中使用的Sling v7,因为 v6.0
  3. 所以使用

    @Reference
    protected SlingRepository repository;
    

    是获取存储库的正确方法。