Prueba de concepto de DWR (parte I)

He oido hablar muy bien de DWR (Direct Web Remoting) pero hasta ahora no he tenido un momento para probarlo.

DWR es una librería RPC para la realización de llamadas a métodos de clases Java desde funciones JavaScript de manera asíncrona (ajax)

y viceversa (Ajax inverso):

A continuación muestro los pasos que he seguido para realizar las prueba de concepto.

Creo un proyecto web (Dynamic Web Project) con Eclipse.

Descargo dwr.jar y lo añado a las librerías del proyecto junto al jar de Commons Logging requerido.

Dwr.jar contiene dos partes fundamentales. Un Servlet corriendo en el servidor que procesa las peticiones para devolver las respuestas al cliente y unos ficheros js que se encargan de realizar peticiones desde la parte cliente.

El Servlet se añade al proyecto como cualquier otro; insertando su definición y su correspondiente mapping en el fichero web.xml:

<servlet>
	<servlet-name>dwr-invoker</servlet-name>
	<display-name>DWR Servlet</display-name>
	<servlet-class>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-invoker</servlet-name>
	<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

Una vez definido el servlet hay que crear un fichero de configuración en el directorio WEB-INF y llamarlo dwr.xml:

<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
    "http://getahead.org/dwr/dwr20.dtd">

<dwr>
  <allow>
    <create creator="new" javascript="JDate">
      <param name="class" value="java.util.Date"/>
    </create>
  </allow>
</dwr>

Este fichero define que clases van a ser creadas y usadas remotamente desde JavaScript. Por ahora sólo he definido la clase java.util.Date y lo he hecho usando new como valor del atributo creator. Este valor indica que se creará una instancia de la clase usando este mismo operador. Aquí hay un listado con el resto de de los creators disponibles.

Ya tengo todo lo necesario para trabajar con DWR y para comprobar que no falta nada despliego* el proyecto en el servidor y hago una llamada al servlet [http://localhost:8080/PruebaDWR/dwr/] desde el navegador. Si todo va bien debería aparecer un listado con todas las clases visibles por DWR (las definidas en las propiedades) y, pinchando sobre cada una de ellas, un detalle de las mismas:

* Nota: Si usas Eclipse Ganymede hace poco publiqué una entrada de como desplegar una aplicación en Jetty

Posteriormente creo un html sencillo y en el head añado las referencias a los ficheros js indicadas en el detalle de la pantalla previamente mostrada.

<script type='text/javascript' src='/PruebaDWR/dwr/interface/JDate.js'></script>
<script type='text/javascript' src='/PruebaDWR/dwr/engine.js'></script>
<script type='text/javascript' src='/PruebaDWR/dwr/util.js'></script>

Por último, tan sólo queda realizar la llamada de forma remota a un método cualquiera de la clase Date. En este caso la hago al método toString que debería devolver la fecha y la hora actual del sistema:

    JDate.toString(function(data) {
  	    document.write(data); 
    });

Llamo al html desde el navegador y obtengo el resultado esperado Sun Aug 24 23:40:22 CEST 2008.

—-

Esto es todo por hoy… en la parte 2 de esta introducción, que publicaré presumiblemente mañana, mostraré como modificar el contenido de la parte cliente desde Java (Ajax inverso).

Buenas noches. Mañana será otro hermoso día 😉

0 Responses to “Prueba de concepto de DWR (parte I)”



  1. Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




Add to Technorati Favorites
Clicky Web Analytics Clicky

Flickr Photos

Aljibe

luz

C1

C1

Más fotos

A %d blogueros les gusta esto: