openxava / documentación / Desplegar en producción con Tomcat

Si estás usando una versión de OpenXava anterior a la 7.0 mira las instrucciones antiguas
Puedes desplegar tus aplicaciones OpenXava en cualquier servidor de aplicaciones Java con soporte de Servlet 3.1 o superior. Para esta guía vamos a usar Apache Tomcat para desplegar tu aplicación OpenXava. Tomcat es el servidor de aplicaciones Java más usado y robusto, ideal para entornos de producción.

Descargar e instalar Tomcat

Descarga Tomcat 9 desde Apache. OpenXava también funciona bien con Tomcat 8 and Tomcat 10. Descomprime el Tomcat en una carpeta de tu elección. Ve a la carpeta webapps y borra las carpetas que hay dentro: docs, examples, host-manager, manager and ROOT. Son aplicaciones de ejemplo y administración que no deberías tener en un sistema de producción.

Crear y desplegar el WAR

Para desplegar tu aplicación en Tomcat has de crear un archivo WAR desde tu proyecto. Para ello, pulsa con el botón derecho del ratón en tu proyecto y escoge Run As > Maven build...:
En el diálogo pon package para el campo Goals:
Adicionalmente, puedes poner un nombre mejor como facturacion package en este caso. Pulsa en Run. Espera a que termine la ejecución.
O si tienes Maven instalado en tu ordenador y prefieres usar la línea de órdenes:
$ cd facturacion
$ mvn package
Después coge el archivo facturacion.war (o tunombreaplicacion.war) de la carpeta target de tu proyecto y cópialo en la carpeta webapps de tu Tomcat. Tu aplicación ya está desplegada. ¡Ojo! Para Tomcat 10 has de crear una carpeta llamada webapps-javaee dentro de la carpeta del Tomcat 10 y después copia ahí el war, en lugar de a webapps.

Ejecutar Tomcat

Para arrancar tu Tomcat, con Windows pulsa el botón de Inicio, teclea cmd y pulsa INTRO, entonces::

set JAVA_HOME=C:\Program Files\Java\jdk-11.0.3
cd tomcat-9.0.64\bin
startup
Con Linux/Mac:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
cd tomcat-9.0.64/bin
./startup.sh
Por supuesto, ajusta las URLs para tus propios directorios del Tomcat y Java.
¡Enhorabuena! Tu aplicación ya está funcionando en producción, ya puedes usar tu navegador para probarla.

Configurar contra la base de datos de producción

Por defecto tu aplicación va contra la misma base de datos que usas en desarrollo, la que tienes definida en la fuente de datos en src/main/webapp/META-INF/context.xml de tu proyecto. La mayoría de las veces vas a querer una base de datos diferente para producción. Para sobreescribir la base datos usada por tu aplicación has de definir la fuente de datos en el context.xml que se encuentra en la carpeta conf de tu Tomcat. Para nuestro ejemplo, deberíamos editar tomcat-9.0.64/conf/context.xml y dejarlos de la siguiente manera:
<?xml version="1.0" encoding="UTF-8"?>

<!-- The contents of this file will be loaded for each web application -->
<Context>

    <!-- Default set of monitored resources. If one of these changes, the    -->
    <!-- web application will be reloaded.                                   -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>WEB-INF/tomcat-web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

    <!-- Uncomment this to disable session persistence across Tomcat restarts -->
    <!--
    <Manager pathname="" />
    -->
	
	 <Resource name="jdbc/facturacionDS" auth="Container" type="javax.sql.DataSource"
	      maxTotal="20" maxIdle="5" maxWaitMillis="10000"
	      username="facturacion" password="afj30" driverClassName="org.hsqldb.jdbcDriver"
	      url="jdbc:hsqldb:hsql://localhost:1999"/>
	
</Context>
Usamos facturacionDS como nombre de fuente de datos, el mismo que en el context.xml incluido en tu WAR, pero definiendo url, username y password diferentes.