[DWR] Direct Web Remoting: Easy AJAX for Java

DWR (Direct Web Remoting) è una libreria Java open-source (Apache Software License v2) che permette a Java (lato back-end) e JavaScript (lato front-end) di interagire e chiamarsi a vicenda nel modo più semplice possibile.
DWR si integra con Spring, Struts, Hibernate e altri framework.

 

Ecco lo slogan di DWR: “DWR is Easy Ajax for Java“.

Ecco il sito ufficiale di DWR: http://directwebremoting.org

Cosa fa DWR? DWR permette di generare codice JavaScript che permetta ai web browser di chiamare in sicurezza codice Java come se venisse eseguito localmente. Effettua una operazione di marshalling virtuale che include collections, POJOs, XML e binary data (come immagini e file PDF).
Mette a disposizione anche una funzionalità di Reverse Ajax, che permette a codice Java in esecuzione sul server di utilizzare/richiamare API lato client per pubblicare aggiornamenti su determinati gruppi di browser.

Questo tipo di interazione è, dunque, bidirezionale – browser che chiama il server e server che chiama il browser.
DWR supporta Comet, Polling e PiggyBack (spedendo i dati in una normale request) come modalità per la notifica da server a browser.

Come funziona? Il meccanismo di interazione bidirezionale avviene tramite chiamate RPC (Remote Procedure Call).
Nella seguente figura, viene mostrato un primo diagramma che rappresenta come DWR altera il contenuto di una select HTML con il risultato di un evento JavaScript (il client chiama il server per farsi restituire i risultati):


Il Reverse Ajax di DWR (disponibile dalla versione 2.0) permette a codice Java in esecuzione sul server di intercettare quali client stanno visualizzando determinate pagine, in modo da inviare loro (tramite JavaScript) dei risultati (meccanismo di comunicazione inverso – da server a client):


DWR è composto da due parti principali:

  • una servlet Java in esecuzione sul server che processa le richieste e manda le risposte indietro al browser
  • JavaScript in esecuzione sul browser che manda le richieste e può dinamicamente aggiornare il contenuto della pagina

DWR genera dinamicamente codice JavaScript da classi Java ed effettua il marshalling dei dati scambiati in modo bidirezionale, eseguendo il tutto lato server.
Il metodo di remoting functions (Reverse Ajax) da Java a JavaScript fornisce un meccanismo RPC molto simile a RMI o SOAP, con il vantaggio che l’esecuzione avviene su un browser senza necessità di plugin addizionali.

Download di DWR: http://directwebremoting.org/dwr/downloads/index.html

Installazione di DWR: http://directwebremoting.org/dwr/introduction/getting-started.html#fiveSteps

Continua la lettura