Glassfish para ADF Essentials

Configuración paso a paso para poder desplegar aplicaciones desarrolladas usando Oracle ADF Essentials en el servidor Glassfish

ADF Essentials es la versión gratuita de ADF. Cuando me refiero a gratuita, hablo de que es gratuita para desarrollar y gratuita para desplegar, incluso en ambientes productivos.

Hoy hablaremos de las configuraciones que se deben hacer al servidor Glassfish para poder desplegar aplicaciones desarrolladas con ADF Essentials. Específicamente nos referiremos a la versión ADF 12c (12.2.1), que al día de hoy es la versión más reciente, y, de acuerdo a la matriz de certificación para ADF 12c (12.2.1), al servidor Glassfish 4.1.x

Es importante anotar, que se presentarán las configuraciones mínimas para poder desplegar las aplicaciones en nuestros ambientes de desarrollo y pruebas. Sin embargo, para ambientes productivos son necesarias configuraciones adicionales, sobretodo respecto a seguridad.

¿Qué se requiere?
Java SE 8
Glassfish 4.1.x Full Platform
Oracle ADF Essentials 12.2.1
javax.faces-2.2.8-11.jar
javax.el-3.0.1-b08.jar
antlr-runtime-3.5.2.jar

Lo primero que se debe hacer es la instalación de Java SE 8, pero su proceso de instalación no lo detallaremos aquí. Glassfish 4.1.x en realidad no se instala, dado que lo que se descarga es un archivo comprimido .zip y por lo tanto se debe descomprimir en alguna ubicación, asegurándonos de que la ruta a dicha ubicación no contenga espacios en el nombre de los directorios. Por ejemplo: C:/DevTools/ o /home/user/DevTools… De ahora en adelante, llamaremos esa ubicación como {GLASSFISH_HOME}

Una vez hemos realizado lo anterior, pasaremos a instalar las librerías de ADF Essentials en la ruta:

{GLASSFISH_HOME}/glassfish/domains/domain1/lib

Para ello, necesitamos el archivo adf-essentials.zip que debimos descargar previamente. Hay algo particular con la estructura que tiene este archivo, pues todos los .jar se encuentran dentro de carpetas, pero Glassfish los requiere sin éstas. Por lo tanto, cuando descomprimamos el archivo debemos asegurarnos de hacerlo evitando que se creen las carpetas adicionales en la ubicación destino. Si usas Linux, el siguiente comando realiza precisamente eso:

unzip -j adf-essentials.zip -d {GLASSFISH_HOME}/glassfish/domains/domain1/lib

Adicional a las librerías de ADF Essentials, debemos copiar el archivo .jar de ANTLR en la misma carpeta en donde descomprimimos adf-essentials.zip, es decir:

{GLASSFISH_HOME}/glassfish/domains/domain1/lib

Ahora, debemos reemplazar un par de archivos que vienen por defecto en Glassfish: javax.faces.jar y javax.el.jar. Para ello, descargamos las versiones compatibles con ADF Essentials: javax.faces-2.2.8-11.jar y javax.el-3.0.1-b08.jar y las ubicamos en la siguiente ubicación:

{GLASSFISH_HOME}/glassfish/modules/javax.faces.jar
{GLASSFISH_HOME}/glassfish/modules/javax.el.jar

Eso es todo en cuanto a archivos. Lo que vamos a realizar ahora es la adición de parámetros y cambios en la configuración de Glassfish requeridos por ADF Essentials. Para ello, necesitamos iniciar el servidor:

{GLASSFISH_HOME}/bin/asadmin start

O si usas Windows:

{GLASSFISH_HOME}/bin/asadmin.bat start

Una vez el script de iniciar servidor finaliza, podemos acceder a la consola de administración de Glassfish por medio de un navegador web en la siguiente URL, obviamente, si el servidor Glassfish ha sido instalado en localhost:

http://localhost:4848

Una vez cargada la consola de administración podemos dirigirnos al menú lateral izquierdo, opciones: Configurations>server-config>JVM Settings

glassfish-jvm-props-nav

En dicha página de configuración, vamos a borrar y adicionar opciones de la máquina virtual de Java. Lo primero que haremos es eliminar la opción:

-XX:MaxPermSize=192m

Luego, adicionamos las siguientes opciones compatibles con Java SE 8

-XX:MetaspaceSize=512m
-XX:MaxMetaspaceSize=512m

Obviamente, para ambientes productivos los valores de memoria deberían ser mayores. Adicionamos también una opción requerida por ADF:

-Doracle.mds.cache=simple

Y por último, para hacer que los drivers JDBC de Oracle cumplan con la especificación Java EE, requerimos adicionar la siguiente opción:

-Doracle.jdbc.J2EE13Compliant=true

Eso es todo lo que debemos configurar, ahora debemos reiniciar el servidor para que los cambios sean aplicados y ya podemos hacer el despliegue de nuestras aplicaciones Oracle ADF Essentials!

Como apartado a esta entrada, me gustaría mencionar posibles excepciones que se pueden presentar al desplegar las aplicaciones y una posible causa:

  • NoClassDefFoundException… ADFLogger… Posiblemente las librerías presentes en adf-essentials.zip no han sido descargadas directamente en la carpeta destinada para ello o se han instalado dentro de alguna otra carpeta. Si después de revisar, todos los archivos .jar se instalaron en la ubicación especificada, es posible entonces que cuando se hizo el despliegue de la aplicación no se haya seleccionado como plataforma Glassfish tanto para el ViewController como para la Aplicación.
  • NoClassDefFoundException…Antlr… Posiblemente no se hizo la instalación de ANTLR.
  • Jdeveloper muestra el mensaje de error: status of 400 Deployment cancelled… Para este caso se debe revisar el archivo de log de Glassfish pues en él se encuentra la descripción específica del error.