20 August 2009

Personalizando el inicio y la parada de un Bundle

En OSGi se puede personalizar la carga un Bundle dentro del contenedor, o su parada, a fin de que se realizen una serie de acciones cuando se inicia o se detiene este; algo similar a los listeners de las webapps.

Para realizar esto, basta con tener una clase que implemente la interfaz BundleActivator y registrarla en el fichero MANIFEST.MF (los bundles fragmentados no lo necesitan)

La interfaz org.osgi.framework.BundleActivator, obliga a implementar los métodos start y stop, uno se llama cuando el bundle se inicia (para registrar servicios o asignar recursos), y el otro cuando se detiene.

EJEMPLO

La clase que implementa la interfaz

package edu.emmerson.osgi.holamundo1_bundle;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;

public class HolaMundoActivator implements BundleActivator {

ServiceRegistration helloServiceRegistration;

public void start(BundleContext arg0) throws Exception {
System.out.println("HolaMundo1 - activandose");
}

public void stop(BundleContext arg0) throws Exception {
System.out.println("HolaMundo1 - deteniendose");
}

}

Registro en el fichero MANIFEST.MF
Basta con agregar la siguiente línea:

Bundle-Activator: edu.emmerson.osgi.holamundo1_bundle.HolaMundoActivator


- FIN -

No comments: