Archive for the ‘j2ee’ Category

Programmazione web con Groovy

febbraio 8, 2007

In questi giorni mi sto attivamente interessando a Groovy per lo sviluppo di applicazioni anche di una certa complessità e magari anche web.

Ho trovato questi tre progetti interessanti che vi segnalo:

(more…)

Annunci

Un consiglio tabellare :)

febbraio 2, 2007

Gironzolando sul web ho trovato questa ottima taglib denominata DisplayTag, il cui scopo è quello di creare una tabella a partire da un insieme di bean inseriti all’interno di un oggetto che eredita da Collection. Sono possibili diverse opzioni come definire le tabelle da visualizzare, il formato del valore della colonna, definire se una colonna è ordinabile, l’esportazione automatica in XML, Excel, PDF, RTF e CSV, la paginazione etc…

Trovata ed usata questa libreria mi è venuto in mente un sito che contiene una collezione di CSS da utilizzare con tabelle. Quindi utilizzando la taglib per il disegno della tabella in un modo “standard” posso scaricare un qualsiasi foglio di stile dal sito detto in precedenza, associarlo alla mia pagina e ottenere senza fatica diversi effetti interessanti.

Pushlet: Un modo semplice per un semplice server push

novembre 20, 2006

Chi sta seguendo da vicino l’evoluzione che è nata intorno al web da quando è stato introdotto AJAX avrà forse sentito parlare di COMET. Questa tecnologia è basata sull’HTTP Streaming, metodologia utilizzata solitamente dai plugin multimediale per l’invio in streaming di contenuti audio video. A differenza di una semplice richiesta HTTP la connessione non viene aperta e chiusa ogni volta che avviene, ma viene semplicemente aperta una prima volta per poi essere lasciata sempre aperta in modo da permettere un transito continuo di dati senza dover fare nuove richiesta, in parole povere: ad una sola richiesta corrispondono molteplici risposte. Se per esempio abbiamo un lettore di RSS che si aggiorna in automatico la soluzione che applicheremo solitamente è quella di leggere l’RSS ad intervalli di tempo regolari e controlleremo se è cambiato rispetto alla versione precedente. Questo approccio comporterà molte richieste e risposte inutili con un notevole dispendio di risorse. Non sarebbe meglio se fosse la nostra risorsa risorsa ad avvertire la nostra applicazione quando viene modificata e quindi quando effettivamente deve avvenire l’aggiornamento? Se la vostra risposta è SI allora continuate a leggere l’articolo, se invece avete risposto NO potete anche fermarvi qui.
Vedo che avete scelto SI, quindi torniamo a noi: quanto detto prima è possibile grazie al server push e le Pushlet inventate da un ingegnere olandese sono una semplice soluzione al nostro problema. Altra soluzione molto interessante, ma commercial è data anche da un server push creato da una ditta italiano, ma utilizzato in tutto il mondo, il suo nome è Lightstreamer.

La particolarità delle Pushlet è quella di fare un grosso utilizzo della tecnologia DHTML e AJAX, rendendo praticamente inutile la scrittura di codice java.

Una piccola parentesi sull’installazione:
Per prima cosa è necessario scaricare il progetto da SourceForge. Fatto questo creiamo una semplice web application e copiamo le seguenti definizioni all’interno del file web.xml:

<!– Define the pushlet servlet –>
<servlet>
<servlet-name>pushlet</servlet-name>
<servlet-class>nl.justobjects.pushlet.servlet.Pushlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!– Define the Servlet Mappings. –>
<!– The pushlet –>
<servlet-mapping>
<servlet-name>pushlet</servlet-name>
<url-pattern>/pushlet.srv</url-pattern>
</servlet-mapping>

Fatto questo dobbiamo copiare all’interno della cartella contenente i nostri file sorgenti i due file di configurazione con estensione properties che si trovano nella cartella “pushlet-2.0.2\webapps\pushlet\WEB-INF\classes”. Questi file in fase di deploy andranno messi dentro la cartella “WEB-INF\classes” della nostra web application. Come ultimo passo dobbiamo copiare la libreria pushlet.jar presente nella cartella “pushlet-2.0.2\lib” nella cartella WEB-INF\lib della nostra web application. Svolte queste semplici operazioni preliminari siamo finalmente pronti a scrivere un po’ di codice!

Dalla teoria alla pratica:
Tralascio i dettagli tecnici riguardo il loro funzionamento e passo direttamente a una spiegazione molto pratica.

Il loro funzionamento si basa su un semplice principio:

“Io ho un messaggio che può essere modificato e quando questo viene modificato io devo avvertire tutte le risorse che ne sono in attesa”

Quindi il primo passo è definire un nome da dare a questo messaggio, nel nostro esempio sarà “/test”. Scelto il nome definiamo i campi che questo deve contenere, nel nostro caso conterrà solo “text”, ma può contenerere quanti messaggi vogliamo (o almeno quanti ne riusciamo a fare entrare in un array javascript). Nel nostro esempio il campo “text” conterrà la stringa presente in un campo di testo. L’invio della stringa avverrà alla pressione del tasto invia.

Scriviamo quindi la seguente pagina html e salviamola con nome server.html:

<html>
<head>
<script type="text/javascript" src="lib/ajax-pushlet-client.js"></script>
<SCRIPT type="text/javascript">
function send(msg){
p_publish('/test', 'text', msg);
}
</SCRIPT>
</head>
<body onload="p_join('/test');">
<INPUT type="text" id="textField" value="test"/>
<INPUT type="button" onclick="send(document.getElementById('textField').value);" id="invia" value="invia" />
</body>
</html>

Creaiamo ora il file client.html con il seguente codice al suo interno:
<html>
<head>
<script type="text/javascript" src="lib/ajax-pushlet-client.js"></script>
<SCRIPT type="text/javascript">
function onData(event) {
var text = event.get('text');
document.getElementById("textField").value = text;
}
</SCRIPT>
</head>
<body onload="p_join_listen('/test');">
<INPUT type="text" id="textField" />
</body>
</html>

Creati i due file copiamoli dentro la cartella root del nostro progetto, e colleghiamoci a http://localhost:XXXX/nomeProgetto/server.html e http://localhost:XXXX/nomeProgetto/client.html.

Scrivendo un testo all’interno di serverl.html e premento il tasto “invia” la textbox presente in client.html verrà “magicamente” aggiornata.

Conclusioni:
Le pushlet sono ancora in evoluzione e ad oggi presentano ancora qualche piccolo difetto, ma il suo realizzatore insieme alla comunità OpenSource sta lavorando assiduamente per realizzare un sistema sempre più affidabile.
Attualmente questo sistema è in utilizzo presso diverse applicazioni commerciali citate dallo stesso autore sul sito del progetto. Inoltre sul sito del progetto e nell’archivio che avete scaricato trovate molti esempi da studiare.

Spero di aver stuzzicato la vostra curiosità su questo argomento senza dubbio molto interessante e di cui, a mio parere, sentiremo parlare nel tempo che verrà.

Chi desidera scaricare l’esempio qui descritto può cliccare qui.

Grazie per l’attenzione.