Integrazione della piattaforma Ajax in un sistema web multi-agente realizzato col framework applicativo Spring



Documenti analoghi
I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

InitZero s.r.l. Via P. Calamandrei, Arezzo

Guida alla registrazione on-line di un DataLogger

Il CMS Moka. Giovanni Ciardi Regione Emilia Romagna

1) GESTIONE DELLE POSTAZIONI REMOTE

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

File, Modifica, Visualizza, Strumenti, Messaggio

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

Il web server Apache Lezione n. 3. Introduzione

Office 2007 Lezione 08

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

Generazione Automatica di Asserzioni da Modelli di Specifica

Registratori di Cassa

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

OSSIF WEB. Manuale query builder

Il calendario di Windows Vista

Gestione delle Presenze WorkFlow Manuale Operativo

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8

Presentazione della release 3.0

COMUNICAZIONE UTENTI SISTEMI-PROFIS INSTALLAZIONE GE.RI.CO e PARAMETRI2015

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

MANUALE PARCELLA FACILE PLUS INDICE

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

WoWords. Guida all uso: creare ed utilizzare le frasi. In questa guida è descritto come creare ed utilizzare le frasi nel software WoWords.

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Utilizzo del server LDAP locale per la sincronizzazione della base utenti e della GAL

Capitolo 4 Pianificazione e Sviluppo di Web Part

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

Che differenza c è tra una richiesta XML ed una domanda XML? (pag. 4)

Uso delle tabelle e dei grafici Pivot

Il sistema C.R.M. / E.R.M.

Il software di gestione immobiliare più facile da usare. Modulo Web v5.2.

Installazione di Moodle. Preparato per: Gruppo A, Piattaforma di E - Learning Preparato da: Cinzia Compagnone, Vittorio Saettone

Rapporto tecnico sulle tipologie di agenti software definiti e implementati nell ambito del progetto

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Esercizi di JavaScript

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Mac Application Manager 1.3 (SOLO PER TIGER)

Lande Immortali: Riepilogo dello Stato di Avanzamento del Progetto

Panoramica: che cosa è necessario

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

Light CRM. Documento Tecnico. Descrizione delle funzionalità del servizio

flusso delle informazioni... 2 password... 3 password/ inserimento di una nuova richiesta... 4 le condizioni di vendita... 6

Obiettivo Principale: Aiutare gli studenti a capire cos è la programmazione

InfiXor. il programma facile e versatile per preventivi veloci e completi. il software di preventivazione per produttori e rivenditori di infissi

FPf per Windows 3.1. Guida all uso

Configurazione di Outlook Express

Guida all uso di Java Diagrammi ER

Il Web Server e il protocollo HTTP

Visual basic base Lezione 01. L'ambiente di sviluppo

Microsoft Office XP. dott. ing. Angelo Carpenzano. La suite Microsoft Office XP

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

PORTALE CLIENTI Manuale utente

Software Gestionale per alberghi e strutture ricettive

Come masterizzare dischi con Nero 11

Gestione Risorse Umane Web

ProSky Progettare una facciata continua non è mai stato così semplice.

ISTRUZIONI PER LA GESTIONE BUDGET

Implementazione di MVC. Gabriele Pellegrinetti

Alla scoperta della nuova interfaccia di Office 2010

ADDING SOCIAL PLUGINS TO YOUR OWN SITE

sito web sito Internet

FIRESHOP.NET. Gestione Lotti & Matricole.

Guida all uso delle Web View su ios

Laboratorio di Sistemi Programmare in Php con NetBeans Php. Programmare in Php con Xampp e NetBeans IDE

Introduzione. Installare EMAS Logo Generator

SOMMARIO... 3 INTRODUZIONE...

FAQ DI INSTALLAZIONE DI INAZIENDA Rev.2

Application Server per sviluppare applicazioni Java Enterprise

Vi ricordiamo che per qualsiasi problema tecnico o informazione potete contattare info@eduitalia.org oppure Francesco al

GUIDA UTENTE PRIMA NOTA SEMPLICE

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

Come si può vedere, la regola è stata fatta in modo da spostare tutti i messaggi di Spam nella cartella del cestino.

Manuale di KSystemLog. Nicolas Ternisien

PowerPoint. Guida introduttiva

SPRING SQ COMUNICAZIONE OPERAZIONI IVA NON INFERIORI A 3000 EURO PER L ANNO 2011

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1

MANUALEDIUTILIZZO MODULO CRM POSTVENDITA

Manuale LiveBox WEB ADMIN.

INSTALLAZIONE NUOVO CLIENT TUTTOTEL (04 Novembre 2014)

Cominciamo dalla barra multifunzione, ossia la struttura a schede che ha sostituito la barra dei menu e la barra delle icone (Figura 1).

Installazione & Configurazione Php e MySQL su Mac Os X. Php

MODULO PER LA GESTIONE DEI RESI

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

GateManager. 1 Indice. tecnico@gate-manager.it

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Il software ideale per la gestione delle prenotazioni GUIDA UTENTE

SPSS Statistics per Windows - Istruzioni di installazione per (Licenza per utenti singoli)

I TUTORI. I tutori vanno creati la prima volta seguendo esclusivamente le procedure sotto descritte.

APRIRE UN PROGRAMMA DI FOGLIO ELETTRONICO

Manuale LiveBox WEB ADMIN.

Soluzione dell esercizio del 12 Febbraio 2004

progecad NLM Guida all uso Rel. 10.2

Organizzazione delle informazioni: Database

UTILIZZATORI A VALLE: COME RENDERE NOTI GLI USI AI FORNITORI

PRODUZIONE PAGELLE IN FORMATO PDF

1. Manuale d uso per l utilizzo della WebMail PEC e del client di posta tradizionale

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

Transcript:

dott. Longari Michele Matricola: 180852 Ingegneria informatica spec. E-mail: longari@ce.unipr.it Integrazione della piattaforma Ajax in un sistema web multi-agente realizzato col framework applicativo Spring Progetto realizzato sotto la guida dell ing. M. Mari per i corsi di: Ingegneria del Software B ( prof. A. Poggi ) Laboratorio di Ingegneria Informatica ( prof.ssa M. Mordonini )

2 Integrazione della piattaforma Ajax in un sistema web multi-agente realizzato col framework applicativo Spring 1. Ajax e Spring: perché cercare di integrarli? Prima di addentrarci nella spiegazione del progetto, forse è meglio chiarirsi le idee su cosa si è cercato di fare, e soprattutto perché. Partiamo descrivendo brevemente cosa sono Ajax e Spring. Parlare di Ajax corrisponde a parlare di un insieme di tecnologie sfruttate in sinergia per la costruzione di pagine web dinamiche, secondo la filosofia della trasmissione asincrona tra applicazioni web. Non si tratta di qualcosa di sostanzialmente nuovo, ma di un naturale progresso di un insieme di tecniche preesistenti e già consolidate, integrate insieme attraverso l introduzione di una serie di specifiche necessarie per rendere questa tecnologia quanto più universale e standardizzata possibile. L acronimo del nome ( Asynchronous JavaScript and XML ) mette già in primo piano le due principali tecnologie utilizzate da Ajax, ossia JavaScript e XML, e il fatto che questa tecnica sia basata sulla trasmissione asincrona per la sviluppo di applicazioni interattive. Spring, invece, è un framework leggero per lo sviluppo di applicazioni J2EE. In particolare, Spring è uno strumento di sviluppo molto potente per quanto riguarda lo sviluppo di applicazioni web efficienti utilizzando i mezzi forniti dalle Servlet/Portlet. Ecco quindi chiarito, prima di tutto, il legame primitivo tra Spring e Ajax: il Web. Integrare Ajax con Spring, vuol dire dare il via alla possibilità potenziale di creare applicazioni web sofisticate e con una portabilità praticamente infinita. Si possono creare applicazioni web sempre più vicine ad un comportamento desktop-like, che riescono a far interagire client e server in maniera completamente asincrona, alleggerendo così in maniera importante il lavoro da fare lato client. Combinando i due framework, inoltre, è possibile fare in modo che da semplici pagine.jsp, si possa accedere a metodi e variabili di classi remote Java, in maniera bidirezionale, dando spazio ad infinite possibilità di progettazione. E chiaro quindi, come questo tipo di ricerca, si collochi in un ambito di primaria importanza per la creazione di applicazioni web sempre più potenti e solide. 2. Le prime vie intraprese per l integrazione Prima di iniziare a parlare in maniera dettagliata del progetto e della sua fase d implementazione, c è da dire che la fase che in assoluto ha richiesto più tempo è stata quella introduttiva di ricerca, che ha avuto il fine di trovare il framework Ajax specifico, che ottimizzasse la risoluzione del problema nelle parti di fondamentale importanza del progetto. Questa parte ha richiesto particolare tempo e lavoro poiché, attualmente, i framework utilizzabili per sviluppare applicazioni web con Ajax sono davvero molti ( è meglio evitare un inutile e ridondante elenco ), e tutti fondamentalmente validi e funzionali.

Integrazione della piattaforma Ajax in un sistema web multi-agente realizzato col framework applicativo Spring 3 Così, prima di trovare il framework che facesse al caso nostro sono state dovute provare numerose vie, che poi si sono rivelate non molto indicate alla nostra situazione. La prima idea che è stata presa in considerazione, è stata quella ovvia di provare a vedere se Spring non offrisse già di per sé una sorta di primitiva possibilità di integrazione con Ajax. In effetti questa possibilità è presente, infatti con il rilascio di Spring Web Flow ( SWF ) 1.0 RC3 ( Release Candidate 3 ), è stata prevista una possibile integrazione con Ajax corredata anche da un esempio applicativo. Purtroppo questo non è sufficiente per il nostro use-case, essendo quest ultimo un sistema web multi-agente che utilizza Spring Framework 1.2.8. Quindi, il passaggio a SWF, avrebbe voluto dire cambiare l impostazione globale del sistema, e quindi bypassare i requisiti del progetto. Dopo questo primo tentativo, la successiva idea affrontata, è stata quella di trovare, dopo ricerche puntuali, quale fosse il framework Ajax più usato e famoso in rete, e successivamente provare ad usarlo per i nostri fini: eccoci quindi approdati a Dojo. Dojo mette a disposizione una serie di componenti che rendono i siti più utilizzabili, interattivi e funzionali. Dojo è in assoluto uno dei framework più utilizzati per Ajax, e velocizza il tempo di sviluppo di pagine dinamiche lato client. Anche in questo caso però, dopo un attenta fase di testing, si è osservato che se pur ottimo a livello di funzionalità, Dojo non possedeva espressamente quelle caratteristiche che si stavano cercando. In particolare, si sono trovate difficoltà nell implementare l invio asincrono di oggetti remoti, come possono essere i Beans di Spring. Non è escluso che una soluzione plausibile al problema potesse essere trovata, però sicuramente avrebbe richiesto maggiore quantità di lavoro e di codice da scrivere. Allora, dopo ancora svariate ricerche sulla rete, sono stati presi in considerazione gli strumenti di TIBCO, in particolare TIBCO General Interface ( GI ). TIBCO General Interface è un framework di sviluppo avanzato basato su Ajax e RIA ( Rich Internet Application ), ed integra il supporto per componenti Ajax e di terze parti commerciali. TIBCO General Interface, in pratica, è un affidabile soluzione di sviluppo grafico Ajax che offre oltre 90 controlli a interfaccia grafica (GUI) preconfigurati, nonché funzionalità di comunicazione, dati, servizi eventi publish and

4 Integrazione della piattaforma Ajax in un sistema web multi-agente realizzato col framework applicativo Spring subscribe, registrazione, debug e altro basati su Ajax. Sulla guida ufficiale TIBCO, è stato trovata la spiegazione passo-passo, di come effettuare una possibile integrazione tra Spring e Ajax usando GI. Di per sé i passaggi da effettuare non erano di particolare difficoltà, però comunque vi erano da apportare alcune piccole modifiche al sistema Spring. Questa motivazione, aggiunta al fatto che GI non è uno strumento Open Source, hanno portato ad abbandonare anche questa strada. Ma dopo questi vari tentativi infruttuosi, eccoci finalmente arrivati a trovare, quello che sicuramente si è rivelato lo strumento migliore che si potesse scegliere per lo scopo di questo progetto: DWR, Direct Web Remoting. 3. DWR: Ajax e Spring made easy DWR è un framework che serve per utilizzare Ajax e l oggetto XMLHttpRequest, in maniera facile e diretta. Esso semplifica le chiamate JavaScript, a codice residente lato server, permettendo inoltre, tramite un appropriata configurazione XML, di trasformare classi Java remote lato server, in oggetti JavaScript accessibili liberamente lato client. Chiaramente questa funzionalità si è rivelata di grandissimo interesse per il tipo di applicazione che si stava sviluppando, in quanto permette un integrazione praticamente perfetta con Spring e i suoi Beans.

Integrazione della piattaforma Ajax in un sistema web multi-agente realizzato col framework applicativo Spring 5 Nella figura sopra, è spiegato graficamente, il modo in cui opera, a livello web, DWR, in particolare nella sua interazione web-server/browser. 4. Come effettuare l integrazione tramite DWR Una volta scelto definitivamente di usare DWR come strumento di integrazione Ajax- Spring, i passi che è stato necessario fare per rendere compatibile il sistema per questo tipo di operazione, sono stati relativamente pochi e semplici. Eccoli elencati passo-passo, così da renderli maggiormente chiari e conseguenti. Per prima cosa occorre dichiarare la servlet DWR nel file web.xml del sistema Spring: <servlet> <servlet-name>dwr</servlet-name> <servletclass>org.directwebremoting.servlet.dwrservlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> Da notare che è stato impostato come valore di default a true il parametro di debug. Questo fa si che una volta avviato il nostro server locale ( nel nostro caso Apache Tomcat ) per fare il testing applicativo, è sufficiente andare nella cartella http://localhost:8080/nomeapplicazione/dwr/, per vedere le classi che al momento sono state impostate dall utente per essere usate col Direct Web Remoting. Questo sarà più chiaro più avanti quanto verranno date le indicazioni su come aggiungere nuove classi al dominio delle soluzioni di DWR. Sempre in web.xml, è stato necessario settare un Listener, che specificasse il file di configurazione XML, in cui fosse possibile trovare la definizione delle le classi remote di Spring ( Beans ). Nel nostro use-case di progetto ( AgentTrip: TRavel Information Portal ), il file specifico era quello di sotto riportato: <context-param> <param-name>contextconfiglocation</param-name> <param-value>/web-inf/agenttrip-servlet.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.contextloaderlistener </listener-class> </listener>

6 Integrazione della piattaforma Ajax in un sistema web multi-agente realizzato col framework applicativo Spring Seconda operazione importante da fare, è stato creare nella cartella /WEB-INF, il file dwr.xml. Esso contiene sia i creatori per le classi che si vuole far gestire a DWR, sia eventuali convertitori, per queste o altre eventuali classi di sostegno. Nel progetto usato come esempio applicativo, il file dwr.xml è stato così costruito: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd"> <dwr> <allow> <create creator="new" javascript="javadate"> <param name="class" value="java.util.date"/> </create> <create creator="new" javascript="userprofilemanager"> <param name="class" value="....userprofilemanager"/> </create> <create creator="spring" javascript="planningtrip"> <param name="beanname" value="planningtripformcontroller"/> </create> <convert converter="bean" match="....planningtripformcontroller"> <convert converter="bean" match="....user"/> <convert converter="bean" match="jade.core.aid"/> </allow> </dwr> Come si può vedere dal codice evidenziato, per il nostro progetto è stata usata la nuova release 2.0 di DWR, che presenta notevoli funzionalità in più rispetto alla 1.0. Sono inoltre messi in evidenza, due tipi di creator, di fondamentale importanza; il primo che crea in automatico un codice JavaScript ( javascript="nomefile" ) eseguibile lato client, a partire da una normalissima classe Java; il secondo che esegue la stessa operazione, a partire però da una classe remota di Spring. E inutile spiegare le potenzialità di quest ultima operazione, a prima vista così semplice e banale. Il converter invece è usato per quelle classi remote, che, nella fase di debug, vengono contrassegnate come necessarie di conversione per un corretto uso con DWR e i file JavaScript da esso automatizzati. Una volta effettuate queste operazioni, per usare metodi di classi remote precedentemente definiti nei file di configurazione, non si dovranno fare altre operazioni complicate, bensì basterà includere i file.js creati da DWR nei template.jsp, e accedervi normalmente come a qualsiasi metodo usato in classi e file.java. Per esempio, nel nostro caso progettuale, nel file login.jsp, sono state aggiunte nell intestazione queste semplici righe di codice:

Integrazione della piattaforma Ajax in un sistema web multi-agente realizzato col framework applicativo Spring 7 <script src='dwr/interface/userprofilemanager.js'></script> <script src='dwr/interface/javadate.js'></script> <script src='dwr/engine.js'></script> <script src='dwr/util.js'></script> I primi due script inclusi sono quelli creati in automatico da DWR; gli altri due sono delle utility che servono al corretto funzionamento del sistema. Per accedere ai metodi, sempre nel file.jsp sopra indicato, è stata scelta questa semplice via: <input class='ibutton' type='button' onclick='userprofilemanager.getuserames(reply2);' value='who?' title='who is an user of AgentTrip?'/> <script type='text/javascript'> var reply2 = function(data) { if (data!= null && typeof data == 'object') alert(dwrutil.todescriptivestring(data, 2)); else DWRUtil.setValue('d2', DWRUtil.toDescriptiveString(data, 1)); } </script> <span id='d2' class='reply'></span> In questo pezzo di codice di esempio, viene eseguito l accesso al metodo evidenziato, ed il risultato ritornato dalla funzione, viene visualizzato con un messaggio di alert. Naturalmente è anche possibile visualizzare i risultati come messaggi di testo, nonché eseguire esclusivamente un metodo, evitando di scrivere gran parte delle righe di codice qui sopra, e lasciando solo quelle riguardanti il tipo di script usato, e l accesso al metodo remoto. 5. Conclusioni Nella relazione, non è stato precisato che gran parte dei test effettuati su DWR, è stato fatto con l uso di oggetti Java, in taluni casi anche piuttosto complessi, che venivano semplificati notevolmente nel loro utilizzo grazie ai finissimi automatismi di DWR. Inoltre molti oggetti Java tradizionali, come le Liste e gli Array per esempio, presentano delle visualizzazioni di default ottimamente già implementate, che tra l altro sono state usate anche in alcune parti di questo progetto. Un altra funzionalità molto importante di DWR, che è stata osservata attraverso lo studio effettuato, è che questo framework è in grado di passare in maniera del tutto nascosta ed automatica, la sessione Http in corso, ai metodi remoti delle classi Java. Nella pagina.jsp non sarà necessario fare altro che invocare il metodo Java che

8 Integrazione della piattaforma Ajax in un sistema web multi-agente realizzato col framework applicativo Spring necessita tra i suoi argomenti della HttpSession, e DWR penserà da solo a far si che a tale metodo arrivi la giusta sessione e che possa essere utilizzata senza problemi. Concludendo, dopo quello che è stato possibile fare usando gli strumenti forniti in abbondanza da DWR, di sicuro si può dire che questo framework presenta potenzialità molto importati ed utili per sviluppare applicazioni web sempre più sicure, affidabili e veloci. 6. Bibliografia e riferimenti Ecco, per eventuali chiarimenti o desideri di maggiori informazioni specifiche, i riferimenti al materiale che è stato utilizzato per la realizzazione intera di questo progetto: http://it.wikipedia.org/wiki/ajax; http://www.javaworld.com/javaworld/jw-06-2005/jw-0620-dwr_p.html; http://ajaxian.com/archives/spring-web-flow-10-released-with-ajaxintegration; http://java.sun.com/developer/technicalarticles/j2ee/ajax/; http://bram.jteam.nl/?p=2; http://www.gridshore.nl/blog/index.php?/archives/29-doing-ajax-withajaxtags-and-springframework.html; http://www-128.ibm.com/developerworks/java/library/j-ajaxportlet/?ca=dgrjw22dwr4ajax; http://www.theserverside.com/tt/articles/article.tss?l=ajaxandspring; http://getahead.ltd.uk; http://getahead.ltd.uk/dwr/getstarted; http://getahead.ltd.uk/dwr/server/spring.