【问题标题】:How to build service and how to active that in CQ5如何在 CQ5 中构建服务以及如何激活该服务
【发布时间】:2013-01-15 15:39:48
【问题描述】:

这些天我正在学习 OSGI,CQ5。我正在尝试构建一个具有服务的捆绑包(我的第一个代码)。 我成功构建了一个捆绑包并将该捆绑包上传到 CQ5 上,然后也安装了它。

但组件仅显示已注册,而非活动。为什么?

我也想激活这项服务。我怎样才能做到这一点 ?网上有人说做jsp。我也这样做,但没有得到任何回应。帮我解决这个问题。我花了很多时间在这上面,很多搜索,但我没有得到任何解决方案。

如何在 CQ5、CRXDE(Adobe) 中使用我的服务。

JSP 代码是:-

<% var service =   sling.getService(Packages.mh.osgitest.SayHello); %> 
<%= service.sayHelloTest() %>

以上代码不工作。

这些截图是

捆绑

组件

服务

我的代码如下:-

打个招呼

package service.expose;

import org.apache.felix.scr.annotations.Service;

public interface SayHello {
    public void sayHelloTest();
}

SayHelloTestServlet // Servlet 在这里没有意义。

package service.expose;

import java.io.IOException;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Service;


@Component
@Service(value = SayHello.class)
public class SayHelloTestServlet implements SayHello {

    public void sayHelloTest() {
        System.out.println("Testing Say Hello");
    }

    @Activate
    protected void activate() {
        System.out.println("service started");
    }


    @Deactivate
    protected void deactivate() {
        System.out.println("service stopped");
    }
}

【问题讨论】:

    标签: java jsp maven osgi aem


    【解决方案1】:

    使用@Component(immediate=true) 在捆绑包激活后立即实例化您的服务,而不是按需实例化。

    【讨论】:

    • 你可以这样做,但为什么呢? “注册”状态不是错误。仅仅因为您想在控制台中看到不同的单词就立即激活组件似乎有点愚蠢。
    • 但是如何使用该服务。指导我。
    • @NeilBartlett:我看过你的书,很有趣。这本书有最新版本,对初学者有帮助吗?
    • @NeilBartlett 我认为这是一个“你好,世界”类型的问题,所以我做出了相应的回答。否则我完全同意你的说法。
    • @FreakyCheeky 要使用该服务,请实现另一个组件并将SayHello 服务注入其中(查找@Reference 注释的文档)。当第二个组件实际使用第一个组件时,其状态将从“已注册”变为“活动”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    相关资源
    最近更新 更多