Java Platform
Maven java.lang.OutOfMemoryError
Trabajando con maven recientemente tuve problemas durante el proceso de construcción de mi aplicación y es que la compilación terminaba abruptamente especificando el siguiente error.
java.lang.OutOfMemoryError: Java heap space ...
WebLogic, Hibernate y el ClassNotFoundException org.hibernate.hql.ast.HqlToken
Recientemente he tenido que lidiar con el problema mencionado en el título de este artículo y que a continuación describiré, una aplicación Java web desarrollada utilizando Struts 2, Hibernate 3, Spring 3, desplegada en un contenedor de aplicación WebLogic 10 y el resultado es...
org.hibernate.QueryException: ClassNotFoundException: org.hibernate.hql.ast.HqlToken
Introducción a Maven
Es una herramienta de la Apache Software Foundation especializada en gestionar el ciclo de vida de proyectos de software, cuya filosofía es proporcionar un esquema consistente para la ejecución de las diversas fases de la construcción del software, desde la creación del proyecto en sí, hasta distribución del o los componentes producto del proyecto.
Dentro de la principales características que hacen de maven una potente herramienta para la gestión de proyectos de software se encuentran las siguientes.
Pruebas unitarias en Spring con JUnit
Generar pruebas unitarias de los componentes de nuestras aplicaciones es una tarea que puede llegar a ahorrarnos bastantes dolores de cabeza, a través de estas damos pasos adelante en el aseguramiento de la calidad del software que construimos. La evolución de los frameworks de pruebas modernos nos ha proporcionado la oportunidad de poder generar componentes de pruebas basados en anotaciones como en el caso de JUnit.
Integración de Spring MVC 3 y Tiles 2
Spring MVC es un framework ligero para desarrollo de aplicaciones web que implementa el patrón Modelo-Vista-Controlador. Con Spring MVC podemos generar controladores basados en POJO's a través de anotaciones como @Controller y @RequestMapping, podemos realizar mapeo de peticiones, resolución de vistas, gestión de internacionalización e incluso resolución de temas.
Maven. Instalar fuentes y javadocs en el repositorio
Cuando gestionamos nuestros proyectos de software con Maven tenemos la posibilidad de instalar en el repositorio no sólo la distribución binaria
mvn install
También podemos configurar el POM para instalar los fuentes y los javadocs del proyecto.
Configuración para agregar los fuentes
JPA y los numéricos autoincrementales de Oracle
Acerca de la creación de campos numéricos autoincrementales en Oracle hemos visto anteriormente diferentes opciones a través del manejo de secuencias y triggers. Ahora veremos como integrar esta solución con anotaciones JPA para definir nuestros objetos entidad.
Nuestra modelo de datos se define de la siguiente manera.
Spring MVC. Mapeo de peticiones.
Anteriormente hemos visto la forma básica para generar controladores basados en anotaciones, hoy revisaremos las opciones que tenemos para realizar el mapeo de peticiones hacia los métodos de nuestros controladores.
Establecer ruta base
Tenemos la posibilidad de establecer la ruta base de la peticiones que atenderá nuestro controlador al combinar el uso de la anotaciónorg.springframework.web.bind.annotation.RequestMapping a nivel clase y método de la siguiente manera.
Definir rangos para la versión de dependencias en Maven
Cuando trabajamos con Maven suele ocurrir que una o más de las dependencias que hemos definido cambia constantemente de versión y nos vemos en la necesidad de actualizar al mismo ritmo nuestro POM para tener la última versión. Esto no es realmente necesario ya que podemos definir las versiones de nuestras dependencias en base a rangos. A continuación una serie de ejemplo de cómo podemos definir dichos rangos.
Algunos comandos útiles de Maven
Actualmente IDEs como Netbeans y Eclipse tienen muy buena integración con maven, permiten la ejecución simplificada de comandos incluyendo argumentos y modificadores, es muy sencillo agregar dependencias y mover los repositorios, lo más recomendable es explotar este tipo de prestaciones de nuestros IDEs en pos de la productividad, sin embargo hay ocasiones en las cuales no contamos con este tipo de software y requerimos realizar tareas con maven, para este tipo de ocasiones, dejo algunos comando útiles.
