Smooks: Motor de Transformaciones

es un motor de transformaciones que permite de forma sencilla todo tipo de datos:

Permite estas transformaciones:

· Java Binding: de un DataSource cualquiera (CSV, EDI, XML, Java etc) a Java:

· Transformaciones: XML to XML, CSV to XML, EDI to XML, XML to EDI, XML to CSV, Java to XML, Java to EDI, Java to CSV, Java to Java, XML to Java, EDI to Java etc….

· Procesamiento de Mensajes: Split, Transform y Route

· Enriquecimiento de Mensajes: con datos de otros datasources

· Validación de Mensajes: en base a Reglas

· Persistencia de los Mensajes:

Como veis es el core de un ESB (transformación y ruteado de mensajes). De hecho forma parte de JBossESB, Mule también lo soporta.

La forma más sencillo de iniciarse es a través de su Guía de Usuario, o bien ver algún ejemplo.

Además dentro de las JBoss Tools está el Smooks Editor for Eclipse 3.5.

Herramientas imprescindibles> Rizone’s Power Tools

Esta aplicación permite optimizar la memoria, el registro y el estado del disco duro.

Es la primera herramienta que conozco de este tipo freeware y además es PORTABLE J

Podéis descargarla desde aquí

JAX-WS en 5 minutos

En un post anterior mostraba lo sencillo que era trabajar con CXF y cómo integrarlo con Spring tanto para publicar un Web Service como para crear un cliente.

En este post haremos más o menos lo mismo con JAX-WS. Para poder probarlo necesitamos un JDK 6.

1. Creamos el interfaz del EndPoint:

2. Creamos la implementación del endpoint:

3. Lo publicamos:

Hasta aquí diríamos que es, como poco, igual de sencillo…pasemos al cliente:

Hacemos

1. Generamos los stubs del cliente con:

2. Creamos la clase Cliente:

Aparte de otros muchos detalles con CXF no es necesario generar un cliente, se genera en tiempo de ejecución.

Podéis leer el artículo aquí y descargaros los fuentes del artículo aquí

Web Services con CXF

es mi framework/herramienta preferida para el desarrollo de Web Services.

Lo llevo usando desde cuando era XFire (antes usaba Glue que era aún mejor pero esa es otra historia).

Sus características principales son:

  • CXF es la versión 2 de Xfire, sobre la que ofrece numerosas mejoras y soluciones de bugs
  • Integración con Spring permitiendo la publicación de beans de Spring como Web Services

· CXF es JAX-WS compliant: se pueden definir WebServices vía anotacones

  • CXF es una implementación que ofrece alto rendimiento (en comparación con Axis).
  • Soporta los principales estándares WS: SOAP,WSDL, WS-Addressing, WS-Security,…
  • Permite que el binding se haga con JAXB, Castor, POJOS, Aegis,…
  • Soporta transporte sobre HTTP, JMS, XMPP, Servlet, Jabber, In-JVM,…
  • Facilidad de uso: API muy sencilla y embebida (arrancar servicio web standalone)
  • Clientes y Servidores con stubs dinámicos sin necesidad de crear proxies.
  • Integración J2EE, SCA, JBI
  • Generación de código en varios sentidos.

Si tuviera que destacar algo de CXF es su sencillez de uso (a años luz de Axis).

Podéis encontrar numerosos artículos sobre cómo usarlo en la propia web.

Para hacerse una idea basta con ver lo poquito que requiere para publicar como Web Service un Bean de Spring:

http://cxf.apache.org/docs/writing-a-service-with-spring.html

1) Defino el Servicio vía la anotación @WebService en el interfaces y la implementación (el interface es opcional):

2) Defino en el contexto de Spring el WebService, con su address, la clase que lo implementa…

3) Defino en el web.xml el Servlet de CXF que se encarga de los mapeos:

Y ahora lo mejor…nada de Stubs, Proxies,…el WSDL se genera en ejecución.

4) El cliente es aún más sencillo:

a. Defino el Bean en Spring con la URL del WebService:

b. Y lo invoco:

Qué? Alguno más con ganas de seguir con el java2wsdl de Axis 😀 😀

En este otro artículo se trata el soporte de WS-Security del que dispone CXF:

http://www.ibm.com/developerworks/java/library/j-jws13.html?ca=drs-

Patrones que odio: DTO

Al poco de llegar al mundo Java (bueno, no tan poco) me encontré con el patrón DTO (Data Transfer Object) o VO.

“Data transfer object (DTO), formerly known as value objects[citation needed] or VO, is a design pattern used to transfer data between software application subsystems. DTOs are often used in conjunction with data access objects to retrieve data from a database.”

Recuerdo que nunca creí que la supuesta ventaja que ofrecía (aislar el dominio de la presentación) fuese suficiente como para que duplicar clase tras clase…

…Recuerdo también las discusiones (con una cerveza eso sí) con otros compañeros que no osaban cuestionarse la Biblia de los J2EE Core Patterns.

Sin ánimo de discutir su utilidad (no lo haré sin una cerveza por delante) y la sobrecarga que acarrea al sistema (tengo datos que lo certifican :D) afortunadamente las aproximaciones ligeras al desarrollo (desde Grails a Spring ROO en el caso de Java) se lo han cuestionado también y han decidido transferir las mismas entidades hacia la capa de presentación.

Esta aproximación es ya ampliamente utilizada en el mundo Web tradicional, pero cuando hablamos de RIAs/clientes ricos (Flex, Swing, GWT,…) no es tan sencillo pasar esas mismas Entidades.

En un próximo post contaré como invocar a DAOs de Hibernate directamente desde Flex…sin toda esa capa absurda y sobrecargada que no hace falta para mantener tablas…

KISS

Ranking de Servidores Web Febrero 2010

El mayor tirón de febrero viene de mano del servidor Apache y de IIS (Internet Information Server) que reflejaron un crecimiento de 1.6 y 1.1 millones respectivamente frente a las pérdidas de 1.5 millones de hostnames de ngninx que le han hecho dejar la tercera posición en el ranking de servidores en favor de Google Web Server.

Según las últimas estadísticas obtenidas por NetCraft los servidores web más importantes son Apache, IIS, Google y nginx.

· Apache con 112,903,926 de sites y el 54.46% del mercado mundial.

· Microsoft IIS con 50,928,226 de sites y el 24.57 del mercado mundial.

· Google Web Server con 14,315,464 de sites y el 6.91% del mercado mundial.

· nginx con 13,978,719 de sites y el 6.74% del mercado mundial.

· lighttpd con 1.097.685 sites y el 0.53% del mercado mundial.

El componente Flex Data Visualization es ahora open source

Algo tarde para algunos pero siempre es de agradecer…

Adobe ha anunciado la disponibilidad del nuevo componente Data Visualization.

Este componente proporciona el Grid de datos Avanzado, el Grid de datos OLAP y las librerías para gráficas (charts).

Desde ahora, ya no será necesario contar con la licencia de Flex Builder Professional para hacer uso de ellos, ya que ahora es ya una parte más del open source kit de desarrollo de Flex.