OSGi Services
Gemaakt voor:
- Beginner
- Ontwikkelaar
Leer de grondbeginselen van de dienstenontwikkeling OSGi, die omvatten:
- Een Java POJO converteren naar een OSGi-service
- Hoe te om een Dienst OSGi aan een interface van Java te binden
Bronnen
Code
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;
Het toevoegen van a package-info.java
wordt vereist om andere bundels OSGi in AEM te verzekeren kan de OSGi de dienstinterface (of om het even welke klasse van Java) oplossen. Als package-info.java
ontbreekt, worden het Java-pakket en de bijbehorende Java-interfaces of -klassen niet geƫxporteerd. Andere bundels OSGi die proberen om deze interfaces of klassen van Java van dit pakket van Java in te voeren, zullen fout met het bericht niet in AEM console van de Bundel worden opgelost OSGi.