JSON-RPC-Java: Capa de abstracción para comunicaciones AJAX

Desde hace un tiempo, en diferentes proyectos, utilizamos esta librería, que simplifica enormemente el desarrollo de aplicaciones Web que hacen uso del archiconocido Ajax. Os explicaremos e este articulo como instalarlo y empezar a usarlo.

JSON-RPC-Java permite al programador JavaScript acceder de forma transparente a las funciones de servidor de una aplicación Web J2EE.

Para empezar a usar JSON-RPC-Java debemos definir cuales son las clases que deseamos que se puedan acceder desde JavaScript. Usaremos la siguiente, por ejemplo:

package com.ateneaTech.jsonrpcjava;


public class Ejemplo {

public String foo() {

return "Hola, foo!";

}

}

El siguiente paso es registrar esta clase. Solo es necesario registrar una clase una vez en cada sesión. Aunque existen formas de registrar clases desde un JSP, nosotros recomendamos, por claridad en el código, hacerlo en un servlet. Para ello utilizamos la clase JSONRPCBridge que nos permite registrar nuestra clase en el RPC. Mantendremos una instancia de JSONRPCBridge por cada sesión, con el código:

HttpSession session = request.getSession();
JSONRPCBridge json_bridge = null;
json_bridge = (JSONRPCBridge) session.getAttribute("JSONRPCBridge");
if(json_bridge == null) {

json_bridge = new JSONRPCBridge();
session.setAttribute("JSONRPCBridge", json_bridge);

}

Para registrar nuestra clase debemos añadir una sola linea al serlvet:

json_bridge.registerObject("ejemplo", new Ejemplo());

Para comunicar JavaScript con Java se utiliza un servlet que se debe registrar:


com.metaparadigm.jsonrpc.JSONRPCServlet
com.metaparadigm.jsonrpc.JSONRPCServlet



com.metaparadigm.jsonrpc.JSONRPCServlet
/JSON-RPC

Ya tenemos configurado nuestro servidor, vamos ahora a por el código de cliente, que es sumamente sencillo. Primero tenemos que enlazar el script a nuestra página:

En el código JavaScript se debe crear una instancia del objeto JSONRpcClient:
var jsonrpc = new JSONRpcClient("//JSON-RPC");
y llamar a una de las funciones definidas en las clases registradas de forma síncrona:

alert(jsonrpc.ejemplo.foo());

o de forma asíncrona:

jsonrpc.ejemplo.foo(function(result, exception) {

alert(result);

});

Como podéis ver hemos realizado una conexión AJAX y hemos interaccionado con una clase Java de forma transparente.

Otras las ventajas de este sistema és la serialización de objetos Java a objetos JavaScript. Si devolvemos un objeto Java podremos acceder como si se tratara de un objeto JavaScript a sus propiedades publicas.

La comunicación y el serialización se realizan a través de Json que permite ahorrar ancho de banda y tiempo para su lectura en cliente en contraposición a Java.

Nada más por ahora, si tenéis alguna pregunta no dudéis en comentar

Contacte

T'interessen els nostres serveis?

Contacta'ns