Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Sviluppiamo il nostro primo bundle

Scopriamo le operazioni necessarie per la creazione di un primo bundle “hello-world” per Apache Karaf utilizzando Maven e automatizzando la creazione del file MANIFEST.MF. I comandi per visualizzare la lista dei bundle, avviare l'ultimo bundle creato e arrestarlo.
Scopriamo le operazioni necessarie per la creazione di un primo bundle “hello-world” per Apache Karaf utilizzando Maven e automatizzando la creazione del file MANIFEST.MF. I comandi per visualizzare la lista dei bundle, avviare l'ultimo bundle creato e arrestarlo.
Link copiato negli appunti

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

Figura 1. Lista dei bundle
Lista dei bundle

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

Figura 1. Bundle hello-world attivato
Bundle hello-world attivato

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.


Ti consigliamo anche