Spring OSGI , dm server - Leonardo Torres Altez

27
Spring Application Platform Spring Community Day - Lima 2008 Leonardo Torres Altez

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

Page 1: Spring OSGI , dm server - Leonardo Torres Altez

Spring Application PlatformSpring Community Day - Lima 2008

Leonardo Torres Altez

Page 2: Spring OSGI , dm server - Leonardo Torres Altez
Page 3: Spring OSGI , dm server - Leonardo Torres Altez

Agenda

• OSGI• Spring Dynamic Modules• Spring dm Server

Page 4: Spring OSGI , dm server - Leonardo Torres Altez

OSGi ( www.osgi.org)

Page 5: Spring OSGI , dm server - Leonardo Torres Altez

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

Page 6: Spring OSGI , dm server - Leonardo Torres Altez

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 !!

Page 7: Spring OSGI , dm server - Leonardo Torres Altez

Entonces que !!??

Que cosas se resuelve con esto

Page 8: Spring OSGI , dm server - Leonardo Torres Altez

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

Page 9: Spring OSGI , dm server - Leonardo Torres Altez

Versionamiento

• Dos versiones del mismo modulo al mismo

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

Page 10: Spring OSGI , dm server - Leonardo Torres Altez

Dinamismo

Page 11: Spring OSGI , dm server - Leonardo Torres Altez

Como crear un Modulo Spring OSGI ???

Page 12: Spring OSGI , dm server - Leonardo Torres Altez

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

Page 13: Spring OSGI , dm server - Leonardo Torres Altez

El archivo MANIFEST.MF

• Es obligatorio META-INF/MANIFEST.MF

Page 14: Spring OSGI , dm server - Leonardo Torres Altez

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

Page 15: Spring OSGI , dm server - Leonardo Torres Altez

VARIOS MODULOS FORMAN UNA APLICACION

Page 16: Spring OSGI , dm server - Leonardo Torres Altez

Spring Source DM Server

Page 17: Spring OSGI , dm server - Leonardo Torres Altez

Spring Source DM Server

Page 18: Spring OSGI , dm server - Leonardo Torres Altez

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 !!

Page 19: Spring OSGI , dm server - Leonardo Torres Altez

Que cosas puedo desplegar ??

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

( .ear ??? )

Page 20: Spring OSGI , dm server - Leonardo Torres Altez

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

Page 21: Spring OSGI , dm server - Leonardo Torres Altez

Manos a la obra ……..

Page 22: Spring OSGI , dm server - Leonardo Torres Altez

WEB

BEAN

DAO

BD

Tres módulos ……..

Page 23: Spring OSGI , dm server - Leonardo Torres Altez

Tres módulos ……..1 BEANS

2 DAO JPA eclipselink

3 WEB Spring mvc

Page 24: Spring OSGI , dm server - Leonardo Torres Altez

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}

Page 25: Spring OSGI , dm server - Leonardo Torres Altez

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();}

}

Page 26: Spring OSGI , dm server - Leonardo Torres Altez

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);}

}

Page 27: Spring OSGI , dm server - Leonardo Torres Altez

Tres módulos ……..

WEB

DAO

BEAN

servicioPersonaDAO

servicioPersonaDAO

clasePersona

clasePersona

clasePersona

clasePersona