Para exportar un servicio necesitamos:
- Una interfaz de nuestro modelo de dominio
- Un POJO que implemente esta interfaz
- Registrar/Exportar una instancia del POJO como servicio en una clase BundleActivator
La interfaz del modelo de dominio
package edu.emmerson.osgi.holamundo1_bundle;
public interface HolaMundoService {
public String saluda(String nombre);
}
El POJO que implementa esta interfaz
package edu.emmerson.osgi.holamundo1_bundle.impl;
import edu.emmerson.osgi.holamundo1_bundle.HolaMundoService;
public class HolaMundoServiceImpl implements HolaMundoService {
public HolaMundoServiceImpl(){}
public String saluda(String nombre) {
return "HolaMundo1 - hola " + nombre;
}
}
Registrando/Exportando el servicio en una clase que implementa BundleActivator (para la labor de exportación se dispone del método registerService de la clase BundleContext)
package edu.emmerson.osgi.holamundo1_bundle;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import edu.emmerson.osgi.holamundo1_bundle.impl.HolaMundoServiceImpl;
public class HolaMundoActivator implements BundleActivator {
ServiceRegistration servicioRegistrado;
public void start(BundleContext arg0) throws Exception {
System.out.println("HolaMundo1 - activandose");
HolaMundoService helloService = new HolaMundoServiceImpl();
servicioRegistrado =arg0.registerService(HolaMundoService.class.getName(), helloService, null);
}
public void stop(BundleContext arg0) throws Exception {
System.out.println("HolaMundo1 - deteniendose");
servicioRegistrado.unregister();
}
}
En el fichero MANIFEST.MF hay que exportar el paquete donde se encuentra la interfaz para que pueda ser accesible y también el activator.
Export-Package: edu.emmerson.osgi.holamundo1_bundle
Bundle-Activator: edu.emmerson.osgi.holamundo1_bundle.HolaMundoActivator
- FIN -
No comments:
Post a Comment