Ajax con Java Fácil

2
50488

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:


 dwr-invoker
 DWR Servlet
 org.directwebremoting.servlet.DwrServlet
 
 debug
 true
 



 dwr-invoker
 /dwr/*

  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:

  • toString( );
    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

    DEJA UNA RESPUESTA

    Por favor ingrese su comentario!

    He leído y acepto la política de privacidad

    Por favor ingrese su nombre aquí

    Información básica acerca de la protección de datos

    • Responsable:
    • Finalidad:
    • Legitimación:
    • Destinatarios:
    • Derechos:
    • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad