Archive for the ‘Java’ Subject

Database Refactoring usando Liquibase

Thursday, March 21st, 2013

A medida que desarrollamos una aplicación suele ser inevitable en algún punto hacer refactoring del código. A su vez también es necesario poder compartir esos cambios con otras personas, versionarlos, poder resolver conflictos entre distintas versiones, etc.
Para todo esto contamos con muchas herramientas que simplifican estas tareas y nos permiten concentrarnos en el desarrollo.

Pero que pasa con la base de datos? Muchas veces esos cambios impactan en la estructura de la base de datos, por ejemplo al agregar o quitar atributos a persistir. Estas modificaciones a la base de datos tienen que estar a su vez asociadas a una versión específica del código para que la aplicación funcione. Y ademas suele haber varias instancias de la base de datos (en distintos ambientes como desarrollo, test, producción, etc), en las cuales es necesario impactar los cambios al deployar una nueva versión del código.
Todo esto implica mucho trabajo manual de generar scripts con cambios incrementales, secuenciarlos, versionarlos y, al deployar la aplicación en un nuevo ambiente, analizar que versión de la base de datos esta instalada y cuales son los cambios que deberían impactarse en la misma.
Para simplificar esta problemática tenemos Liquibase.
(more…)

Uso típico de perfiles en maven para testing, packaging y deployment

Wednesday, September 26th, 2012

Maven permite crear diferentes perfiles para configurar o correr diferentes goals. El perfil nos va a permitir definir propiedades concretas para la construcción del proyecto en distintas situaciones. Por ejemplo, si estamos construyendo el proyecto para un entorno de producción, testing o desarrollo, o si queremos correr solo test unidad, de integración o funcional, etc.

 

(more…)

Automatizando deploys con Maven y Cargo

Tuesday, August 28th, 2012

Este plugin para maven nos permite realizar deploys automáticos, tanto locales, como remotos. A continuación se muestra la configuración ultilizada para realizar un deploy automático utilizando tomcat dentro de un perfil Maven, esto posibilita configurar diferentes deploys para diferentes ambientes (ej: testing, producción, UAT, etc).  Además, este plugin define diferentes hook como para automatizar tareas pre-deploy y post-deploy , este último es muy utilizado para automatizar test con selenium o jmeter ya que correrían despues de que el deploy se realizo con éxito.

(more…)

Aplicaciones RESTful con Apache CXF (Parte 2/2).

Thursday, May 24th, 2012

En la primera parte de este articulo vimos  que aparecían, pero no los describimos, una serie de anotaciones que indican el método HTTP utilizado. Sin embargo no entramos en detalle en el porqué del uso de los mismo o como usar la anotación adecuada.  Debido a que en esta parte tienen una participación más relevante, vamos a revisarlos un poco.

(more…)

Aplicaciones RESTful con Apache CXF (Parte 1/2).

Tuesday, May 15th, 2012

¿Cuántas veces encontramos la necesidad de exponer como servicios distintas funciones de nuestras aplicaciones?  O peor aún, ¿cuántas veces nos vemos en la necesidad de consumir este tipo de servicios?

Es en estas situaciones donde solemos hacer uso de los Web Services, y en particular SOAP y sus estándares asociados(WSDL, WS-Security, WS-Notification, etc), que aunque cumplen con su propósito suelen traer bajo el brazo una serie de inconvenientes que no se pueden obviar (complejidad extra – ya sea en los XML para la comunicación, como en los clientes-, perdida de performance, dificultad para debbugear, etc.) .  Muchos de ustedes, seguramente, habrán usado CXF para configurarlos, y aunque con eso es probable que se hayan evitado ciertas dificultades en la configuración, el resto de los aspectos “negativos” no desaparecen tan rápido.

Es por esto que en este post quiero mostrarles como utilizar CXF para exponer o consumir servicios sin agregar complejidad adicional utilizando servicios RESTful.

(more…)