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 // サーブレットはここでは意味がありません。

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 に答える