Después de mis primeros pasos con la
Raspberry Pi y
algunos experimientos esta semana, he decidido hacer una prueba de concepto, tratando de ejecutar una aplicación realizada con el
Framework Atlas de la Comunidad de Madrid (en el que como sabéis
llevo años involucrado) en un servidor
Tomcat 7 contra una base de datos
MySql, ambos instalados en la Raspberry.
Instalación de las Herramientas
Para ello, y tras comprobar que la JDK1.7 de Oracle
ya viene incluída en Rapsbian, lo primero que he tenido que hacer es
instalar el acceso remoto por SSH, de manera que a partir de entonces todo el trabajo lo he realizado desde mi PC, conectándome por SSH o por
Escritorio Remoto a la Raspberry cuando ha sido necesario.
Lo siguiente ha sido instalar el
servidor Tomcat 7. Instalar Tomcat
ha sido fácil, basta con descargar el fichero
apache-tomcat-7.0.55.tar.gz y descomprimirlo en el directorio donde quieras ejecutar tomcat (en mi caso en "
/home/pi/java/tomcat/apache-tomcat-7.0.55").
Para poder ejecutar las aplicaciones Atlas en el servidor Tomcat también he tenido que tocar un poco la instalación por defecto de Tomcat, he eliminado la versión de la librería de Expression Language que viene en "
/home/pi/java/tomcat/apache-tomcat-7.0.55/lib" y he añadido a ese directorio las siguientes librerías adicionales:
el-api-2.2.jar
el-impl-2.2.jar
jstl-1.2.jar
Después he instalado MySql en la Raspberry, según se indica en
esta página. Una vez instalado, he tenido que conectarme y crear una base de datos de ejemplo llamada "atlas", y un usuario con el mismo nombre para poder acceder a ella. He utilizado las siguientes sentencias:
mysql -u root -p
Enter password:
mysql> CREATE DB atlas
mysql> USE atlas
mysql> CREATE USER 'atlas'@'localhost' IDENTIFIED BY 'atlas';
mysql> GRANT ALL PRIVILEGES ON atlas.* TO 'atlas'@'localhost'
mysql> FLUSH PRIVILEGES;
mysql> quit
Entorno de Desarrollo y Arquetipo Web
Para crear las tablas en la base de datos para el ejemplo que viene configurado en el Arquetipo Web, he tenido que modificar ligeramente el script de creación de objetos de base de datos que viene en la ruta "src/test/resources/schema_arquetipo_oracle.sql", he creado un fichero llamado "schema_arquetipo_mysql.sql" en el que he cambiado el tipo de datos Number de Oracle por el Int de MySql, y he eliminado la creación de las secuencias (no las necesitaba para mi prueba básica).
Modificaciones sobre el Arquetipo Web
Lo primero que he tenido que modificar sobre el Arquetipo Web recién generado ha sido el fichero "web/src/main/resources/environment.properties" para configurar la conexión contra la base de datos MySql:
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/atlas
jdbc.username=atlas
jdbc.password=atlas
hibernate.dialect=org.hibernate.dialect.MySQLDialect
También he configurado en ese fichero la ruta donde se generan los archivos de log:
monitor.FILE.directorioCliente=/home/pi/java/tomcat/apache-tomcat-7.0.55/logs
Además de configurar la conexión, he tenido que añadir la siguiente dependencia de
Maven al fichero "
web/pom.xml" para incluir en el war el
driver Jdbc de MySql:
También he tenido que modificar el fichero "src/main/webapp/META-INF/context.xml" para configurar la conexión con la base de datos en Tomcat, dejando el siguiente contenido:
Por último y antes de generar el war he tenido que editar el fichero "web/src/main/resources/conf/applicationContext-security-hostPolitica.xml" para añadirle la política a utilizar cuando se acceda a la aplicación a través de la IP de la Raspberry:
Modificaciones sobre el "war" y arranque
Realizadas todas estas modificaciones, he generado el war para el entorno local utilizando "
maven clean install" sin ningún perfil. En ese momento he intentado desplegar tal cuál el war en el Tomcat de la Raspberry (copiándolo al subdirectorio "webapps"), pero ha surgido un
problema con la librería "aspectj", ya que Atlas 1.2.7 está preparado para correr sobre JDK1.6, y no sobre 1.7. Para arreglar el problema he tenido que abrir el war y eliminar del directorio WEB-INF/lib las dos librerías de aspectj:
aspectjrt-1.6.0
aspectjweaver-1.6.0
Y en su lugar he puestos las del mismo nombre pero que corresponden a la versión 1.7.0.
Hecho esto el war ya estaba listo, lo he copiado al directorio "webapps" de la instalación de Tomcat y tras arrancar el servidor de aplicaciones (lo que ha durado 5 minutos)... VOILA!
Han sido varias horas hasta que he tenido la aplicación funcionando pero ha valido la pena. Aunque el rendimiento de la Raspberry con la aplicación deja bastante que desear, he conseguido el objetivo de la prueba de concepto, y por el camino he aprendido mucho sobre el funcionamiento de mi nuevo juguete ;-)