14
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

Dessi Tech Day2008 Cagliari

Embed Size (px)

DESCRIPTION

Slide Quickie 15 about Spring OSGi and Spring DMK and Application Platform

Citation preview

Page 1: Dessi Tech Day2008 Cagliari

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

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

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

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

Massimiliano Dessì, Sun Tech DayCagliari, 13 Giugno 2008

5

Librerie e dipendenze

Page 6: Dessi Tech Day2008 Cagliari

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

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

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

Massimiliano Dessì, Sun Tech DayCagliari, 13Giugno 2008 9

ApplicationContext

Page 10: Dessi Tech Day2008 Cagliari

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

Massimiliano Dessì, Sun Tech DayCagliari, 13 Giugno 2008 11

Modules at all level (not only in your app)

Page 12: Dessi Tech Day2008 Cagliari

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

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

Massimiliano Dessì, Sun Tech DayCagliari, 13 Giugno 2008

14

Grazie per l'attenzione.

Have a lot of fun !