Ajax con Java Fácil

2
47081

Ajax con Java Fácil

A primera vista,
Asynchronous
JavaScript and XML (Ajax) no nos dice mucho acerca de las ventajas de
usabilidad para el usuario y bastante poco de la
implementación
técnica. Sobre lo primero decir que con sólo
darnos un
paseo por cualquiera de las “Web 2.0” (GMail, Digg,
Blogger, etc.) veremos que esta tecnología es imprescindible
para alcanzar la experiencia de usuabilidad de esta nueva
generación
de aplicaciones. En cuanto a la implementación,
básicamente
tenemos componentes JavaScript en el navegador para interactuar con
el usuario y en el servidor para recibir, procesar y responder
solicitudes, que pueden implementarse en Java y actualmente contamos
con numerosas librerías o frameworks como Prototype, Dojo,
Yahoo UI (YUI) Toolkit o Google Web Toolkit.

Dado que existen numerosas
introducciones a esta tecnología (ver “Algunos
links
interesantes”) no vamos a extendernos mucho más en
la
descripción técnica de Ajax sino que nos
centraremos en
una implementación concreta: Direct Web Remoting (DWR).

Introducción a DWR

DWR es una
librería open source
para implementar rápidamente soluciones Ajax,
permitiéndonos
invocar objetos Java alojados en un servidor desde el JavaScript de
un navegador como si fueran objetos locales.

Esta librería
cuenta con dos
partes principales:

  • Javascritp
    ejecutándose en el navegador que envía
    solicitudes y recibe respuestas con las que actualiza el contenido de
    la página

  • Un servlet que procesa
    las solicitudes y genera respuestas

DWR genera
dinámicamente el
JavaScript que actuará como proxy de las clases Java. Este
código hará la “magia” para
que desde el
JavaScript del navegador se utilicen las clases Java del servidor
como si fueran objetos locales.

Java es fundamentalmente
síncrono
mientras que Ajax es asíncrono, así que cuando se
invoca un método remoto se debe proporcionar una
función
JavaScript de callback que será invocada cuando llegue la
respuesta. El siguiente diagrama muestra como DWR puede cambiar el
contenido de un combo como resultado de un evento (por ejemplo,
“onclick”).

En
este caso, DWR genera dinámicamente una versión
JavaScript de la clase Java AjaxService. Ésta es llamada por
la función eventHandler y DWR gestiona toda la
interacción
remota con el servidor incluyendo la conversión de tipos de
datos de los parámetros entre Java y JavaScript. Cuando
llega
la respuesta, se invoca la función callback populateList la
cual utiliza una utilidad de DWR para actualizar el contenido del
combo de la página web.

Descargar DWR

Desde http://getahead.org/dwr/download
podemos descargar la versión 2.0.1 del Jar de DWR.

Para cuando estemos
más
familiarizados con la librería, es una buena idea descargar
el
War con los ejemplos funcionales de su utilización ya que
aveces incluyen ejemplos de características aún
no
documentadas.

Finalmente, podemos
descargar el código
fuente con el que completar nuestro debuggeo o comprender en
profundidad la implementación.

Instalar y configurar el DWR

Esto es muy sencillo:

  1. Copiar la dwr.jar en el
    WEB-INF/lib de nuestra aplicación web.

  2. Editar el web.xml y
    añadir el siguiente servlet:

  1. Crear un dwr.xml en el
    WEB-INF que contenga una configuración similar a la
    siguiente pero con las clases que querramos exponer mediante DWR:

  1. Abrir un nuevo
    navegador con la URL http://localhost:8080/[YOUR-WEBAPP]/dwr/
    y automáticamente se mostrará una
    página con las clases seleccionadas en el paso 2.

  1. Seleccionándo
    la clase se mostrarán los métodos expuestos:

  1. Hay una serie de
    ejemplos desde los que se puede copiar el código
    directamente a nuestra JSP. Por ejemplo, para el método
    toString vemos el código de ejemplo:

  1. No debemos olvidar
    incluir en la cabecera de la JSP las referencias al JavaScript como se
    indica al comienzo de esta página.

Para aprender
más se puede
continuar revisando los ejemplos contenidos el War o ver la
documentación de DWR, en particular la sección
“Scripting Introduction” en
http://getahead.org/dwr/browser/intro.

Restricciones

Las clases que DWR puede
exponer deben
cumplir con las siguientes restricciones:

  • Contar con un
    constructor sin argumentos

  • No llamarse igual que
    palabras reservadas de JavaScript, en particular aquellas que no son
    reservadas en Java como por ejemplo delete.

  • No contener
    métodos sobrecargados ya que no siempre funcionan bien desde
    JavaScript

Algunos links interesantes

Conclusiones

El DWR es una excelente
librería
avalada por más de dos años de experiencia, una
comunidad muy activa y el apadrinamiento de TIBCO. Es notable la
facilidad de aprendizaje y uso aunque la documentación
aún
está en proceso de elaboración.

Cabe remarcar que se debe
prestar
atención a las restricciones indicadas y al cuidado que se
le
debe prestar a la seguridad en cuanto a que mediante esta
librería
estamos exponiendo componentes en servidor y puede abrir una brecha
de seguridad en nuesto sistema.

Finalmente, no dudes en solicitar nuestros servicios ya que en
Autentia tenemos mucha experiencia práctica en
innovación,
usabilidad e interfaces de usuario complejas.

Contacta con nosotros en www.autentia.com
.

2 Comentarios

Dejar respuesta

Please enter your comment!
Please enter your name here