Quantcast
Viewing all articles
Browse latest Browse all 142

Error 404 - Not Found - RESTful Services en APEX 5 y GlassFish 4.1.1

Parece que los errores me persiguen…. Bueno en esta oportunidad se me presenta un error 404 en una de mis máquinas virtuales de trabajo que definitivamente no me dice nada del problema que pueda tener, así que en este post voy a mostrarles cómo habilitar el debug del ORDS para que nos muestre los errores en pantalla y podamos tener un poquito más de claridad a la hora de encontrarnos con estos errores tan incómodos!

Primero de todo es importante mencionar las versiones de cada software:

  • Oracle Apex 5.0.1.00.06
  • GlassFish 4.1.1
  • Oracle REST Data Services 3.0.2.294.08.40

El error se produjo al utilizar RESTful Services en mi Workspace. Desde el Taller de SQL ingresé al RESTful Services y realicé una prueba del Oracle.example.hr --> empinfo --> GET

Image may be NSFW.
Clik here to view.

Para entender un poco más sobre el error, lo mejor es activar el log de depuración del Oracle REST Data Services.

Para ello ingresamos a la instalación del ORDS buscamos los archivos de configuración que en mi caso los tengo dentro de una carpeta llamada config, y allí dentro de la carpeta apex (en mi caso porque le he cambiado el nombre al archivo war, sino sería ords) vamos a encontrar un archivo xml llamado defaults.xml, lo abrimos para editarlo:

Image may be NSFW.
Clik here to view.

Colocamos en true las dos líneas:

<entry key="debug.debugger">true</entry>

<entry key="debug.printDebugToScreen">true</entry>

Es necesario que bajemos el servidor de Glassfish (en mi caso) y luego lo subamos para que tome los cambios realizados.

Ingresamos al CMD y vamos a la siguiente carpeta:

Bajar el Servidor

C:\glassfish4/bin> asadmin stop-domain

Subir el Servidor

C:\glassfish4/bin> asadmin start-domain

Volvemos a probar el RESTful Services para que nos muestre el error en pantalla.

Image may be NSFW.
Clik here to view.

Este problema en mi caso, a parte de que no funciona las peticiones del RESTful Services, hace que no se muestren las imágenes que uso en mi aplicación en APEX como por ejemplo el logo. En otro post comento sobre el mismo problema pero me aparece el Error 503. El problema radica que el ORDS no puede encontrar las imágenes guardadas en el Workspace.

Como el error que veo no me indica nada muy específico también me dirijo a verificar el log del Servidor GlassFish, que está dentro del dominio, en mi caso en:

C:\glassfish4\glassfish\domains\domain1\logs\server.log

Si lo abrimos con un editor de textos, podemos revisar su contenido por si nos da mayor luz para el problema que tenemos.

En mi caso pude ver que me indicaba que el archivo de configuración apex_al estaba mal configurado, y me indicaba el error ORA-01017: invalid username/password; logon denied.

Image may be NSFW.
Clik here to view.

Aquí vemos claramente que el password estaba mal ingresado en la cuenta APEX_LISTENER.

Para ello ingresamos al SQLPlus y verificamos que tanto esa cuenta como el APEX_REST_PUBLIC_USER estén OPEN y que las contraseñas sean las correctas de la base de datos y de los archivos de configuración del ORDS, caso contrario tendríamos este error.

Verificamos las cuentas:

SQL> conn sys as sysdba

Enter password:

Connected.

SQL> select username, account_status from dba_users;

USERNAME                       ACCOUNT_STATUS

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

APEX_PUBLIC_USER               OPEN

SYS                           OPEN

SYSTEM                        OPEN

ANONYMOUS                     OPEN

ORDS_PUBLIC_USER               OPEN

CLARTECH                       OPEN

FLOWS_FILES                   EXPIRED

XDB                           EXPIRED

APEX_LISTENER                 LOCKED(TIMED)

APEX_REST_PUBLIC_USER         LOCKED(TIMED)

APEX_040000                   LOCKED

OUTLN                         EXPIRED & LOCKED

DIP                           EXPIRED & LOCKED

ORACLE_OCM                     EXPIRED & LOCKED

XS$NULL                       EXPIRED & LOCKED

MDSYS                         EXPIRED & LOCKED

CTXSYS                         EXPIRED & LOCKED

DBSNMP                         EXPIRED & LOCKED

APPQOSSYS                     EXPIRED & LOCKED

HR                             EXPIRED & LOCKED

ORDS_METADATA                 EXPIRED & LOCKED

APEX_050000                   EXPIRED & LOCKED

Las cuentas APEX_LISTENER y APEX_REST_PUBLIC_USER están bloqueadas, eso es por la cantidad de veces que se ingresó mal la contraseña y en el profile indica que hasta cierta cantidad de veces se bloquea, también se puede editar el profile por default con asistencia del DBA.

Desbloqueamos las cuentas:

SQL> alter user APEX_LISTENER account unlock;

User altered.

SQL> alter user APEX_REST_PUBLIC_USER account unlock;

User altered.

SQL> alter user APEX_050000 account unlock;

User altered.

Y verificamos las contraseñas que sean las correctas.

Para volver a configurar el ORDS desde la instalación del mismo abrimos una ventana de comandos y ejecutamos:

C:\ords>java -jar apex.war setup xe

Enter the name of the database server [localhost]:

Enter the database listen port [1521]:

Enter the database SID [xe]:

Enter 1 if you want to verify/install Oracle REST Data Services schema or 2 to skip this step [1]:

Enter the database password for ORDS_PUBLIC_USER:

Confirm password:

Enter 1 if you want to use PL/SQL Gateway or 2 to skip this step.

If using Oracle Application Express or migrating from mod_plsql then you must enter 1 [1]:

Enter the PL/SQL Gateway database user name [APEX_PUBLIC_USER]:

Enter the database password for APEX_PUBLIC_USER:

Confirm password:

Enter 1 to specify passwords for Application Express RESTful Services database users (APEX_LISTENER, APEX_REST_PUBLIC_USER) or 2 to skip this step [1]:

Enter the database password for APEX_LISTENER:

Confirm password:

Enter the database password for APEX_REST_PUBLIC_USER:

Confirm password:

Mar 08, 2016 4:45:29 PM oracle.dbtools.rt.config.setup.SchemaSetup install

INFO: Oracle REST Data Services schema version 3.0.4.60.12.48

Si tenemos arriba el servicio de GlassFish lo bajamos y luego lo volvemos a subir para que tome los nuevos valores de los archivos de configuración del ORDS.

Lo que siempre hago es también verificar que en el SQLPlus pueda conectarme con los usuarios para verificar que la password es la correcta.

Por ejemplo:

SQL> conn apex_public_user/mi_password@xe

Connected.

SQL> conn apex_rest_public_user/mi_password@xe

Connected.

SQL> conn ords_public_user/mi_password@xe

Connected.

SQL> conn apex_listener/mi_password@xe

Connected.

Finalmente podemos ingresar al RESTFul Services y probar de nuevo la petición y vemos que ahora sí nos descarga el archivo CSV solicitado.:)

Image may be NSFW.
Clik here to view.

Ahora al poder ver que el RESTful Service funciona bien con las peticiones, podemos ver que las imágenes de la aplicación ya son mostradas correctamente. :)

El Error 404 puede ser un verdadero dolor de cabeza como lo son los errores tan generales, que no sabemos que puede ser, ya que cualquier cosa puede estar pasando para darnos ese error y es por eso que es muy bueno saber cómo ir paso a paso desmenuzando un problema e ir descartando posibilidades de errores y revisando todos los logs que tenemos disponibles para que de esa forma sea más fácil llegar a una solución.

Hasta la Próxima!!!

Image may be NSFW.
Clik here to view.

Viewing all articles
Browse latest Browse all 142