如何在CQ5中构建服务以及如何激活它

dev*_*sda 1 java jsp osgi maven aem

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

但组件显示仅注册,不活动.为什么?

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

如何在CQ5,CRXDE(Adobe)中使用我的服务.

JSP代码是: -

<% var service =   sling.getService(Packages.mh.osgitest.SayHello); %> 
<%= service.sayHelloTest() %>
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用.

这些快照是

在此输入图像描述

零件 在此输入图像描述

服务 在此输入图像描述

我的代码如下: -

问好

package service.expose;

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

public interface SayHello {
    public void sayHelloTest();
}
Run Code Online (Sandbox Code Playgroud)

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*anu 6

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