1

这些天我正在学习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");
    }
}
4

1 回答 1

6

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

于 2013-01-31T14:56:23.333 回答