Dessi Tech Day2008 Cagliari
-
Upload
massimiliano-dessi -
Category
Technology
-
view
1.466 -
download
0
description
Transcript of Dessi Tech Day2008 Cagliari
![Page 1: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/1.jpg)
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 Cagliari, 13 Giugno 2008
1
![Page 2: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/2.jpg)
Massimiliano Dessì, Sun Tech DayCagliari, 13 Giugno 2008 2
Chi è lo Speaker ?
Software Architect a SardegnaITCo-fondatore e consigliere Jug Sardegna Onlus
Fondatore e coordinatore:SpringFramework Italian User Group
Jetspeed Italian User Group
Groovy Italian User Group
![Page 3: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/3.jpg)
Massimiliano Dessì, Sun Tech DayCagliari, 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.
![Page 4: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/4.jpg)
Massimiliano Dessì, Sun Tech DayCagliari, 13 Giugno 2008
4
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.
Spring Dynamic Modules for OSGi
![Page 5: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/5.jpg)
Massimiliano Dessì, Sun Tech DayCagliari, 13 Giugno 2008
5
Librerie e dipendenze
![Page 6: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/6.jpg)
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 DayCagliari, 13Giugno 2008
6
Dao Registrato nel' OSGi service register:
![Page 7: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/7.jpg)
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 DayCagliari, 13Giugno 2008 7
Classe Tracker del DAO nell' OSGi service register
![Page 8: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/8.jpg)
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 DayCagliari, 13Giugno 2008 8
Activator del servizio che carica il Tracker del DAO
![Page 9: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/9.jpg)
Massimiliano Dessì, Sun Tech DayCagliari, 13Giugno 2008 9
ApplicationContext
![Page 10: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/10.jpg)
Massimiliano Dessì, Sun Tech DayCagliari, 13 Giugno 2008 10
Manifest
# Indentification headersBundle-SymbolicName: org.magicbox.ItemServiceBundle-Version: 1.0.1Bundle-Name: Sample ServiceBundle-Vendor: Samples, Inc.# Class PathBundle-ClassPath: .# Bundle Lifecycle managementBundle-Activator:org.magicbox.ItemServiceActivator# DependenciesImport-Package: org.osgi.framework;version=1.3Require-Bundle: org.sample.AnotherService;bundle-version=”[1.2.0,2.0.0)”# ExportsExport-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
![Page 11: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/11.jpg)
Massimiliano Dessì, Sun Tech DayCagliari, 13 Giugno 2008 11
Modules at all level (not only in your app)
![Page 12: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/12.jpg)
Massimiliano Dessì, Sun Tech DayCagliari, 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 personalityche 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:WAROSGi bundlesPAR (Platform archive resource)
![Page 13: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/13.jpg)
Massimiliano Dessì, Sun Tech DayCagliari, 13 Giugno 2008
25
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
![Page 14: Dessi Tech Day2008 Cagliari](https://reader036.fdocuments.net/reader036/viewer/2022081907/5484ce06b479590a0d8b4cc2/html5/thumbnails/14.jpg)
Massimiliano Dessì, Sun Tech DayCagliari, 13 Giugno 2008
14
Grazie per l'attenzione.
Have a lot of fun !