Blog

11/02/2008
Siddharta Navarro

De nuevo he tenido que liarme en un desarrollo relacionado con XmlBeans, y de nuevo he encontrado esos pequeños problemas que no explican en ningún manual, pero que te encuentras a menudo. Así que como en el anterior artículo voy a seguir comentando estos problemas que seguro que os pueden ayudar en el desarrollo de proyectos con XmlBeans.

1. Como manejar tags xs:any en XmlBeans

Cuando compilamos un XSD con XmlBeans, este nos genera una serie de clases con funciones de acceso a los diferentes nodos (gets y sets) definidos en el esquema. Pero, qué pasa si compilamos un esquema que incluye la particula xs:any ? Como podréis comprobar xmlBeans no nos genera una funcion getAny o setAny.

Para acceder y manejar estos nodos la API de XmlBeans incluye las siguientes alternativas:

29/01/2008
Luis Ortiz

Tras publicar dos artículos sobre el tema y dado el interés que despierta esta tecnología en la comunidad, hemos decidido realizar un tutorial exhaustivo que examine las posibilidades de JSON-RPC-Java con las explicaciones, snippets y ejemplos para que podáis incorporarla a vuestros proyectos.

JSON-RPC-Java es una tecnología que permite realizar comunicaciones Ajax entre el cliente y el servidor J2EE, hacer llamadas a funciones de clases Java desde JavaScript, con capacidad para serializar objetos Java y convertirlos en objetos JavaScript y todo ello, de forma transparente al programador.

Funcionamiento básico

Para comprender el funcionamiento de JSON-RPC-Java se debe comprender tanto el funcionamiento de la parte de servidor como del cliente JavaScript.

Desde el punto de vista del servidor Java lo primero es desarrollar las clases que serán accesibles desde el cliente. Para hacer públicos sus métodos y funciones debemos registrar una instancia de nuestra clase en un objeto JSONRPCBridge que previamente habremos creado y guardado en la sesión HTTP. Este objeto es el encargado, junto a un Servlet que más adelante aprenderemos a instalar, de comunicar a JavaScript la estructura de nuestras clases y de gestionar la comunicación entre ambas partes.

11/01/2008
Siddharta Navarro

Lo primero de todos es felicitar a todos aquellos que nos visiten. Les deseo un feliz año nuevo y espero que hayan pasado unas buenas fiestas. Nosotros hemos estado bastante desconectados del blog porque navidad no es un buen momento para escribir entradas, mas que nada porque la familia se puede enfadar bastante si te encuentra delante del ordenador el día de Navidad.

Por otro lado los Reyes Magos me han traído una multa de tráfico (debe ser que no me he portado muy bien). Hoy me he decidido a pagarla, si no quería tener que pagar doble dentro de 15 días. He entrado en la web señalada por la multa para los pagos por Internet (www.bcn.cat/hisenda) y después he clickado en la sección "multas" (http://bcn.cat/hisenda/es/principals_multes.html). Como habéis podido comprobar, la web es del Ayuntamiento de Barcelona. Pues bien, la página no se ha abierto. De echo todavía esta cargando...

08/01/2008
Luis Ortiz

La ley de Demeter que explicamos en un articulo anterior puede resultar compleja de utilizar, pues genera gran número de funciones que solo tratan de comunicar unos objetos con otros.

Existen en consecuencia algunas excepciones que mejoran este aspecto, algunas situaciones en que es mejor no utilizar dicha ley.

Leyendo esta interesante discusión podemos extraer tres excepciones básicas:

  • Las colecciones de objetos (Listas, colas, mapas, tablas, arrays, etc.).
  • Los objetos de valores (los ValueObjects).
  • Los métodos factoría.

Y basándonos en nuestra experiencia personal nos atrevemos a añadir una cuarta, aunque resulte una obviedad: la interacción con librerías de terceros. Puede pasar que uno llegue a confundir lo bueno con lo mejor y nos encontremos escribiendo interminables wrappers de objetos de otras librerías para no incumplir la ley de Demeter.

Posts relacionados:

07/01/2008
Luis Ortiz

180px-Demeter_MKL1888.pngLa ley de Demeter es un principio básico de la programación orientada a objetos. Sorprende al conocerlo su gran utilidad, sus resultados en proyectos de todos los tamaños y el poco conocimiento que la comunidad de desarrolladores tiene de su existencia.

Su enunciado básico es:

A method of an object should invoke only the methods of the following kinds of objects:

  1. itself
  2. its parameters
  3. any objects it creates/instantiates
  4. its direct component objects

Mejora de forma considerable la encapsulación y la cambiabilidad de nuestro código. Explicaremos en este artículo cual es su significado y como detectar los lugares en nuestro código donde no se cumple.

Una forma de comprender mejor esta ley podemos dar la vuelta al enunciado y enumerar los casos prohibidos: no se debe llamar a métodos de los objetos devueltos por otros métodos.

El caso más común que debemos evitar son las cadenas de métodos, de la forma:

a.getX().getY().getValue();

y sustituirlas por funciones que realicen dicha acción:

a.getXYValue();

17/12/2007
Luis Ortiz

json160.gifJSON-RPC-Java permite, como comentamos en el post anterior, la comunicación transparente entre el código JavaScript y Java.

Otra de las características que hacen tremendamente interesante a esta tecnología es el tratamiento que hace a los objetos devueltos. Esta librería es capaz de serializar los objetos Java y de deserializarlos como objetos JavaScript. Así ahorramos el tiempo necesario para determinar el formato de la información a enviar, siendo innecesario definir esquemas para nuestros XML o JSON como hacíamos sin JSON-RPC-Java.

Devolviendo Beans

Un Bean (o JavaBean) es un objeto Java que cumple las siguientes características:

  • Implementa un constructor sin parámetros.
  • Sus atributos son accesibles vía getters y setters.
  • Implementa la interfaz Serializable.

Podéis encontrar más información en la Web de esta tecnología.

Con JSON-RPC-Java, si una función de un objeto registrado devuelve un Bean este se serializa y se envia. De tal forma que podremos acceder a el como si se tratara de un objeto JavaScript.

Por ejemplo, un objeto de la siguiente clase:

public class Ejemplo implements Serializable {

14/12/2007
Luis Ortiz

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:

08/12/2007
Siddharta Navarro

Estas dos ultimas semanas he estado trabajando con XmlBeans. Para aquellos que no lo sepáis de lo que hablo, os pongo una pequeña definición de la página oficial de Apache:

XMLBeans is a technology for accessing XML by binding it to Java types. XMLBeans provides several ways to get at the XML

Apache xmlBeans logoMediante este proyecto se pretende facilitar el acceso a documentos XML desde Java proporcionando un sistema que genera a partir del schema XML las clases que representan las entidades XML así como una API para instanciar dichos objetos a partir del documento XML.

La verdad es que todas estas definiciones quedan muy bonitas, pero una vez nos ponemos el mono de trabajo van surgiendo los problemas. Dedicaré este post a explicar todas las piedras que he ido encontrando por el camino y creo que puede ser realmente útil para todos aquellos que quieran utilizar este sistema de mapeo en sus aplicaciones.

1. java.io.IOException al ejecutar "scomp":

05/12/2007
Luis Ortiz

Hemos modificado la dirección de nuestro RSS para que pase por FeedBurner, para así poder obtener mejores estadísticas sobre el acceso y el uso de nuestro boletín. La nueva dirección es:

http://feeds.feedburner.com/AteneaTechBlog

Actualizad vuestros lectores de feeds.

04/12/2007
Luis Ortiz

Google AnalyticsYa hace unos días que estamos en linea y desde el primero de ellos venimos utilizando una herramienta que ofrece nuestro proveedor de hosting para analizar el tráfico de nuestra Web. Nos permite saber el numero, la forma de acceso y el lugar del mismo de nuestros visitantes.

Queriendo saber más de vosotros nos acordamos de la, ya suficientemente blogeado por dos o tres, alternativa del todo poderoso Google: Analytics. Un espectáculo de fuegos artificiales, drag&drops y mapas de colores.

Tras superar el formulario de login sin problemas, como si entraras en el correo, solo es necesario dar cuatro datos sobre el dominio a seguir y copiar en cada una de nuestras páginas un sencillo código JavaScript:


Tras este simple paso, Google mantendrá un log sobre cada una de las páginas que contengan el código. Lo peor: los visitantes que no tengan activado JavaScript en su navegador o accedan usando otros dispositivos que no lo soporten no serán indexados.

Páginas

Contacto

¿Te interesan nuestros servicios?

Contáctanos