Desplegar APEX en un Servidor GlassFish

Oracle Community

Desplegar APEX en un Servidor GlassFish

 

Written by Clarisa Maman Orfali

 

Existen tres tipos de Web Listener que podemos elegir para instalar Apex, el cual “Oracle REST Data Services” es el preferido, antes denominado “Oracle Application Express Listener”. Los otros dos Web Listener son Oracle HTTP Server y el Embedded PL/SQL Gateway.

El Web Listener permite la comunicación entre el browser y los objetos de la base de datos:

La instalación de APEX con la configuración del Embedded PL/SQL Gateway es recomendado solo para desarrollo y para que APEX se ejecute con el Oracle REST Data Services es necesario elegir algún servidor web que pueda desplegar J2EE, entre las opciones tenemos: Oracle WebLogic Server, Oracle GlassFish Server y Apache Tomcat.

También se puede instalar el Oracle REST Data Services en modo Standalone pero esta configuración esta solo soportado para entornos de desarrollo.

En este artículo veremos cómo desplegar Oracle APEX en un Servidor GlassFish, usando la opción Open Source ya que usando la versión Oracle GlassFish Server tiene un costo de licencia asociado.

Para completar los pasos descriptos en este artículo asumimos que tenemos instalado Oracle APEX en un Sistema Operativo Windows, corriendo en el Puerto 8080 usando la configuración Embedded PL/SQL Gateway.

Descargar e Instalar el JDK

Ingresamos a la página de Oracle para descargar el JDK.

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Hacemos clic en el icono de Java, aceptamos el acuerdo de licencia, y seleccionamos el que corresponda a nuestro S.O., en mi caso descargaré el de 32bits. (Windows x86: jdk-8u65-windows-i586.exe) en el escritorio y luego instalamos el JDK siguiendo el asistente.

Vamos a configurar la variable de entorno en Windows para poder ejecutar el JAVA sin tener que escribir toda la ruta donde se encuentra el ejecutable.

Configurar la variable JAVA_HOME en Windows

  1. Hacemos clic con el botón derecho del mouse sobre el ícono My Computer en nuestro escritorio y seleccionamos Properties
  2. Hacemos clic en el enlace Advanced system settings
  3. Hacemos clic en el botón Environment Variables
  4. En el recuadro System Variables, hacemos clic en el botón New
  5. Ingresamos el nombre de la variable como JAVA_HOME
  1. Ingresamos el valor de la variable como el path de instalación para el Java Development Kit

Si el directorio de instalación de Java contiene un espacio en el nombre de la ruta, se debe utilizar el nombre de la ruta más corta (por ejemplo: C:\Progra~1\Java\jdk1.8.0_65).

  1. Hacemos clic en OK
  1. En el recuadro System Variables, seleccionamos la variable Path y hacemos clic en el botón Edit
  2. Nos posicionamos al final de la lista de valores de la variable y agregamos ;%JAVA_HOME%\bin

  1. Hacemos clic en OK
  2. Cerramos todas las ventanas modales.

 

Deshabilitar el Oracle XML DB Protocol Server

Como lo mencioné antes, la instalación que tengo hecha de Apex es usando el Embedded PL/SQL Gateway y para usar el Oracle REST Data Services, necesitamos deshabilitar el Oracle XML DB Protocol Server.

Ingresamos a una ventana de comandos del SQL con credenciales de SYS as DBA e ingresamos la siguiente instrucción:

SQL> EXEC DBMS_XDB.SETHTTPPORT(0);

Cambiar el Password de la cuenta APEX_PUBLIC_USER

Ingresamos a una ventana de comandos SQL con las credenciales de SYS as DBA e ingresamos las siguientes sentencias SQL.

SQL> ALTER USER APEX_PUBLIC_USER IDENTIFIED BY nueva_password;

Con la siguiente consulta vemos el estatus de la cuenta recién alterada en OPEN

SQL> select username, account_status from dba_users;

Nota: Debemos tener presente que por defecto en el profile de la base de datos Oracle 11g el parámetro PASSWORD_LIFE_TIME está configurado en 180. Si estamos usando La base de Datos Oracle 11g con Oracle Application Express, esto es causa de que el password de APEX_PUBLIC_USER expire a los 180 días. Como resultado nuestra instancia de Oracle Application Express comenzará a ser inutilizable hasta que no cambiemos la password.

Configurar RESTful Services

Abrimos una ventana de comandos SQL y nos conectamos con las credenciales de SYS as DBA y ejecutamos el siguiente script:

SQL> @C:\apex\apex_rest_config.sql

Nota: Indicamos la ruta donde tenemos la instalación de APEX.

Ingresamos las contraseñas para los usuarios: APEX_LISTENER y APEX_REST_PUBLIC_USER y cerramos la ventana.

Descargar e Instalar el Servidor GlassFish Open Source Edition

Ingresamos al siguiente link para descargar GlassFish Server: https://glassfish.java.net

Hacemos clic en Download

Paso 0: Pre-requisito, tener instalado JDK 7 o superior para instalar GlassFish 4.1.1 (Instalado el JDK 8 u60 y configurado anteriormente)

Paso 1: Descargar Java EE 7 Full Platform glassfish-4.1.1.zip en nuestro escritorio.

Paso 2: Copiamos la carpeta zip en el C: y la descomprimimos. Al realizar esta operación se instala el servidor con un dominio predefinido, llamado domain1.

Paso 3: Iniciar GlassFish

Abrimos una ventana de comandos CMD y nos posicionamos en el directorio à C:/glassfish4/bin/

Ingresamos el siguiente comando para iniciar el servidor: asadmin start-domain

 

Al abrir el navegador web e ingresar en la barra de direcciones http://localhost:8080/ podemos ver que el Servidor está actualmente iniciado.

Para ingresar a la consola de administración del servidor, en la barra de direcciones del navegador ingresamos: http://localhost:4848/

Configurar usuarios y roles en GlassFish

Una vez dentro de la consola de administración de GlassFish podremos ver a la izquierda un menú lateral.

Nos dirigimos a Configurations > default-config > Security y se muestra la pantalla de seguridad.

Marcamos con un check para habilitar la opción Default Principal To Role Mapping y guardamos haciendo clic en el botón Save.

Posteriormente vamos a Configurations > default-config > Security > Realms > file y hacemos clic en el botón de Manager Users donde vamos a crear un usuario admin y otro usuario manager para el Oracle REST Data Services.

Primero creamos el usuario admin con la siguiente configuración:

  • User ID: adminlistener
  • Group List: Admin
  • Password: ingresamos una password

Luego creamos el manager con la siguiente configuración:

  • User ID: managerlistener
  • Group List: Manager
  • Password: ingresamos una password

Imágenes APEX

Localizamos la carpeta images de la instalación de APEX y copiamos todo su contenido, en mi caso la tengo en C:\apex\images.

Buscamos la siguiente localización dentro del directorio de glassfish4:

C:\glassfish4\glassfish\domains\domain1\docroot

Y creamos una carpeta llamada i, luego dentro de esa carpeta pegamos todo el contenido de la carpeta images de APEX.

Descargar e Instalar Oracle REST Data Services

Para que APEX pueda desplegarse en GlassFish necesitamos descargar el Oracle REST Data Services desde el sitio web de Oracle.

http://www.oracle.com/technetwork/developer-tools/rest-data-services/downloads/index.html

Aceptamos el acuerdo de licencia y descargamos el archivo zip en nuestro escritorio.

Una vez finalizada la descarga, copiamos el archivo en la ubicación que deseamos en nuestra PC y lo descomprimimos.

En mi caso lo voy a descomprimir dentro del directorio C: y le voy a colocar el nombre ords.

Configurar Oracle REST Data Services

Cuando se instala el Oracle REST Data Services, los archivos de configuración se instalan en la carpeta /temp/apex de Windows y esa ubicación no es el mejor lugar para disponer de esos archivos, por ello vamos a crear una carpeta que albergue esos archivos de configuración dentro del directorio ords y la llamaremos config y en propiedades de la carpeta le damos acceso de escritura.

Por otro lado, por defecto el context root para acceder a Oracle Application Express por medio de Oracle REST Data Services es ords, si queremos cambiar el nombre y que sea apex, necesitamos renombrar el archivo ords.war que se encuentra dentro del directorio ords por apex.war.

Abrimos una ventana de comandos CMD como administrador y nos dirigimos al directorio ords donde hemos descomprimido los archivos del Oracle REST Data Services y ejecutamos la siguiente línea de comandos:

C:\ords>java -jar apex.war configdir C:\ords\config [enter]

PM oracle.dbtools.cmdline.ModifyConfigDir execute

INFO: Set config.dir to C:\ords\config in: C:\ords\apex.war

C:\ords>

Ahora vamos a configurar los detalles de conexión de la base de datos:

C:\ords>java -jar apex.war install advanced

Verify ORDS schema in Database Configuration apex with connection host: localhost port: 1521 sid: xe

Please login with SYSDBA privileges to verify Oracle REST Data Services schema.

Installation may be required.

Enter the username with SYSDBA privileges to verify the installation [SYS]: SYS

Enter the database password for SYS: (ingresar el password)

Confirm password: (confirmar el password)

Nov 18, 2015 8:02:20 PM oracle.dbtools.rt.config.setup.SchemaSetup addSchemaPara

ms

INFO:

Oracle REST Data Services schema does not exist and will be created.

Enter the default tablespace for ORDS_METADATA [SYSAUX]:APEX

Enter the temporary tablespace for ORDS_METADATA [TEMP]: TEMP

Enter the default tablespace for ORDS_PUBLIC_USER [USERS]:APEX

Enter the temporary tablespace for ORDS_PUBLIC_USER [TEMP]: TEMP

Nov 18, 2015 8:03:10 PM oracle.dbtools.installer.Installer installORDS

INFO:

Installing Oracle REST Data Services version 3.0.2.294.08.40

... Log file written to C:\ords\logs\ordsinstall_2015-11-18_200310_00578.log

... Verified database prerequisites

... Created Oracle REST Data Services schema

... Created Oracle REST Data Services proxy user

... Granted privileges to Oracle REST Data Services

... Created Oracle REST Data Services database objects

Nov 18, 2015 8:03:20 PM oracle.dbtools.installer.Installer installORDS

INFO: Completed installation for Oracle REST Data Services version 3.0.2.294.08.

40. Elapsed time: 00:00:09.750

Enter 1 if you wish to start in standalone mode or 2 to exit [1]:2

C:\ords>

Crear Fichero i.war

Es momento de crear nuestro fichero i.war el cual almacenará los datos del directorio /i/ del APEX que ya tenemos instalado. En mi caso, APEX lo tengo instalado en la ruta C:\apex\. Ejecutaremos el siguiente comando:

C:\ords>java -jar apex.war static C:\apex\images

WAR Generation complete

WAR location     : C:\ords\i.war

Context path     : /i

Static resources : C:\apex\images

Ensure the static resources are available at path: C:\apex\images

on the server where the WAR is deployed

C:\ords>

Nota: Es importante destacar que el i.war que se ha creado dentro de la carpeta ords solo contiene las referencias a las imágenes de la instalación de APEX, por ello, es importante no cambiar la ubicación de la instalación de Apex ni tampoco renombrar la carpeta de Apex.

Deploy de Oracle Apex en el Servidor GlassFish

Ingresamos a la consola de administración de GlassFish y a la izquierda en el menú lateral, hacemos clic en Applications y luego hacemos clic en Deploy y seleccionamos el archivo apex.war y luego hacemos clic en ok.

context root: apex

description: Oracle REST Data Services

 

Hacemos lo mismo para el i.war, pero en context root lo dejamos en blanco.

Por último verificamos que todas las cuentas estén OPEN, para ello desde el SQL Plus o desde una ventana de comandos SQL iniciamos sesión como SYS as DBA e ingresamos la siguiente consulta:

SQL> select username, account_status from dba_users;

USERNAME                       ACCOUNT_STATUS

------------------------------ --------------------------------

CLARTECH                       OPEN

ORDS_PUBLIC_USER               OPEN

APEX_050000                    OPEN

ORDS_METADATA                  EXPIRED & LOCKED

HR                             EXPIRED & LOCKED

XDB                            OPEN

ANONYMOUS                      OPEN

FLOWS_FILES                    EXPIRED

APEX_040000                    LOCKED

CTXSYS                         EXPIRED & LOCKED

MDSYS                          EXPIRED & LOCKED

SYS                            OPEN

APEX_REST_PUBLIC_USER          OPEN

APEX_LISTENER                  OPEN

APEX_PUBLIC_USER               OPEN

SYSTEM                         EXPIRED(GRACE)

XS$NULL                        EXPIRED & LOCKED

OUTLN                          EXPIRED & LOCKED

 18 rows selected.

Una vez que hemos verificado las cuentas ya podemos ir al panel de administrador de GlassFish y hacemos clic en el enlace Launch (de la aplicación apex) y seleccionamos el primer link http://[nombre_host]:8080/apex

Podemos ver que la página de inicio de Sesión de Apex aparece.

Para resumir, la implementación de Java EE ofrece una mayor funcionalidad, como la configuración basada en línea de comandos, seguridad mejorada, caché de archivos y servicios web RESTful, características que no se podrían tener sin este tipo de implementación.

Hasta Pronto!

5471 2 /
Follow / 12 Oct 2016 at 3:49pm

Muy pero muy bueno; gracias Clarisa!!! :)

Follow / 21 Feb 2017 at 9:39pm

Excelente aporte Clarisa !!. Adicionalmente tengo una breve consulta para ti, cuento con una aplicación en Apex con dirección url:

server:8282/.../f

lo que quiero evitar es que los usuarios modifiquen el url  y lo dejen  de la siguiente manera

http://server:8282/apex/

lo cual les mostrara la pagina de acceso como desarrollador. sabes como evitar que se les muestre la pagina de acceso como desarrollador?