SlideShare a Scribd company logo
1 of 14
Download to read offline
Spring 2008 what's the new ?
                             15 minute about Spring innovations




                                                        Massimiliano Dessì
              http://www.jugsardegna.org/vqwiki/jsp/Wiki?MassimilianoDessi
Massimiliano Dessì, Sun Tech Day                                       1
Cagliari, 13 Giugno 2008
Chi è lo Speaker ?

Software Architect a SardegnaIT
Co-fondatore e consigliere Jug Sardegna Onlus

Fondatore e coordinatore:
SpringFramework Italian User Group

Jetspeed Italian User Group

Groovy Italian User Group




Massimiliano Dessì, Sun Tech Day
                                                        2
Cagliari, 13 Giugno 2008
OSGi: The Dynamic Module System for Java

 Cosa permette ?


   1. Minimizzare i tempi in cui l'applicazione non risponde durante i rilasci, e
      migliorare le procedure di rollback quando si fanno nuovi rilasci, assicurando la
      continuità del servizio.

   2. Versionamento delle librerie e delle classi per permettere la gestione della
      compatibilità all' indietro. OSGi permette la gestione dinamica e il
      versionamento di classi e librerie.

   3. Partizionamento delle applicazioni in moduli.




Massimiliano Dessì, Sun Tech Day
                                                                                     3
Cagliari, 13 Giugno 2008
Spring Dynamic Modules for OSGi
    Spring con OSGi permette:



   - Migliore separazione della logica applicativa in moduli


   - Possibilità di deployare più versioni dello stesso modulo o libreria in maniera concorrente


   - Poter fare il discovery dinamicamente e usare servizi forniti da altri moduli nel sistema


   - Capacità di installare aggiornare e disinstallare moduli in un sistema funzionante (senza fermarlo)


   - Utilizzo di Spring per istanziare , configurare, assemblare e decorare componenti da e tra moduli.


   - Un modello semplice e familiare per gli sviluppatori enterprise, per poter utilizzare le features della
     piattaforma OSGi.




Massimiliano Dessì, Sun Tech Day                                                                               4
Cagliari, 13 Giugno 2008
Librerie e dipendenze




Massimiliano Dessì, Sun Tech Day                           5
Cagliari, 13 Giugno 2008
Dao Registrato nel' OSGi service register:



import java.util.Dictionary;
import java.util.Properties;

import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;

public class ItemDaoActivator implements BundleActivator {

       private ServiceRegistration registration;

       public void start(BundleContext context) {
            ItemDao dao = new ItemDaoImpl();
            Dictionary props = new Properties();
            registration = context.registerService(ItemDao.class.getName(), dao,
                      props);
       }

       public void stop(BundleContext context) {
            registration.unregister();
       }

}




Massimiliano Dessì, Sun Tech Day                                                   6
Cagliari, 13Giugno 2008
Classe Tracker del DAO nell' OSGi service register
import   org.magicbox.osgi.services.ItemService;
import   org.magicbox.osgi.services.ItemServiceImpl;
import   org.osgi.framework.BundleContext;
import   org.osgi.framework.ServiceReference;
import   org.osgi.framework.ServiceRegistration;
import   org.osgi.util.tracker.ServiceTracker;

public class ItemDaoTracker extends ServiceTracker{

           private final ItemServiceImpl itemService = new ItemServiceImpl();
           private int daoCount = 0;
           private ServiceRegistration registration = null;

           public ItemDaoTracker(BundleContext context) {
                super(context, ItemDao.class.getName(), null);
           }

           private boolean registering = false;

           public Object addingService(ServiceReference reference) {
                ItemDao myDao = (ItemDao) context.getService(reference);
                     ...
                return myDao;
           }

           public void removedService(ServiceReference reference, Object service) {

                ....
           }
    }


Massimiliano Dessì, Sun Tech Day
                                                                                      7
Cagliari, 13Giugno 2008
Activator del servizio che carica il Tracker del DAO




import org.magicbox.osgi.dao.ItemDaoTracker;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;

public class ItemServiceActivator implements BundleActivator {

           private ItemDaoTracker tracker;

           public void start(BundleContext context) {
               tracker = new ItemDaoTracker(context);
               tracker.open();
           }

           public void stop(BundleContext context) {
               tracker.close();
           }
}




    Massimiliano Dessì, Sun Tech Day
                                                                 8
    Cagliari, 13Giugno 2008
ApplicationContext




Massimiliano Dessì, Sun Tech Day
                                   9
Cagliari, 13Giugno 2008
Manifest

 # Indentification headers
 Bundle-SymbolicName: org.magicbox.ItemService
 Bundle-Version: 1.0.1
 Bundle-Name: Sample Service
 Bundle-Vendor: Samples, Inc.

 # Class Path
 Bundle-ClassPath: .

 # Bundle Lifecycle management
 Bundle-Activator:org.magicbox.ItemServiceActivator

 # Dependencies
 Import-Package: org.osgi.framework;version=1.3
 Require-Bundle: org.sample.AnotherService;bundle-version=”[1.2.0,2.0.0)”

 # Exports
 Export-package: org.magicbox.ItemService




 Tramite gli export-package e gli Import-Package dichiariamo di quali versioni di
 classi/jar ogni modulo ha bisogno, in questo modo possiamo avere classi/jar
 che non entrano in conflitto, perchè sono gestiti attraverso OSGi.

 Ora vediamo dove viene usato OSGi con Spring




Massimiliano Dessì, Sun Tech Day
                                                                                    10
Cagliari, 13 Giugno 2008
Modules at all level (not only in your app)




Massimiliano Dessì, Sun Tech Day
                                                          11
Cagliari, 13 Giugno 2008
Dynamic Module Kernel (DMK),
                                   Kernel basato su OSGi-
                                   (=modularità e versionamento),
                                   configurato con un set minimo di
                                   bundle (profile).

                                   Ogni modulo ha un personality
                                   che descrive che tipo di modulo è
                                   (es:web, batch, web service), ogni
                                   modulo può quindi essere
                                   aggiornato indipendentemente
                                   dagli altri, ad es un web module è
                                   configurato come contesto in
                                   tomcat.

                                   Forme di deploy:
                                   WAR
                                   OSGi bundles
                                   PAR (Platform archive resource)



Massimiliano Dessì, Sun Tech Day
                                                                     12
Cagliari, 13 Giugno 2008
Riferimenti

                                        Java.net :
                http://wiki.java.net/bin/view/People/MassimilianoDessi

                                      Jug Sardegna
          http://www.jugsardegna.org/vqwiki/jsp/Wiki?MassimilianoDessi

                                             OSGi
                                     http://www.osgi.org/
                               http://springframework.org/osgi

            http://osgi.dzone.com/news/there-place-osgitm-enterprise-
           http://osgi.dzone.com/news/there-place-osgi-enterprise-ap-0




Massimiliano Dessì, Sun Tech Day                                         25
Cagliari, 13 Giugno 2008
Grazie per l'attenzione.

                               Have a lot of fun !




Massimiliano Dessì, Sun Tech Day                     14
Cagliari, 13 Giugno 2008

More Related Content

Similar to Dessi Tech Day2008 Cagliari

Lo sbarco di Google nel pianeta Mobile Internet: primo impatto ed esempi pra...
Lo sbarco di Google nel pianeta Mobile Internet:  primo impatto ed esempi pra...Lo sbarco di Google nel pianeta Mobile Internet:  primo impatto ed esempi pra...
Lo sbarco di Google nel pianeta Mobile Internet: primo impatto ed esempi pra...
Riccardo Solimena
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide Sito
Davide Sito
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
DotNetMarche
 
Luca 1214172885056884 9
Luca 1214172885056884 9Luca 1214172885056884 9
Luca 1214172885056884 9
Luca Vargetto
 

Similar to Dessi Tech Day2008 Cagliari (20)

javaday 2006 - Tiger
javaday 2006 - Tigerjavaday 2006 - Tiger
javaday 2006 - Tiger
 
Sviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con GrailsSviluppo Rapido Di Applicazioni Con Grails
Sviluppo Rapido Di Applicazioni Con Grails
 
Modi innovativi per costruire App
Modi innovativi per costruire AppModi innovativi per costruire App
Modi innovativi per costruire App
 
Osgi overview
Osgi overviewOsgi overview
Osgi overview
 
Lo sbarco di Google nel pianeta Mobile Internet: primo impatto ed esempi pra...
Lo sbarco di Google nel pianeta Mobile Internet:  primo impatto ed esempi pra...Lo sbarco di Google nel pianeta Mobile Internet:  primo impatto ed esempi pra...
Lo sbarco di Google nel pianeta Mobile Internet: primo impatto ed esempi pra...
 
Codice efficiente per le Windows Store Apps by Matteo Anelli
Codice efficiente per le Windows Store Apps by Matteo AnelliCodice efficiente per le Windows Store Apps by Matteo Anelli
Codice efficiente per le Windows Store Apps by Matteo Anelli
 
Android
AndroidAndroid
Android
 
Spring E Spring Web Flow Nel Progetto Jug Avis Web
Spring E Spring Web Flow Nel Progetto Jug Avis WebSpring E Spring Web Flow Nel Progetto Jug Avis Web
Spring E Spring Web Flow Nel Progetto Jug Avis Web
 
Progetto SOD Davide Sito
Progetto SOD Davide SitoProgetto SOD Davide Sito
Progetto SOD Davide Sito
 
PostgrSQL 9.3&9.4 - DjangoVillage
PostgrSQL 9.3&9.4 - DjangoVillagePostgrSQL 9.3&9.4 - DjangoVillage
PostgrSQL 9.3&9.4 - DjangoVillage
 
Sviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle MonorailSviluppo Web Agile con Castle Monorail
Sviluppo Web Agile con Castle Monorail
 
September 2010 - Gatein
September 2010 - GateinSeptember 2010 - Gatein
September 2010 - Gatein
 
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis WebSpring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° Episodio
 
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
DevOpsHeroes 2016 - Realizzare Continouous Integration con SQL Server e Visua...
 
Sviluppo di applicazioni web con Django
Sviluppo di applicazioni web con DjangoSviluppo di applicazioni web con Django
Sviluppo di applicazioni web con Django
 
Luca 1214172885056884 9
Luca 1214172885056884 9Luca 1214172885056884 9
Luca 1214172885056884 9
 
Sviluppare su OSGi con Camel e GWT
Sviluppare su OSGi con Camel e GWTSviluppare su OSGi con Camel e GWT
Sviluppare su OSGi con Camel e GWT
 
OSGi e Liferay 7
OSGi e Liferay 7OSGi e Liferay 7
OSGi e Liferay 7
 
Introduzione ai framework ioc
Introduzione ai framework iocIntroduzione ai framework ioc
Introduzione ai framework ioc
 

More from Massimiliano Dessì

More from Massimiliano Dessì (20)

Code One 2018 maven
Code One 2018   mavenCode One 2018   maven
Code One 2018 maven
 
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
When Old Meets New: Turning Maven into a High Scalable, Resource Efficient, C...
 
Hacking Maven Linux day 2017
Hacking Maven Linux day 2017Hacking Maven Linux day 2017
Hacking Maven Linux day 2017
 
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
Microservices in Go_Dessi_Massimiliano_Codemotion_2017_Rome
 
Dessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloudDessi docker kubernetes paas cloud
Dessi docker kubernetes paas cloud
 
Docker dDessi november 2015
Docker dDessi november 2015Docker dDessi november 2015
Docker dDessi november 2015
 
Docker linuxday 2015
Docker linuxday 2015Docker linuxday 2015
Docker linuxday 2015
 
Openshift linuxday 2014
Openshift linuxday 2014Openshift linuxday 2014
Openshift linuxday 2014
 
Web Marketing Training 2014 Community Online
Web Marketing Training 2014 Community OnlineWeb Marketing Training 2014 Community Online
Web Marketing Training 2014 Community Online
 
Vert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVMVert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVM
 
Reactive applications Linux Day 2013
Reactive applications Linux Day 2013Reactive applications Linux Day 2013
Reactive applications Linux Day 2013
 
Scala Italy 2013 extended Scalatra vs Spring MVC
Scala Italy 2013 extended Scalatra vs Spring MVCScala Italy 2013 extended Scalatra vs Spring MVC
Scala Italy 2013 extended Scalatra vs Spring MVC
 
Codemotion 2013 scalatra_play_spray
Codemotion 2013 scalatra_play_sprayCodemotion 2013 scalatra_play_spray
Codemotion 2013 scalatra_play_spray
 
Why we cannot ignore functional programming
Why we cannot ignore functional programmingWhy we cannot ignore functional programming
Why we cannot ignore functional programming
 
Scala linux day 2012
Scala linux day 2012 Scala linux day 2012
Scala linux day 2012
 
Three languages in thirty minutes
Three languages in thirty minutesThree languages in thirty minutes
Three languages in thirty minutes
 
MongoDB dessi-codemotion
MongoDB dessi-codemotionMongoDB dessi-codemotion
MongoDB dessi-codemotion
 
MongoDB Webtech conference 2010
MongoDB Webtech conference 2010MongoDB Webtech conference 2010
MongoDB Webtech conference 2010
 
RESTEasy
RESTEasyRESTEasy
RESTEasy
 
Spring Roo Internals Javaday IV
Spring Roo Internals Javaday IVSpring Roo Internals Javaday IV
Spring Roo Internals Javaday IV
 

Dessi Tech Day2008 Cagliari

  • 1. Spring 2008 what's the new ? 15 minute about Spring innovations Massimiliano Dessì http://www.jugsardegna.org/vqwiki/jsp/Wiki?MassimilianoDessi Massimiliano Dessì, Sun Tech Day 1 Cagliari, 13 Giugno 2008
  • 2. Chi è lo Speaker ? Software Architect a SardegnaIT Co-fondatore e consigliere Jug Sardegna Onlus Fondatore e coordinatore: SpringFramework Italian User Group Jetspeed Italian User Group Groovy Italian User Group Massimiliano Dessì, Sun Tech Day 2 Cagliari, 13 Giugno 2008
  • 3. OSGi: The Dynamic Module System for Java Cosa permette ? 1. Minimizzare i tempi in cui l'applicazione non risponde durante i rilasci, e migliorare le procedure di rollback quando si fanno nuovi rilasci, assicurando la continuità del servizio. 2. Versionamento delle librerie e delle classi per permettere la gestione della compatibilità all' indietro. OSGi permette la gestione dinamica e il versionamento di classi e librerie. 3. Partizionamento delle applicazioni in moduli. Massimiliano Dessì, Sun Tech Day 3 Cagliari, 13 Giugno 2008
  • 4. Spring Dynamic Modules for OSGi Spring con OSGi permette: - Migliore separazione della logica applicativa in moduli - Possibilità di deployare più versioni dello stesso modulo o libreria in maniera concorrente - Poter fare il discovery dinamicamente e usare servizi forniti da altri moduli nel sistema - Capacità di installare aggiornare e disinstallare moduli in un sistema funzionante (senza fermarlo) - Utilizzo di Spring per istanziare , configurare, assemblare e decorare componenti da e tra moduli. - Un modello semplice e familiare per gli sviluppatori enterprise, per poter utilizzare le features della piattaforma OSGi. Massimiliano Dessì, Sun Tech Day 4 Cagliari, 13 Giugno 2008
  • 5. Librerie e dipendenze Massimiliano Dessì, Sun Tech Day 5 Cagliari, 13 Giugno 2008
  • 6. Dao Registrato nel' OSGi service register: import java.util.Dictionary; import java.util.Properties; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceRegistration; public class ItemDaoActivator implements BundleActivator { private ServiceRegistration registration; public void start(BundleContext context) { ItemDao dao = new ItemDaoImpl(); Dictionary props = new Properties(); registration = context.registerService(ItemDao.class.getName(), dao, props); } public void stop(BundleContext context) { registration.unregister(); } } Massimiliano Dessì, Sun Tech Day 6 Cagliari, 13Giugno 2008
  • 7. Classe Tracker del DAO nell' OSGi service register import org.magicbox.osgi.services.ItemService; import org.magicbox.osgi.services.ItemServiceImpl; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import org.osgi.framework.ServiceRegistration; import org.osgi.util.tracker.ServiceTracker; public class ItemDaoTracker extends ServiceTracker{ private final ItemServiceImpl itemService = new ItemServiceImpl(); private int daoCount = 0; private ServiceRegistration registration = null; public ItemDaoTracker(BundleContext context) { super(context, ItemDao.class.getName(), null); } private boolean registering = false; public Object addingService(ServiceReference reference) { ItemDao myDao = (ItemDao) context.getService(reference); ... return myDao; } public void removedService(ServiceReference reference, Object service) { .... } } Massimiliano Dessì, Sun Tech Day 7 Cagliari, 13Giugno 2008
  • 8. Activator del servizio che carica il Tracker del DAO import org.magicbox.osgi.dao.ItemDaoTracker; import org.osgi.framework.BundleActivator; import org.osgi.framework.BundleContext; public class ItemServiceActivator implements BundleActivator { private ItemDaoTracker tracker; public void start(BundleContext context) { tracker = new ItemDaoTracker(context); tracker.open(); } public void stop(BundleContext context) { tracker.close(); } } Massimiliano Dessì, Sun Tech Day 8 Cagliari, 13Giugno 2008
  • 9. ApplicationContext Massimiliano Dessì, Sun Tech Day 9 Cagliari, 13Giugno 2008
  • 10. Manifest # Indentification headers Bundle-SymbolicName: org.magicbox.ItemService Bundle-Version: 1.0.1 Bundle-Name: Sample Service Bundle-Vendor: Samples, Inc. # Class Path Bundle-ClassPath: . # Bundle Lifecycle management Bundle-Activator:org.magicbox.ItemServiceActivator # Dependencies Import-Package: org.osgi.framework;version=1.3 Require-Bundle: org.sample.AnotherService;bundle-version=”[1.2.0,2.0.0)” # Exports Export-package: org.magicbox.ItemService Tramite gli export-package e gli Import-Package dichiariamo di quali versioni di classi/jar ogni modulo ha bisogno, in questo modo possiamo avere classi/jar che non entrano in conflitto, perchè sono gestiti attraverso OSGi. Ora vediamo dove viene usato OSGi con Spring Massimiliano Dessì, Sun Tech Day 10 Cagliari, 13 Giugno 2008
  • 11. Modules at all level (not only in your app) Massimiliano Dessì, Sun Tech Day 11 Cagliari, 13 Giugno 2008
  • 12. Dynamic Module Kernel (DMK), Kernel basato su OSGi- (=modularità e versionamento), configurato con un set minimo di bundle (profile). Ogni modulo ha un personality che descrive che tipo di modulo è (es:web, batch, web service), ogni modulo può quindi essere aggiornato indipendentemente dagli altri, ad es un web module è configurato come contesto in tomcat. Forme di deploy: WAR OSGi bundles PAR (Platform archive resource) Massimiliano Dessì, Sun Tech Day 12 Cagliari, 13 Giugno 2008
  • 13. Riferimenti Java.net : http://wiki.java.net/bin/view/People/MassimilianoDessi Jug Sardegna http://www.jugsardegna.org/vqwiki/jsp/Wiki?MassimilianoDessi OSGi http://www.osgi.org/ http://springframework.org/osgi http://osgi.dzone.com/news/there-place-osgitm-enterprise- http://osgi.dzone.com/news/there-place-osgi-enterprise-ap-0 Massimiliano Dessì, Sun Tech Day 25 Cagliari, 13 Giugno 2008
  • 14. Grazie per l'attenzione. Have a lot of fun ! Massimiliano Dessì, Sun Tech Day 14 Cagliari, 13 Giugno 2008