Primeras impresiones sobre Jax RS 2.0.
Buenas noches de nuevo,
Como bien sabéis alguno, hace tiempo Oracle, con ánimo de contar con el apoyo de desarrolladores, inició el llamado "Adopt a JSR", que básicamente buscaba que, desarrolladores del mundo, se encargarán de probar, testear y leer documentación sobre las nuevas tecnologías que se estaban desarrollando.
JavaHispano se ofreció a echar una mano en esta materia, y tanto un servidor, como Rubén Eguiluz, nos dedicamos a investigar y trastear un poco con ello. Os contamos un poco el proceso que hemos conocido hasta ahora y hasta donde hemos llegado:
1) Básicamente, Oracle delega en una o varias personas el fomentar esta "metodología" (por llamarlo de alguna forma, que no conozco una palabra mejor).
2) Las personas encargadas de ello (en nuestro caso, Arun Gupta) contactan con posibles personas responsables de movimientos de desarollo (blogs, portales... etc).
3) Algunos portales, blogs, twitteros, etc, responden comentando que quieren participar.
4) Oracle entonces propone quedar para poder hablar y comentar el proceso personalmente (siempre viene mejor que alguien te transmite su empuje y entusiamo que leer cómo funciona, qué debes hacer, etc). Básicamente, el proceso de ayuda se basa en ir descargando las últimas versiones de Glassfish (no comerciales), dónde van incluyendo las funcionalidades de las últimas JSR que se encuentran en desarrollo para ir testeándolas. Además de esto, se genera documentación al respecto (javadoc) que también se va modificando. Para seguir el proceso y poder participar con el mismo, existen unas listas de distribución a las cuales se pueda enviar feedback, punto de vista, impresiones, bugs, etc. Las listas de distribución siguen una organización establecida por Oracle (desde usuarios hasta expertos, pasando por commites...).
En fin, este es un poco el proceso. La tecnología con la que colaboramos se llama Jax RS 2.0, y sus características son las siguientes:
- Un cliente rico que permite realizar las llamadas de todo tipo (get, post, put y delete) a los recursos correspondientes.
- La posibilidad de incluir marshall y unmarshalling de tipos de datos no primitivos (objetos). No olvidemos que en Rest estamos enviando información adjuntada a una petición Http y necesitamos enviar texto plano en la petición correspondiente, y posteriormente traducir esa información y desencapsularlo en el objeto correspondiente.
- La posibilidad de definir validadores en los atributos recibidos por las llamadas gestionadas por rest (por ejemplo, el campo id de un método de tipo get no puede ser nulo).
- La posibilidad de definir filtros anteriores y posteriores a las llamadas de los métodos, para fomentar, por ejemplo, la autenticación...
- La posibilidad de definir métodos que se ejecutarán antes del envío de la llamada y después del mismo, para fomentar logging, tracking, estadísticas, etc...
- Mayor posibilidad y creatividad en el campo de las Uris y la traducción realizada sobre las mismas...
Y posiblemente tengamos alguna característica más, más adelante os comentaremos.
Un cordial saludo,
Jaime.
Reader Comments (4)
Uso Apache CXF 2.7.3 como frontend de JAX-RS y la mayoría de esas funcionalidades son implementadas por este framework
Los puntos 1 y 2 por supuesto
Los puntos 4 y 5 usan unos objetos llamados interceptores , donde puede implementar desde logging hasta autenticación. Por supuesto, hay interceptores incluidos ya, como logging
El tema de los validadores me interesa porque no he visto nada en Apache CXF sobre este tema
Es bastante directo colocar un interceptor en CXF que valide los parámetros de entrada y/o los de salida con la librería que te interese. De hecho, yo lo hago con la JSR 303 de Bean Validation y va como un tiro.
Hasta donde yo he estudiado, la idea es integrar JSR 303 en Jax Rs 2.0.
Quieren implementar algo parecido a:
@GET
@Path("{id}")
public Person getPerson(
@PathParam("id")
@Pattern(regexp = "[0-9]+", message = "The id must be a valid number")
String id) {
return persons.get(id);
}
Pero de momento, está en desarrollo.
Más información (que seguro que mucho ya lo conocéis, por lo que veo en los comentarios que ofrecéis) en:
http://www.javaadvent.com/2012/12/jax-rs-bean-validation-error-message-internationalization.html
Un saludo chavales!
Hola, hace un tiempo probé RestEasy y también tiene todo.
Lo único de todo esto es la proliferación de annotations que la verdad mucho no me agrada.....