4 oct. 2011

Vaadin Spring Archetype made by me :D

Hace no mucho tiempo me puse a trabajar con Vaadin para ver como podía encajar en alguno de los proyectos que está desarrollando la compañía donde estoy trabajando ahora, comprobé que la arquitectura encajaba perfectamente con lo que estaba buscando para conseguir compatibilidad con diversos navegadores y sus distintas versiones, así que me puse manos a la obra y empecé con el típico tutorial rápido que tiene todo framework.


Tras realizar el tutorial comencé a incluir algo más de complejidad, por decir algo, de hsqldb para persistencia de datos pasé a mysql y posteriormente a Oracle XE, me basé en anotaciones JPA para realizar la persistencia de una manera transparente a la base de datos que se quisiera utilizar, posteriormente pensé en introducir Spring como framework de soporte para el "negocio" y ante la odisea que suponía el tener que andar con tanto jar por ahí suelto, decidí incluir Maven para gestionar las dependencias de manera eficiente, así que me puse a buscar y encontré que la gente de Vaadin tenía un arquetipo para crear proyectos con Maven, así que para que dar más vueltas, lo usé y generó un proyecto que contenía las dependencias necesarias para empezar a trabajar con Vaadin. Pero el problema vino cuando me puse a incluir las dependencias de Spring, que si spring-tx, spring-beans, spring-context, spring-aop, ... y entonces decidí realizar mi aporte a la comunidad.


El aporte es un arquetipo maven que genera un proyecto Vaadin con Spring y que he publicado en googlecode. Toda la información está disponible en la página del proyecto así que para que enrollarme más si puedo pasaros directamente el enlace para que juguéis con el... 


El enlace es http://code.google.com/p/vaadin-spring-archetype/ cualquier opinión para mejora o porque no termináis de ver como tira el arquetipo, será bienvenida.


Un saludo y a disfrutar

Uso de variables de Entorno con Spring


Hoy he tenido que pelearme con la configuración de Spring para poder desplegar una aplicación que ataca a una base de datos en diversos JBoss, con distintos esquemas de base de datos por usuario, así que he echado a volar mi imaginación y en lugar de utilizar diversos archivos de propiedades he decidido usar variables de entorno (que ya están definidas por requisitos de aplicación) esto aparentemente sencillo (al final lo era) se ha convertido en una odisea digna del propio Ulises, bueno no he tardado 20 años con dar con la solución, pero me ha costado un ratillo.

He empezado por lo sencillo (PropertyPlaceHolderConfigurer) y he pensado... "Pues si pongo el nombre de la vairiable de entorno... esto tiene que tirar si o si..." PUES NO!!! Navegando por los interneses he dado con varias páginas que me podían ayudar, pero nada, al final he hecho un "popurrí" y la cosa ha quedado tal que así:
  • Configuración del PropertyPlaceHolderConfigurer de spring:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
<property name="searchSystemEnvironment" value="true"/>
<property name="locations">
<list>
<value>classpath:application.properties</value>
<value>classpath:resources.properties</value>
</list>
</property>
</bean>
  • Configuración del DataSource
<bean id="dataSourceConfiguracion" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="oracle.jdbc.OracleDriver" />
<property name="jdbcUrl" value="${DB_URL}" />
<property name="minPoolSize" value="10" />
<property name="maxPoolSize" value="100" />
<property name="initialPoolSize" value="10" />
<property name="idleConnectionTestPeriod" value="30000" />
<property name="testConnectionOnCheckin" value="true" />
<property name="preferredTestQuery" value="SELECT 1 FROM DUAL" />
<property name="user" value="${DB_USR}" />
<property name="password" value="${DB_PWD}" />
</bean>

En esta configuración DB_URL, DB_USR y DB_PWD están definidas como variables de entorno a nivel de usuario.

Espero que os sirva de ayuda.

Un saludo y a disfrutar!