OSGi e Liferay 7
Overview del futuro prossimo
da Jader e Antonio! :)
Chi siamo? :)
Jader Francia
Imprenditore
@JedJds
http://blog.d-vel.com
Antonio Musarra
Super Mega Consulente
@antonio_musarra
http://www.dontesta.it/blog/
Imprenditore... Super mega consulente...
OSGi: Quali sono gli elementi chiave
OSGi (Open Service Gateway Initiative) è una specifica che permette di costruire
applicazioni modulari a componenti (i Bundle) e che introduce una programmazione
Service Oriented, permettendo una separazione tra interfaccia ed implementazione
molto più rigorosa di quella nativa Java. Esistono diverse implementazioni (container)
di OSGi, conformi alle specifiche.
● Modularità
● Bundle
● Declarative Services
● Semantic Version
● Microservices
Contiene:
- Classi java
- il file di Manifest
- le Risorse, ovvero:
- File di properties
- JSPs
- File vari (images, pdf, binary files, etc)
Cos’è un modulo?
Può definire:
- Services
- Portlets
- Servlet
- Comandi shell
Un modulo è una unità di deploy self contained.
I moduli sono pacchettizzati in file JAR
Moduli e Liferay 7
Modulo
Java Class Java Class
Manifest Resource (JSP)
Resource
(Properties files)
Resource
(Images)
Sviluppare moduli vuol dire:
● creare piccoli moduli
● pubblicare e consumare le features di
altri moduli
● lavorare senza dipendenze statiche
Cosa comprendere del framework
modulare:
● Moduli
● Componenti
● Ciclo di vita delle applicazioni
Com’è fatto un modulo?
Un modulo è un JAR che contiene (come minimo):
- Java classes
- il file MANIFEST.MF
Le risorse non sono necessarie affinché il modulo sia valido.
Perché sia valido, un modulo deve avere uno unique identifier.
Module Name + Module Version
Ad esempio: com.example.my.module,1.0.1
Questo significa che possiamo rilasciare differenti versioni dello stesso modulo!
Naming convention di un modulo
OSGi: Semantic Versioning
● Le API definiscono un contratto (come un documento WSDL)
● Assegnare un numero di versione alle funzionalità esportate dà maggior vita al
contratto
○ 1.x => 2.0 := apportati cambiamenti critici alle API
○ 1.x => 1.y := apportati cambiamenti retro-compatibili
○ 1.x.y => 1.x.z := bug fix
● Vantaggi
○ Chi utilizza le API può decidere liberamente un intervallo di versioni che accetta
○ Con queste convenzioni, i numeri di versione, ed il modo in cui essi cambiano, comunicano
significato relativamente al codice sottostante e a cosa è stato modificato da una versione all’altra.
Cos’è un componente?
I componenti sono i blocchi con i quali puoi costruire una applicazione.
Sono riusabili e sempre disponibili perché potenzialmente non legati ad una singola
applicazione.
Rinforzano il concetto di modularità.
Componenti e Liferay 7
Applicazione
Modulo Modulo
JSPs Service
Portlet
(Component)
● I componenti sono contenuti all’
interno del moduli
● I singoli componenti definiscono
funzionalità atomiche e possono essere
utilizzati in modo isolato o insieme ad
altri componenti per costruire una o
più applicazioni
● Un’applicazione è definita da uno o
più componenti che possono risiedere
all’interno dello stesso modulo o su
moduli diversi
Application Lifecycle
● Un’applicazione è installata
con dei moduli che
contengono dei componenti
● Il framework modulare (il
container OSGi) gestisce l’
installazione, l’attivazione e
le dipendenze tra moduli
● Il processo d’installazione e
attivazione di un modulo è
gestito tramite l’application
lifecycle
Application Lifecycle
On install:
- viene validato il
MANIFEST;
- Vengono risolte le
dipendenze;
- Il modulo viene messo
in stato RESOLVED;
Application Lifecycle
On resolved:
- le dipendenze sono
risolte;
- le classi Java esportate
sono disponibili;
- tutti i servizi necessari
sono disponibili;
- il modulo può essere
messo in STARTING.
Application Lifecycle
On started:
- l’applicazione può
partire;
- si possono invocare i
servizi;
- il modulo va in stato
ACTIVE.
Application Lifecycle
- Lo stato ACTIVE è lo
stato principale;
- le applicazioni in
questo stato sono
eseguibili;
Application Lifecycle
On stopping:
- l’applicazione viene
“spenta”;
- torna nello stato
“resolved”;
- si può nuovamente
farla ripartire o
disinstallarla;
Application Lifecycle
On uninstalled:
- il modulo non è più
presente nella lista dei
moduli del sistema;
- bisogna rifare deploy
per riaverlo disponibile.
OSGi: I Services
● I Services sono costituiti da una serie d' interfacce e classi Java registrate all’
interno del Service Registry
● Un componente può essere pubblicato come servizio
● Un componente può richiedere un servizio
● I Servizi sono registrati dal Bundle Activator del modulo
OSGi: I Services
● Liferay utilizza il framework
modulare a Declarative Services
(DS) che fornisce un alto livello di
astrazione nella gestione dei servizi
● Un service è costituito da un’
interfaccia ed un’implementazione
● Il Service Registry è il “faldone” con
i servizi che abbiamo a disposione
...qualche esempio concreto dal vivo.
● Bundle Activator
● Services
● Framework Events (Liferay Lifecycle)
● Application Configuration (Scheduler Example)
...Se poi volete provare anche voi: https://github.com/amusarra/liferay-
italia-bo-usergroup
E adesso...
Ci vediamo al simposio!
… Però, se siete curiosi di scoprire di più su Liferay 7:
- http://www.dontesta.it/blog
- http://blog.d-vel.com
- http://www.slideshare.net/amusarra
@antonio_musarra
@JedJds
@dvelsnc
GRAZIE! :)

OSGi e Liferay 7

  • 1.
    OSGi e Liferay7 Overview del futuro prossimo da Jader e Antonio! :)
  • 2.
    Chi siamo? :) JaderFrancia Imprenditore @JedJds http://blog.d-vel.com Antonio Musarra Super Mega Consulente @antonio_musarra http://www.dontesta.it/blog/ Imprenditore... Super mega consulente...
  • 3.
    OSGi: Quali sonogli elementi chiave OSGi (Open Service Gateway Initiative) è una specifica che permette di costruire applicazioni modulari a componenti (i Bundle) e che introduce una programmazione Service Oriented, permettendo una separazione tra interfaccia ed implementazione molto più rigorosa di quella nativa Java. Esistono diverse implementazioni (container) di OSGi, conformi alle specifiche. ● Modularità ● Bundle ● Declarative Services ● Semantic Version ● Microservices
  • 4.
    Contiene: - Classi java -il file di Manifest - le Risorse, ovvero: - File di properties - JSPs - File vari (images, pdf, binary files, etc) Cos’è un modulo? Può definire: - Services - Portlets - Servlet - Comandi shell Un modulo è una unità di deploy self contained. I moduli sono pacchettizzati in file JAR
  • 5.
    Moduli e Liferay7 Modulo Java Class Java Class Manifest Resource (JSP) Resource (Properties files) Resource (Images) Sviluppare moduli vuol dire: ● creare piccoli moduli ● pubblicare e consumare le features di altri moduli ● lavorare senza dipendenze statiche Cosa comprendere del framework modulare: ● Moduli ● Componenti ● Ciclo di vita delle applicazioni
  • 6.
    Com’è fatto unmodulo? Un modulo è un JAR che contiene (come minimo): - Java classes - il file MANIFEST.MF Le risorse non sono necessarie affinché il modulo sia valido.
  • 7.
    Perché sia valido,un modulo deve avere uno unique identifier. Module Name + Module Version Ad esempio: com.example.my.module,1.0.1 Questo significa che possiamo rilasciare differenti versioni dello stesso modulo! Naming convention di un modulo
  • 8.
    OSGi: Semantic Versioning ●Le API definiscono un contratto (come un documento WSDL) ● Assegnare un numero di versione alle funzionalità esportate dà maggior vita al contratto ○ 1.x => 2.0 := apportati cambiamenti critici alle API ○ 1.x => 1.y := apportati cambiamenti retro-compatibili ○ 1.x.y => 1.x.z := bug fix ● Vantaggi ○ Chi utilizza le API può decidere liberamente un intervallo di versioni che accetta ○ Con queste convenzioni, i numeri di versione, ed il modo in cui essi cambiano, comunicano significato relativamente al codice sottostante e a cosa è stato modificato da una versione all’altra.
  • 9.
    Cos’è un componente? Icomponenti sono i blocchi con i quali puoi costruire una applicazione. Sono riusabili e sempre disponibili perché potenzialmente non legati ad una singola applicazione. Rinforzano il concetto di modularità.
  • 10.
    Componenti e Liferay7 Applicazione Modulo Modulo JSPs Service Portlet (Component) ● I componenti sono contenuti all’ interno del moduli ● I singoli componenti definiscono funzionalità atomiche e possono essere utilizzati in modo isolato o insieme ad altri componenti per costruire una o più applicazioni ● Un’applicazione è definita da uno o più componenti che possono risiedere all’interno dello stesso modulo o su moduli diversi
  • 11.
    Application Lifecycle ● Un’applicazioneè installata con dei moduli che contengono dei componenti ● Il framework modulare (il container OSGi) gestisce l’ installazione, l’attivazione e le dipendenze tra moduli ● Il processo d’installazione e attivazione di un modulo è gestito tramite l’application lifecycle
  • 12.
    Application Lifecycle On install: -viene validato il MANIFEST; - Vengono risolte le dipendenze; - Il modulo viene messo in stato RESOLVED;
  • 13.
    Application Lifecycle On resolved: -le dipendenze sono risolte; - le classi Java esportate sono disponibili; - tutti i servizi necessari sono disponibili; - il modulo può essere messo in STARTING.
  • 14.
    Application Lifecycle On started: -l’applicazione può partire; - si possono invocare i servizi; - il modulo va in stato ACTIVE.
  • 15.
    Application Lifecycle - Lostato ACTIVE è lo stato principale; - le applicazioni in questo stato sono eseguibili;
  • 16.
    Application Lifecycle On stopping: -l’applicazione viene “spenta”; - torna nello stato “resolved”; - si può nuovamente farla ripartire o disinstallarla;
  • 17.
    Application Lifecycle On uninstalled: -il modulo non è più presente nella lista dei moduli del sistema; - bisogna rifare deploy per riaverlo disponibile.
  • 18.
    OSGi: I Services ●I Services sono costituiti da una serie d' interfacce e classi Java registrate all’ interno del Service Registry ● Un componente può essere pubblicato come servizio ● Un componente può richiedere un servizio ● I Servizi sono registrati dal Bundle Activator del modulo
  • 19.
    OSGi: I Services ●Liferay utilizza il framework modulare a Declarative Services (DS) che fornisce un alto livello di astrazione nella gestione dei servizi ● Un service è costituito da un’ interfaccia ed un’implementazione ● Il Service Registry è il “faldone” con i servizi che abbiamo a disposione
  • 20.
    ...qualche esempio concretodal vivo. ● Bundle Activator ● Services ● Framework Events (Liferay Lifecycle) ● Application Configuration (Scheduler Example) ...Se poi volete provare anche voi: https://github.com/amusarra/liferay- italia-bo-usergroup E adesso...
  • 21.
    Ci vediamo alsimposio! … Però, se siete curiosi di scoprire di più su Liferay 7: - http://www.dontesta.it/blog - http://blog.d-vel.com - http://www.slideshare.net/amusarra @antonio_musarra @JedJds @dvelsnc GRAZIE! :)