Upload
a19987225
View
1.170
Download
2
Tags:
Embed Size (px)
DESCRIPTION
Presentación de Spring OSGI y DM Server , la nueva forma de desplegar apps Java
Citation preview
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