osgi e liferay 7

21
OSGi e Liferay 7 Overview del futuro prossimo da Jader e Antonio! :)

Upload: antonio-musarra

Post on 06-Jan-2017

480 views

Category:

Internet


5 download

TRANSCRIPT

OSGi e Liferay 7Overview del futuro prossimo

da Jader e Antonio! :)

Chi siamo? :)Jader FranciaImprenditore@JedJdshttp://blog.d-vel.com

Antonio MusarraSuper Mega Consulente@antonio_musarrahttp://www.dontesta.it/blog/

Imprenditore... Super mega consulente...

OSGi: Quali sono gli elementi chiaveOSGi (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 7Modulo

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 LifecycleOn install:

- viene validato il

MANIFEST;

- Vengono risolte le

dipendenze;

- Il modulo viene messo

in stato RESOLVED;

Application LifecycleOn 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 LifecycleOn 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 LifecycleOn stopping:

- l’applicazione viene

“spenta”;

- torna nello stato

“resolved”;

- si può nuovamente

farla ripartire o

disinstallarla;

Application LifecycleOn 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! :)