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
4 oct 2011
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!
Suscribirse a:
Entradas (Atom)