Testing con JUnit 4

junit

El testing automatizado suele ser uno de los grandes olvidados en el proceso de desarrollo de software y la primera “víctima” de las desviaciones de presupuestos y plazos de entrega. Sin embargo es parte fundamental del proceso de creación de software, incluso existe una metodología (TDD) en la que el desarrollo se hace en base a los tests que debe verificar el software y no al revés, esto es, primero se diseñan los tests y luego la aplicación que los verifica.

Seguir leyendo

Perfiles en Maven

maven

Durante el desarrollo de aplicaciones que van a ser utilizadas en distintos entornos (desarrollo, testing, producción, etc) solemos encontrarnos con el problema de adaptar la aplicación a cada uno de dichos entornos. Esto sucede habitualmente con los ficheros de configuración, por ejemplo los parámetros utilizados para la conexión a la base de datos, pero también es posible que necesitemos incluir librerías distintas en función de la versión de Java o incluso el sistema operativo que estamos utilizando.

Seguir leyendo

Servicios Web SOAP con JAX-WS, Spring y CXF (IV): Handlers

logo java

Es posible que en alguna ocasión nos veamos en la necesidad de realizar algún tipo de operación directamente con el mensaje SOAP que recibe y/o envía nuestro servicio web. Esta tarea puede realizarse con el mecanismo de Handlers (“manejadores”) definidos en la especificación JAX-WS y que permite “interceptar” las peticiones y respuestas SOAP en un método que implementamos. Este mecanismo puede ser aplicado tanto al servidor como a los clientes.

Existen dos tipos de handlers:

  • SOAP handler : Permite acceder a todo el mensaje SOAP completo, incluyendo los headers de la petición. Por este motivo también se denominan Protocol Handler
  • Logical handler: Sólo proporciona acceso al contenido (payload) del mensaje.

Seguir leyendo

Maven: aplicaciones ejecutables

logo java

Las aplicaciones web Java se empaquetan en ficheros war o ear y son desplegadas por un contenedor de servlets o servidor de aplicaciones JEE siguiendo siempre los estándares. En cambio, a la hora de empaquetar una aplicación de escritorio o consola tendremos que encontrar una estrategia que permita una fácil distribución y ejecución de estas aplicaciones. En este artículo veremos de forma muy práctica varias alternativas utilizando plugins de Maven.

Seguir leyendo

Tareas programadas en Spring

logo spring

Es posible que al desarrollar una aplicación la mejor solución para ciertas funcionalidades sea la implementación de tareas programables, esto es, métodos que se ejecuten periódicamente en momentos determinados o bien cada cierto periodo de tiempo. El caso más típico consiste en la revisión de la base de datos para la generación de informes de seguimiento, el envío de notificaciones, realizar tareas de sicronización con otros sistemas, etc. Asimismo, estas tareas suelen formar parte de la propia aplicación ya que así se pueden utilizar los servicios, capa DAO, etc de la misma.

En Java se suele utilizar Quartz, sin embargo si utilizamos Spring y la casuística es sencilla no tenemos que recurrir a ninguna librería de terceros ya que con Spring 3 es sencillo definir ejecuciones períódicas de un método de un bean y es precisamente lo que se verá de forma práctica en este artículo.

Seguir leyendo

Persistencia en BD con Spring Data JPA (I): Primeros pasos


VERSIONES

  1. 08/02/2014 (Primera publicación)
  2. 02/03/2014:
    • Añadido ejemplo de UPDATE
    • Actualización de librerias de Spring
  3. 01/11/2014:
    • Ampliación de la sección de consultas
    • Configuración de caché
    • División del artículo original en dos partes y creación de una tercera
    • Diagrama de clases

logo spring

Nota: Este tutorial es una continuación de Persistencia en BD con Spring: Integrando JPA, c3p0, Hibernate y EHCache. El objetivo es reutilizar el mismo proyecto de ejemplo e incluir Spring Data JPA.

Spring Data es el nombre de un módulo de Spring que a su vez engloba un gran número de sub-módulos cuyo objetivo es facilitar el acceso y explotación de datos en aplicaciones basadas en Spring, obteniéndose estos datos de fuentes tan dispares como servicios RestFUL, bases de datos relacionales a través de JPA, o bases de datos NoSQL como MongoDB o Neo4J, entre otras. Este artículo expondrá el uso básico del módulo para JPA utilizándose como implementación Hibernate y se divide en tres partes:

  1. Primeros pasos
  2. Repositorios personalizados
  3. Auditoría

Nota:A partir de la versión 1.7.0.RELEASE Spring Data JPA requiere Spring 4. En el artículo se utilizará Spring 3 y Spring Data JPA 1.6.4.RELEASE ya que Spring 3 se sigue utilizando ampliamente incluso en proyectos de nueva creación.

Seguir leyendo

Integrando Struts 2 y Spring IoC


VERSIONES

  1. 04/11/2013 (Primera publicación)
  2. 08/03/2014:
    • Añadida configuración de applicationContext en el web.xml
    • Pequeñas mejoras y correcciones varias

logo spring

Originalmente este artículo nació como un tip para la sección tips Struts 2, pero puesto que expone una integración de frameworks muy interesante y habitual he optado por tratarla con algo más de profundidad y darle más extensión de la que cabría esperar en un tip. Así pues, vamos a ver paso a paso lo fácil que es integrar el contenedor IoC de Spring con Struts 2 para poder inyectar beans en los Action e incluso definir los Actions como beans de Spring, ya sea a través de xml o mediante anotaciones.

Nota: no es necesario que los Actions sean definidos en Spring para poder inyectar las dependencias en ellos pero es la práctica habitual y lo que se mostrará en este artículo.

Entorno de pruebas:

Requisitos: Conocimientos básicos de Maven, Struts 2 y Spring IoC.

Seguir leyendo

JSON y Java\Android: Introducción a Gson

logo java

Gson es una pequeña librería open source creada por Google que permite convertir el contenido de objetos Java en su representación en formato JSON y viceversa, o lo que es lo mismo, serializar y deserializar objetos Java en cadenas JSON. Su principal virtud es que es muy sencilla de utilizar y además se puede emplear en aplicaciones Android por lo que es una buena opción a tener en cuenta si se tiene que trabajar con ficheros JSON de cierta complejidad que nos obligarían a escribir bastante código si se usara la API estándar y básica de JSON de bajo nivel.

Seguir leyendo