OSGi サービス
Last update: Thu Oct 10 2024 00:00:00 GMT+0000 (Coordinated Universal Time)
作成対象:
- 初心者
- 開発者
次のような OSGi サービスの開発の基本について説明します。
- Java POJO を OSGi サービスに変換する方法
- OSGi サービスを Java インターフェイスに連結する方法
リソース
コード
Activities.java
/core/src/main/java/com/adobe/aem/wknd/examples/core/adventures/Activities.java
package com.adobe.aem.wknd.examples.core.adventures;
import org.osgi.annotation.versioning.ProviderType;
@ProviderType
public interface Activities {
String getRandomActivity();
}
ActivitiesImpl.java
/core/src/main/java/com/adobe/aem/wknd/examples/core/adventures/impl/ActivitiesImpl.java
package com.adobe.aem.wknd.examples.core.adventures.impl;
import java.util.Random;
import com.adobe.aem.wknd.examples.core.adventures.Activities;
import org.osgi.service.component.annotations.Component;
@Component(
service = { Activities.class }
)
public class ActivitiesImpl implements Activities {
private static final String[] ACTIVITIES = new String[] {
"Camping", "Skiing", "Skateboarding"
};
//private final int randomIndex = new Random().nextInt(ACTIVITIES.length);
private final Random random = new Random();
/**
* @return the name of a random WKND adventure activity
*/
public String getRandomActivity() {
int randomIndex = random.nextInt(ACTIVITIES.length);
return ACTIVITIES[randomIndex];
}
}
package-info.java
/core/src/main/java/com/adobe/aem/wknd/examples/core/adventures/package-info.java
@Version("1.0")
package com.adobe.aem.wknd.examples.core.adventures;
import org.osgi.annotation.versioning.Version;
AEM の他の OSGi バンドルが OSGi サービスインターフェイス(または任意の Java クラス)を解決できるようにするには、package-info.java
を追加する必要があります。package-info.java
がない場合、Java パッケージとその Java インターフェイスまたはクラスは書き出されません。他の OSGi バンドルがこの Java パッケージからこれらの Java インターフェイスまたはクラスを読み込もうとすると、AEM の OSGi バンドルコンソールに「解決できません」というメッセージが表示されてエラーになります。
recommendation-more-help
4859a77c-7971-4ac9-8f5c-4260823c6f69