Spring OSGI , dm server - Leonardo Torres Altez

Post on 25-May-2015

1.168 views 2 download

Tags:

description

Presentación de Spring OSGI y DM Server , la nueva forma de desplegar apps Java

Transcript of Spring OSGI , dm server - Leonardo Torres Altez

Spring Application PlatformSpring Community Day - Lima 2008

Leonardo Torres Altez

Agenda

• OSGI• Spring Dynamic Modules• Spring dm Server

OSGi ( www.osgi.org)

OSGI – que es ??• Es una especificación que define

compomentes dinámicos ( módulos ) en JAVA

• Partir el sistema en módulos ( “bundles” )• Un modulo en tiempo de ejecución se puede :

• instalar• iniciar• Parar• Desinstalar• Actualizar

• Reglas de visibilidad• Proceso de resolución• Conoce el versionamiento

OSGI – Orientado a Servicios

• Los módulos pueden publicar servicios

• Publicar estos servicios permite a otros modulos buscar estos y enlazarse

Y todo en tiempo de ejecución !!

Entonces que !!??

Que cosas se resuelve con esto

Visibilidad• Un modulo es una caja negra

• Esta completamente protegido , otro modulo no puede tener acceso ( ni a sus clases , ni a sus

datos )

• La única forma de comunicarse con otros es exportando explícitamente :• Clases …………………………….MANIFIEST.MF• Servicios ………………………….Osgi-Context.xml

Versionamiento

• Dos versiones del mismo modulo al mismo

tiempo!!• com.miempresa.MiServicio v1.0• com.miempresa.MiServicio v1.2

Dinamismo

Como crear un Modulo Spring OSGI ???

MANIFEST.MF (dependencias)

osgi-context.xml

module-context.xml …………. inyectar dependencias Spring

importarexportarpaquetes

importarservicios

exportarservicios

UN MODULO ES UN JAR CON 3 ARCHIVOS CONFIGURACION ….

1

2

3

El archivo MANIFEST.MF

• Es obligatorio META-INF/MANIFEST.MF

El archivo MANIFEST.MF

Export-Package: org.xyz.m1.service, org.xyz.m2.service,

org.xyz.m3.service;version=1.2

Import-Package: org.xyz.m1.service, org.xyz.m2.service,

org.xyz.m3.service

Bundle-Activator: org.xyz.abc.MyActivator

VARIOS MODULOS FORMAN UNA APLICACION

Spring Source DM Server

Spring Source DM Server

Que es el DM Server ??

• Es un servidor de aplicaciones ( diferente de otros )

• Es open source• Esta diseñado para Spring• Esta construido con OSGi• Los módulos se despliegan dentro !!

Que cosas puedo desplegar ??

• Archivos WARs convencionales• Módulos OSGi • Web Modules • Archivos PAR ( un grupo de módulos OSGi )

( .ear ??? )

Beneficios

• Monitorea el estado de los módulos• Consola OSGi – telnet• JMX !!

• Actualiza , instala , remueve , módulos sin bajar o reiniciar el servidor !!!

• Plataforma modular• Usa solo lo que tu necesites• Reduce el consumo de recursos• Mejora el tiempo de despliegue

Manos a la obra ……..

WEB

BEAN

DAO

BD

Tres módulos ……..

Tres módulos ……..1 BEANS

2 DAO JPA eclipselink

3 WEB Spring mvc

Modulo Bean ……..@Entity@Table(name="PERSONA",schema="mibasedatos")public class Persona implements Serializable {

@Idprivate int numero;

private String nombre;

private String apellido;

private String email;

//GET SET}

Modulo DAO ……..@Transactionalpublic class PersonaDAO implements PersondaDAOInterface {

private static final String SEARCH_QUERY = "select l from Persona l where upper(l.apellido) like :term";

@PersistenceContextprivate EntityManager em;

public Persona buscarPersona(int id) {return em.find(Persona.class, id);}

@SuppressWarnings("unchecked")public List<Persona> buscar(String term) {return em.createQuery(SEARCH_QUERY) .setParameter("term", "%" + term.toUpperCase() + "%") .getResultList();}

}

Modulo Web……..@Controllerpublic class PersonaController {

@Autowiredprivate PersondaDAOInterface personadao;

@RequestMapping("/home.htm")public void home() {System.out.println("hello!");}

@RequestMapping("/search.htm")public List<Persona> search(@RequestParam("query") String query) {return this.personadao.buscar(query);}

@RequestMapping("/entry.htm")public Persona entry(@RequestParam("id") int id) {return this.personadao.buscarPersona(id);}

}

Tres módulos ……..

WEB

DAO

BEAN

servicioPersonaDAO

servicioPersonaDAO

clasePersona

clasePersona

clasePersona

clasePersona