Liferay e Axis2 (Overview) Ingegneria del software (II parte) Andrea Bei
Contenuti Liferay Web Service e Axis2
LifeRay E un Portal Server Liferay permette di creare un portale velocemente e pemette di integrare diverse applicazioni, utilizzando lo standard JSR168 delle portlet, caratteristica dei più famosi Portal Server commerciali La portlet è un componente web basato sulla tecnologia Java, gestito da un portlet container che processa richieste da parte dell'utente e genera contenuti dinamici. Diverse portlet concorrono a creare una singola pagina del portale, la stessa portlet può essere utilizzata in più pagine E Open Source Liferay è reso disponibile sotto la licenza MIT, che è essenzialmente la stessa di Apache e BSD. A differenza delle licenze GPL e LGPL, la licenze MIT/Apache/BSD sono più business friendly e non contengono license fee e clausole reciproche. E indipendente dagli AS, dal DB, dal Sistema Operativo
LifeRay Ha un sistema di gestione dei contenuti (CMS) Le funzionalità di gestione dei contenuti offerte da LifeRay si basano su un interfaccia a toolbar simile a quella offerte dai più diffusi strumenti di office automation (word, excel, Ha un ampio insieme di portlet predefinite: Address Book, News,Search, Currency Converter, Password Generator, Polls, Tasks, Analog Clock, Directory, Blogs, Document Library, Unit Converter, Bookmarks, WSRP Proxy, Breadcrumb, RSS, Weather, Calculator, Recent Documents Calendar, Image Gallery, Reports, Wiki, Chat
Portali Internet / Intranet / Extranet Contenuti (immagini, documenti, testo) Servizi applicativi (acquisto online, registrazione presenze, ) Servizi di community (Forum, Chat, Social network, Wiki) Approccio realizzativo Gestione dei contenuti informativi (Portlet Liferay di Content Management) Servizi applicativi sono realizzati attraverso portlet. Ogni portlet può essere considerata una mini-web application sviluppata con i pattern e framework noti Servizi di community (Portlet Liferay) Contenuti (Liferay CMS) Portale WEB Servizi (Spring, JSP,..)
Portal Server Liferay Liferay permette la completa gestione del portale consentendo la creazione e la modifica della sua struttura mediante una struttura ad albero di pagine. L utente può aggiungere pagine figlie e riorganizzare l ordine definito. E possibile scegliere tra tre differenti tipi: Portlet: pagina standard che può gestire diverse portlet. Embedded: selezionando questa pagina verrà incluso il contentuo della url definita all interno del portale URL: selezionando questa pagina l utente sarà rediretto verso la nuova url
Portal Server Liferay Liferay fornisce le funzionalità base di CMS attraverso un set di portlet che consentono mediante un meccanismo di templating una chiara separazione tra contenuto e presentazione, un sistema di versioning e un workflow di approvazione
Portal Server Liferay Ogni pagina pubblicata sul portale, attraverso l utilizzo della portlet Journal, è composta da un articolo che si basa su un template costruito su una struttura ben definita
Portal Server Liferay Le Strutture(XML) definiscono i tipi ed il numero delle porzioni di contenuto (es. testo libero, area di testo, immagini, lista di selezione, menù a tendina, etc.). Una struttura descrive tutti gli articoli che hanno lo stesso numero e lo stesso tipo di item. Ad esempio tutti quegli costituiti da un titolo, una text area ed una immagine I Template(XSL,XSLT) determinano come le porzioni del contenuto saranno organizzate. I Journal Content sono l istanza del template, ottenuta popolando ogni porzione della struttura del contenuto con un particolare testo o immagine.
Web Services definizione E uno standard tecnologico nato per supportare l'interoperabilità (i.e. comunicazione) tra sistemi eterogenei (scritti in linguaggi diversi, su sistemi operativi diversi, ) Un Web Service è un servizio che offre un'interfaccia software descritta in un formato standard e automaticamente elaborabile come (WSDL) Utilizzando l interfaccia altri sistemi possono interagire con il Web Service attivando le operazioni descritte nell'interfaccia tramite appositi "messaggi" I messaggi sono, solitamente, trasportati tramite il protocollo HTTP e formattati secondo lo standard XML.
Caratteristiche Sono servizi incapsulati e modulari accessibili via HTTP (ed altri protocolli) tramite l interfaccia pubblicata. Es: quotazione attuale o andamento di un titolo di borsa verifiche su una carta di credito e processo di pagamento previsioni del tempo.. Possono essere composti per fornire un unico servizio Possono essere pubblicati in un registro (UDDI) per essere ricercabili e utilizzabili Permettono l integrazione dinamica tra sistemi informatici eterogenei
PRO Pro e Contro Permettono l'interoperabilità tra diverse applicazioni software su diverse piattaforme hardware Utilizzano standard e protocolli "open" Mediante l'uso di HTTP per il trasporto dei messaggi i Web Service non necessitano, normalmente, che vengano effettuate modifiche alle regole di sicurezza utilizzate come filtro sui firewall Possono essere facilmente utilizzati per formare servizi "integrati" e complessi. Consentono il riutilizzo di infrastrutture ed applicazioni già sviluppate e sono (relativamente) indipendenti da eventuali modifiche delle stesse CONTRO Attualmente non esistono standard consolidati per applicazioni critiche quali, ad esempio, le transazioni distribuite Le performance legate all'utilizzo dei Web Service possono essere minori di quelle riscontrabili utilizzando approcci alternativi di distributed computing quali Java RMI, CORBA, o DCOM
Stack protocollare Trasporto del servizio: responsabile per il trasporto dei messaggi tra le applicazioni in rete, include protocolli quali HTTP, SMTP, FTP, XMPP ed il recente Blocks Extensible Exchange Protocol (BEEP) XML Messaging: tutti i dati scambiati sono in linguaggio XML. Il messaggio può essere codificato conformemente allo standard SOAP, come anche utilizzare JAX-RPC, XML-RPC o REST Descrizione del servizio: l'interfaccia pubblica di un Web Service viene descritta tramite WSDL (Web Services Description Language) un linguaggio basato su XML usato per la creazione di "documenti" descrittivi delle modalità di interfacciamento ed utilizzo del Web Service. Elencazione dei servizi: la centralizzazione della descrizione e della localizzazione dei Web Service in un "registro" comune permette la ricerca ed il reperimento in maniera veloce dei Web Service disponibili in rete; a tale scopo viene attualmente utilizzato il protocollo UDDI
Caratteristiche sono la tecnologia fondamentale per l integrazione tra sistemi (EAI)
Caratteristiche la cooperazione applicativa (porta di dominio) Sistema informativo dominio 1pa1 pa2 dominio 2
Caratteristiche e le architetture SOA
Il modello dei Web Services
Il modello dei Web Services SOAP
Il modello dei Web Services
Representational state transfer (REST) REST è l acronimo di Representational Transfer State, ed è un paradigma per la realizzazione di applicazioni Web che permette la manipolazione delle risorse per mezzo dei metodi GET, POST, PUT e DELETE del protocollo HTTP. I termini "representational state transfer" e "REST" furono introdotti nel 2000 nella tesi di dottorato di Roy Fielding, uno dei principali autori delle specifiche dell' Hypertext Transfer Protocol (HTTP) Un Web service REST offre le proprie funzionalità come un insieme di risorse indirizzabili tramite URI (risorse web) usando la sintassi e la semantica del protocollo HTTP (GET, POST, PUT, e DELETE) Il termine è spesso usato per descrivere ogni semplice interfaccia che trasmette dati su HTTP senza un livello opzionale come SOAP o la gestione della sessione tramite i cookies Analogia con le operazioni CRUD (CREATE, READ, UPDATE, DELETE) - > (POST,GET,PUT,DELETE)
Representational state transfer (REST) http://www.boeing.com/aircraft/747 Viene restituita una rappresentazione della risorsa (es: Boeing747.html). Il client assume uno stato Se il client segue un link di Boeing747.html viene restituita un altra rappresentazione portando il client in un nuovo stato L applicazione client cambia (transfer) stato per ogni rappresentazione delle risorse (Representational state transfer)
Representational state transfer (REST) Esempio: Part Depot (Deposito di pezzi di ricambio) 1. get a list of parts 2. get detailed information about a particular part 3. submit a Purchase Order (PO) get a list of parts http://www.parts-depot.com/parts <?xml version="1.0"?> <p:parts xmlns:p="http://www.parts-depot.com" xmlns:xlink="http://www.w3.org/1999/xlink"> <Part id="00345" xlink:href="http://www.parts-depot.com/parts/00345"/> <Part id="00346" xlink:href="http://www.parts-depot.com/parts/00346"/> <Part id="00347" xlink:href="http://www.parts-depot.com/parts/00347"/> <Part id="00348" xlink:href="http://www.parts-depot.com/parts/00348"/> </p:parts> Building Web Services the REST Way (http://www.xfront.com/rest-web-services.html) Il client passa da uno stato all altro esaminando il risultato e scegliendo uno delle possibili URL nella risposta
Representational state transfer (REST) get part detail http://www.parts-depot.com/parts/00345 <?xml version="1.0"?> <p:part xmlns:p="http://www.parts-depot.com" xmlns:xlink="http://www.w3.org/1999/xlink"> <Part-ID>00345</Part-ID> <Name>Widget-A</Name> <Description>This part is used within the frap assembly</description> <Specification xlink:href="http://www.parts-depot.com/parts/00345/specification"/> <UnitCost currency="usd">0.10</unitcost> <Quantity>10</Quantity> </p:part>
Representational state transfer (REST) PO Il client crea il documento PO.xml conforme allo schema che Parts Depot ha pubblicato nel file WSDL Il client invia PO.xml con una HTTP POST XML con esito dell ordine
Axis 2 Axis2 è un framework open source sviluppato dall'apache Software Foundation, che fornisce uno strumento mediante il quale è possibile pubblicare o interrogare un Web service. E nato con l obiettivo di estendere la piattaforma Axis con nuovi protocolli come: WS-Security, WS-Addressing, WS- ReliableMessaging. Supporta implementazioni Java e C lato client e lato server dei Web Service Le principali caratteristiche sono:
Axis 2 Le principali caratteristiche sono: Inviare, ricevere ed elaborare messaggi SOAP Creare web service da una semplice classe Java Creare classi sia per il Server che per il Client utilizzando WSDL Recuperare facilmente il WSDL di un servizio; Inviare e ricevere messaggi SOAP con allegati; Creare o utilizzare un servizio Web basato sul nuovo paradigma REST
Axis 2: approccio per la generazione automatica di ws Top-down 1. creazione del file WSDL che descrive il Web Service 2. generazione automatica di skeleton Java e file per il deployment del Web Service a partire dal file WSDL Bottom-up 1. creazione di una classe o interfaccia Java che contiene i metodi che il Web Service dovrà esporre 2. generazione automatica del WSDL a partire dalla classe 3. generazione automatica di skeleton Java e file per il deployment del Web Service a partire dal file WSDL
Axis 2: esempio A partire dalla classe Java Traces contenente il metodo public boolean addtrace(string d,string c,string lat,string lon,string date); axis2 può generare automaticamente il web service Classe Metodo http://<indirizzo IP Server>/axis2/services/Traces/addTrace?d=<IMEI device>&c=<team State >&lat=<latitudine>&lon=<longitudine>&date=<data e ora> Tratto da Tesi di Andrea Frusone
Axis 2 Plugin dedicati ai Web Service per i Eclipse e Netbeans: Eclipse Web Tools Platform (WTP) Netbeans Enterprise Pack Semplificano l'approccio top-down 1. Permettono di definire il Web Service mediante interfaccia grafica 2. generando il documento WSDL corrispondente
Axis 2 Scaricare http://ws.apache.org/axis2/ Effettuare il deploy in un servlet container (es: TomCat) Usare l interfaccia web di amministrazione Installare il plugin Axis2 in Eclipse Seguire il tutorial http://www.eclipse.org/webtools/community/tutorials/bottomupaxis2 WebService/bu_tutorial.html Seguire il tutorial http://ws.apache.org/axis2/1_1/rest-ws.html
Axis 2 Axis2 Apache Software Foundation, Axis2 Documentation, http://ws.apache.org/axis2/1_4_1/contents.html Axis2 con Eclipse Web Tools Platform Eclipse Foundation, Web Service Tutorials for WTP 1.5, http://www.eclipse.org/webtools/jst/components/ws/1.5/tutorials/index.html Ka Iok Kent Tong, Developing Web Services with Apache Axis2, TipTec Development, 2005-2008
Comunicazione per applicazioni Mobile LocalDB GPRS/UMTS REST Internet Web Service Web Service Web Service Web Application Service DAO Application Server DBMS