Per creare il classico bundle hello-world utilizziamo un archetype org.apache.karaf.archetypes di Maven.
mvn archetype:generate
-DarchetypeGroupId=org.apache.karaf.archetypes
-DarchetypeArtifactId=karaf-bundle-archetype
-DarchetypeVersion=2.2.11
-DgroupId=it.html.tutorial
-DartifactId=karaf-helloworld
-Dversion=1.0
-Dpackage=it.html.tutorial.karaf.helloworld
Il progetto generato contiene esclusivamente la classe Activator, alla quale aggiungiamo semplicemente una stampa a video di un messaggio che ci notifica lo start e lo stop del bundle.
package it.html.tutorial.karaf.helloworld;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
public void start(BundleContext context) {
System.out.println("Html.it, hello world START");
}
public void stop(BundleContext context) {
System.out.println("Html.it, hello world STOP");
}
}
Un bundle è un archivio jar contenente informazioni aggiuntive nel suo file MANIFEST.MF. Per automatizzare la creazione di questo file, utilizziamo il plugin org.apache.felix/maven-bundle-plugin che permette di produrre tale file inserendo la configurazione direttamente nel descrittore pom.xml. Nel caso del nostro progetto configureremo il plugin aggiungendo il seguente blocco xml.
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.7</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Bundle-Activator>it.html.tutorial.karaf.helloworld.Activator</Bundle-Activator>
<Export-Package>
it.html.tutorial.karaf.helloworld*;version=${project.version}
</Export-Package>
<Import-Package>
*
</Import-Package>
</instructions>
</configuration>
</plugin>
A questo punto è sufficiente lanciare il commando install di Maven per generare il nostro bundle corredato di MANIFEST.
mvn clean install
Al termine della procedura di installazione, nella cartella target del nostro progetto, troviamo il bundle karaf-helloworld-1.0.jar. Se esploriamo il pacchetto con il programma 7-zip (o altre soluzioni simili per la gestione degli archivi compressi) possiamo notare la presenza del file META-INF/MANIFEST.MF. Contemporaneamente Maven ha installato il modulo all’interno del nostro repository locale.
Il percorso di default del repository Maven è il seguente: ${user.home}/.m2/repository. Nella sottodirectory ./it/html/tutorial/karaf-helloworld/1.0/ troviamo il nostro karaf-helloworld-1.0.jar. Installiamo il bundle all’interno di Karaf utilizzando il Maven URI così costituito:
karaf@root()> bundle:install mvn:it.html.tutorial/karaf-helloworld/1.0
Bundle ID: 90
Se proviamo a visualizzare la lista dei bundle troviamo il nostro helloworld.
karaf@root()> bundle:list -t 80
Il bundle risulta nello "stato" installato., avviamolo quindi usando il comando bundle:start:
karaf@root()> bundle:start 90
Html.it, hello world START
Lo "stato" risulterà ora attivo.
karaf@root()> bundle:list -t 80
Per arrestare il bundle sarà invece necessario il comando bundle:stop. Una volta creato il nostro primo bundle sarà possibile passare alla fase successiva di questa trattazione, l'analisi delle feature.
Se vuoi aggiornamenti su Development inserisci la tua email nel box qui sotto: