Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Spring Application Platform Spring Community Day - Lima 2008  Leonardo Torres Altez
 
Agenda <ul><ul><li>OSGI </li></ul></ul><ul><ul><li>Spring Dynamic Modules </li></ul></ul><ul><ul><li>Spring dm Server </li...
OSGi  ( www.osgi.org)
OSGI – que es ?? <ul><ul><li>Es una especificación que define compomentes dinámicos ( módulos ) en  JAVA </li></ul></ul><u...
OSGI – Orientado a Servicios <ul><ul><li>Los módulos pueden publicar servicios  </li></ul></ul><ul><ul><li>Publicar estos ...
Entonces que !!??  Que cosas se resuelve con esto
Visibilidad <ul><ul><li>Un modulo es una caja negra </li></ul></ul><ul><ul><li>Esta completamente protegido ,  </li></ul><...
Versionamiento <ul><ul><li>Dos versiones  </li></ul></ul><ul><ul><li>del mismo modulo al mismo tiempo!! </li></ul></ul><ul...
Dinamismo
Como crear un Modulo Spring OSGI ???
MANIFEST.MF (dependencias) osgi-context.xml module-context.xml  ………….  inyectar dependencias Spring importar exportar paqu...
El archivo MANIFEST.MF <ul><ul><li>Es obligatorio </li></ul></ul><ul><ul><li>META-INF/MANIFEST.MF </li></ul></ul>
El  archivo  MANIFEST.MF <ul><ul><li>Export-Package:  </li></ul></ul><ul><ul><li>org.xyz.m1.service, org.xyz.m2.service, o...
VARIOS MODULOS FORMAN  UNA APLICACION
Spring Source DM Server
Spring Source DM Server
Que es el DM Server ?? <ul><ul><li>Es un servidor de aplicaciones ( diferente de otros ) </li></ul></ul><ul><ul><li>Es ope...
Que cosas puedo desplegar ?? <ul><ul><li>Archivos WARs convencionales </li></ul></ul><ul><ul><li>Módulos OSGi  </li></ul><...
Beneficios <ul><ul><li>Monitorea el estado de los módulos </li></ul></ul><ul><ul><ul><li>Consola OSGi – telnet </li></ul><...
Manos a la obra ……..
WEB BEAN DAO BD Tres  módulos  ……..
Tres   módulos  …….. Spring mvc WEB 3 JPA eclipselink DAO 2 BEANS 1
Modulo Bean  …….. <ul><li>@Entity </li></ul><ul><li>@Table(name=&quot;PERSONA&quot;,schema=&quot;mibasedatos&quot;) </li><...
Modulo DAO  …….. <ul><li>@Transactional </li></ul><ul><li>public   class  PersonaDAO  implements  PersondaDAOInterface { <...
Modulo Web …….. <ul><li>@Controller </li></ul><ul><li>public   class  PersonaController { </li></ul><ul><ul><li>@Autowired...
Tres módulos …….. WEB DAO BEAN servicio PersonaDAO clase Persona clase Persona
Upcoming SlideShare
Loading in …5
×

Spring OSGI , dm server - Leonardo Torres Altez

1,387 views

Published on

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

  • ESta bien el tutorial
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Spring OSGI , dm server - Leonardo Torres Altez

  1. 1. Spring Application Platform Spring Community Day - Lima 2008 Leonardo Torres Altez
  2. 3. Agenda <ul><ul><li>OSGI </li></ul></ul><ul><ul><li>Spring Dynamic Modules </li></ul></ul><ul><ul><li>Spring dm Server </li></ul></ul>
  3. 4. OSGi ( www.osgi.org)
  4. 5. OSGI – que es ?? <ul><ul><li>Es una especificación que define compomentes dinámicos ( módulos ) en JAVA </li></ul></ul><ul><ul><li>Partir el sistema en módulos ( “bundles” ) </li></ul></ul><ul><ul><li>Un modulo en tiempo de ejecución se puede : </li></ul></ul><ul><ul><ul><li>instalar </li></ul></ul></ul><ul><ul><ul><li>iniciar </li></ul></ul></ul><ul><ul><ul><li>Parar </li></ul></ul></ul><ul><ul><ul><li>Desinstalar </li></ul></ul></ul><ul><ul><ul><li>Actualizar </li></ul></ul></ul><ul><ul><li>Reglas de visibilidad </li></ul></ul><ul><ul><li>Proceso de resolución </li></ul></ul><ul><ul><li>Conoce el versionamiento </li></ul></ul>
  5. 6. OSGI – Orientado a Servicios <ul><ul><li>Los módulos pueden publicar servicios </li></ul></ul><ul><ul><li>Publicar estos servicios permite a otros modulos buscar estos y enlazarse </li></ul></ul><ul><ul><li>Y todo en tiempo de ejecución !! </li></ul></ul>
  6. 7. Entonces que !!?? Que cosas se resuelve con esto
  7. 8. Visibilidad <ul><ul><li>Un modulo es una caja negra </li></ul></ul><ul><ul><li>Esta completamente protegido , </li></ul></ul><ul><ul><ul><li>otro modulo no puede tener acceso ( ni a sus clases , ni a sus datos ) </li></ul></ul></ul><ul><ul><li>La única forma de comunicarse con otros es exportando explícitamente : </li></ul></ul><ul><ul><ul><li>Clases …………………………….MANIFIEST.MF </li></ul></ul></ul><ul><ul><ul><li>Servicios ………………………….Osgi-Context.xml </li></ul></ul></ul>
  8. 9. Versionamiento <ul><ul><li>Dos versiones </li></ul></ul><ul><ul><li>del mismo modulo al mismo tiempo!! </li></ul></ul><ul><ul><ul><li>com.miempresa.MiServicio v1.0 </li></ul></ul></ul><ul><ul><ul><li>com.miempresa.MiServicio v1.2 </li></ul></ul></ul>
  9. 10. Dinamismo
  10. 11. Como crear un Modulo Spring OSGI ???
  11. 12. MANIFEST.MF (dependencias) osgi-context.xml module-context.xml …………. inyectar dependencias Spring importar exportar paquetes importar servicios exportar servicios <ul><ul><li>UN MODULO ES UN JAR </li></ul></ul><ul><ul><li>CON 3 ARCHIVOS CONFIGURACION …. </li></ul></ul>1 2 3
  12. 13. El archivo MANIFEST.MF <ul><ul><li>Es obligatorio </li></ul></ul><ul><ul><li>META-INF/MANIFEST.MF </li></ul></ul>
  13. 14. El archivo MANIFEST.MF <ul><ul><li>Export-Package: </li></ul></ul><ul><ul><li>org.xyz.m1.service, org.xyz.m2.service, org.xyz.m3.service;version=1.2 </li></ul></ul><ul><ul><li>Import-Package: </li></ul></ul><ul><ul><li>org.xyz.m1.service, org.xyz.m2.service, org.xyz.m3.service </li></ul></ul><ul><ul><li>Bundle-Activator: org.xyz.abc.MyActivator </li></ul></ul>
  14. 15. VARIOS MODULOS FORMAN UNA APLICACION
  15. 16. Spring Source DM Server
  16. 17. Spring Source DM Server
  17. 18. Que es el DM Server ?? <ul><ul><li>Es un servidor de aplicaciones ( diferente de otros ) </li></ul></ul><ul><ul><li>Es open source </li></ul></ul><ul><ul><li>Esta diseñado para Spring </li></ul></ul><ul><ul><li>Esta construido con OSGi </li></ul></ul><ul><ul><li>Los módulos se despliegan dentro !! </li></ul></ul>
  18. 19. Que cosas puedo desplegar ?? <ul><ul><li>Archivos WARs convencionales </li></ul></ul><ul><ul><li>Módulos OSGi </li></ul></ul><ul><ul><li>Web Modules </li></ul></ul><ul><ul><li>Archivos PAR ( un grupo de módulos OSGi ) </li></ul></ul><ul><ul><ul><li>( .ear ??? ) </li></ul></ul></ul>
  19. 20. Beneficios <ul><ul><li>Monitorea el estado de los módulos </li></ul></ul><ul><ul><ul><li>Consola OSGi – telnet </li></ul></ul></ul><ul><ul><ul><li>JMX !! </li></ul></ul></ul><ul><ul><li>Actualiza , instala , remueve , módulos sin bajar o reiniciar el servidor !!! </li></ul></ul><ul><ul><li>Plataforma modular </li></ul></ul><ul><ul><ul><li>Usa solo lo que tu necesites </li></ul></ul></ul><ul><ul><ul><li>Reduce el consumo de recursos </li></ul></ul></ul><ul><ul><ul><li>Mejora el tiempo de despliegue </li></ul></ul></ul>
  20. 21. Manos a la obra ……..
  21. 22. WEB BEAN DAO BD Tres módulos ……..
  22. 23. Tres módulos …….. Spring mvc WEB 3 JPA eclipselink DAO 2 BEANS 1
  23. 24. Modulo Bean …….. <ul><li>@Entity </li></ul><ul><li>@Table(name=&quot;PERSONA&quot;,schema=&quot;mibasedatos&quot;) </li></ul><ul><li>public class Persona implements Serializable { </li></ul><ul><ul><li>@Id </li></ul></ul><ul><ul><li>private int numero; </li></ul></ul><ul><ul><li>private String nombre; </li></ul></ul><ul><ul><li>private String apellido; </li></ul></ul><ul><ul><li>private String email; </li></ul></ul><ul><ul><li>//GET SET </li></ul></ul><ul><li>} </li></ul>
  24. 25. Modulo DAO …….. <ul><li>@Transactional </li></ul><ul><li>public class PersonaDAO implements PersondaDAOInterface { </li></ul><ul><ul><li>private static final String SEARCH_QUERY = &quot;select l from Persona l where upper(l.apellido) like :term&quot;; </li></ul></ul><ul><ul><li>@PersistenceContext </li></ul></ul><ul><ul><li>private EntityManager em; </li></ul></ul><ul><ul><li>public Persona buscarPersona( int id) { </li></ul></ul><ul><ul><li>return em. find ( Persona . class , id); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>@SuppressWarnings(&quot;unchecked&quot;) </li></ul></ul><ul><ul><li>public List< Persona > buscar(String term) { </li></ul></ul><ul><ul><li>return em.createQuery( SEARCH_QUERY ) </li></ul></ul><ul><ul><li>.setParameter(&quot;term&quot;, &quot;%&quot; + term.toUpperCase() + &quot;%&quot;) </li></ul></ul><ul><ul><li>.getResultList(); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>} </li></ul>
  25. 26. Modulo Web …….. <ul><li>@Controller </li></ul><ul><li>public class PersonaController { </li></ul><ul><ul><li>@Autowired </li></ul></ul><ul><ul><li>private PersondaDAOInterface personadao; </li></ul></ul><ul><ul><li>@RequestMapping(&quot;/home.htm&quot;) </li></ul></ul><ul><ul><li>public void home() { </li></ul></ul><ul><ul><li>System. out .println(&quot;hello!&quot;); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>@RequestMapping(&quot;/search.htm&quot;) </li></ul></ul><ul><ul><li>public List< Persona > search(@RequestParam(&quot;query&quot;) String query) { </li></ul></ul><ul><ul><li>return this .personadao.buscar(query) ; </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>@RequestMapping(&quot;/entry.htm&quot;) </li></ul></ul><ul><ul><li>public Persona entry(@RequestParam(&quot;id&quot;) int id) { </li></ul></ul><ul><ul><li>return this .personadao. buscarPersona (id); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>} </li></ul>
  26. 27. Tres módulos …….. WEB DAO BEAN servicio PersonaDAO clase Persona clase Persona

×