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
- Hacemos clic con el botón derecho del mouse sobre el ícono My Computer en nuestro escritorio y seleccionamos Properties
- Hacemos clic en el enlace Advanced system settings
- Hacemos clic en el botón Environment Variables
- En el recuadro System Variables, hacemos clic en el botón New
- Ingresamos el nombre de la variable como JAVA_HOME
- 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).]
- Hacemos clic en OK
- En el recuadro System Variables, seleccionamos la variable Path y hacemos clic en el botón Edit
- Nos posicionamos al final de la lista de valores de la variable y agregamos ;%JAVA_HOME%\bin
- Hacemos clic en OK
- 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. 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 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!
Al realizar el deploy del ords me da el siguiente error: “glassfish An error has occurred GUI internal error: Archive Path is NULL.”
Hola Andrés, primero mira el log del server de glassfish si te da mas información y el log del ORDS. Por otro lado mira que no tengas el mismo “Context Root” para otra aplicación en Glassfish, si es asi debes hacer undeploy. Puedes revisar eso entrando a la consola de admin de Glassfish en localhost:4848. Saludos!
Clarisa, gracias por su respuesta.
Ejecuté el siguiente comando y funcionó:
asadmin set configs.config.server-config.cdi-service.enable-implicit-cdi=false
Excelente Andrés! Saludos 🙂
Hola,
Tengo el siguiente problema cunado ejecuto dese el browser ,
No provider found for: requires oracle.dbtools.http.filters.Filters
Alguna ayuda
Hola Marco, es muy difícil saber qué puede estar pasando sin tener mas información. Como es el ambiente, version base de datos, webservices, APEX, etc…
Saludos
Clarisa
Buenas tardes Clarisa, trate de instalar en payara 5 con los mismos pasos de glashfish, me sale un error al hacer el lunch , error es 404 not found , por favor alguna sugerencia ?
Hola Hugo la verdad puede ser cualquier cosa, revisa el log del servidor de glassfish y el log del servidor de ORDS para que pueda orientarte un poco mas a que se debe el error.
Saludos!