Installation de Oracle REST Data Services (ORDS) pour Oracle APEX

View more Tutorials:

1- Introduction

Ce document est basé sur :
  • Oracle 11g, 12c

  • ORDS 3.x

2- Qu'est-ce que Oracle REST Data Services ?

Oracle REST Data Services (ORDS) est le service des données qui sert à remplacer  Oracle HTTP server et  mod_plsql. Il s'appuie sur  Java EE qui fournit des services  RESTful et améliore la capacité de sécurité. Il peut être déployé sur  WebLogic, Tomcat, Glassfish ou indépendamment.

3- Interaction entre Oracle ORDS et Oracle APEX

Généralement, il y a 2 méthodes d'installer  Oracle APEX.

Méthode 1: Configurer  Embedded PL/SQL Gateway: C'est la facon que vous configurez  Oracle APEX qui peut être exécuter sur  Oracle XML DB HTTP Server, il est un HTTP disponible lors que vous installez Oracle 11g ou la version plus avancée.

Méthode 2: Installer  Oracle APEX sur un serveur web précis, par exemple  WebLogic, Tomcat ou  Glassfish,...
Le lien a travaillé avec  Oracle APEX comme ci-dessous:
  • http://your-server:8080/apex
Afin d'utiliser des services  RESTful, vous devez installer  Oracle ORDS qui peut être déployé sur  WebLogic Server, Tomcat, Glassfish,.. ou exécuté indépendamment. Oracle ORDS peut lire directement sur  Oracle APEX et peut remplacer complètement  Oracle HTTP Server. Pour cette raison, vous pouvez utiliser des services  RESTful sur  APEX et utiliser le nouveau  URL en but de travailler avec  Oracle APEX.
  • http://your-server:8080/ords

4- Download Oracle ORDS

Vous pouvez télécharger  Oracle ORDS à:
Les résultats de téléchargement :

5- Configurer ORDS pour APEX

CD vers le répertoire personnel de​​​​​​​ apex.
Connectez-vous à  sqlplus sous l'autorisation de  sysdba.
Réexécutez de la commandes pour configurer  REST Service.
-- Configuring REST Service.


@apex_rest_config.sql
Après l'achèvement d'exécution ces lesdites commandes, 2 utilisateurs  APEX_LISTENER et  APEX_REST_PUBLIC_USER sont été créés.
  1. APEX_LISTENER - Le compte utilisé pour requêterles les définitions des services RESTful stockés dans Oracle APEX.
  2. APEX_REST_PUBLIC_USER - Le compte utilisé lors de l'appel des définitions des services RESTful qui sont stockés dans Oracle APEX.

Activer les services réseaux (Network Services)

Par défaut, les services réseau (Network Services) sont désactivés dans Oracle 11g ou la version la plus récente. Par conséquent, vous devez utiliser le package de   DBMS_NETWORK_ACL_ADMIN afin d'accorder des privilèges de connexion à n'importe quel hôte pour l'utilisateur de base de données APEX_050000.
Vous devez requêter pour voir les utilisateurs  APEX dans la base de données:
Select Username from All_Users where username like 'APEX%';
Exécutez la commande pour accorder des privilèges de connexion à n'importe quel hôte pour l'utilisateur de base de données​​​​​​​ APEX_050000.
Declare
   Acl_Path Varchar2(4000);
Begin
   -- Look for the ACL currently assigned to '*' and give APEX_050000
   -- the "connect" privilege if APEX_050000 does not have the privilege yet.
   Select Acl
   Into   Acl_Path
   From   Dba_Network_Acls
   Where  Host = '*'
   And    Lower_Port Is Null
   And    Upper_Port Is Null;
   If Dbms_Network_Acl_Admin.Check_Privilege(Acl_Path
                                            ,'APEX_050000'
                                            ,'connect') Is Null Then
      Dbms_Network_Acl_Admin.Add_Privilege(Acl_Path
                                          ,'APEX_050000'
                                          ,True
                                          ,'connect');
   End If;
Exception
   -- When no ACL has been assigned to '*'.
   When No_Data_Found Then
      Dbms_Network_Acl_Admin.Create_Acl('power_users.xml'
                                       ,'ACL that lets power users to connect to everywhere'
                                       ,'APEX_050000'
                                       ,True
                                       ,'connect');
      Dbms_Network_Acl_Admin.Assign_Acl('power_users.xml'
                                       ,'*');
End;
/

Commit;
 

Accorder la connexion à l'utilisateur APEX_050000 (Oracle 11g):

Declare
   Acl_Path Varchar2(4000);
Begin
   -- Look for the ACL currently assigned to '*' and give APEX_050000
   -- the "connect" privilege if APEX_050000
   --does not have the privilege yet.
   Select Acl
   Into   Acl_Path
   From   Dba_Network_Acls
   Where  Host = '*'
   And    Lower_Port Is Null
   And    Upper_Port Is Null;
   If Dbms_Network_Acl_Admin.Check_Privilege(Acl_Path
                                            ,'APEX_050000'
                                            ,'connect') Is Null Then
      Dbms_Network_Acl_Admin.Add_Privilege(Acl_Path
                                          ,'APEX_050000'
                                          ,True
                                          ,'connect');
   End If;
Exception
   -- When no ACL has been assigned to '*'.
   When No_Data_Found Then
      Dbms_Network_Acl_Admin.Create_Acl('power_users.xml'
                                       ,'ACL that lets power users to connect to everywhere'
                                       ,'APEX_050000'
                                       ,True
                                       ,'connect');
      Dbms_Network_Acl_Admin.Assign_Acl('power_users.xml'
                                       ,'*');
End;
/

Commit;

Accorder la connexion à l'utilisateur APEX_050000 (Oracle 12c):

Des procédures CREATE_ACL, ASSIGN_ACL, ADD_PRIVILEGE et CHECK_PRIVILEGE dans le package DBMS_NETWORK_ACL_ADMIN sont obsolètes dans  Oracle Database 12c. Oracle vous recommande d'utiliser plustôt APPEND_HOST_ACE.
-- Sử dụng cho Oracle 12c.

BEGIN
    DBMS_NETWORK_ACL_ADMIN.APPEND_HOST_ACE(
        host => '*',
        ace => xs$ace_type(privilege_list => xs$name_list('connect'),
                           principal_name => 'APEX_050000',
                           principal_type => xs_acl.ptype_db));
END;
/

6- Déploiement ORDS

Remarque: Assurez-vous que vous avez installé  Java la version 7 ou la version plus récente et que vous avez déclaré la variable d'environnement  PATH au dossier bin de  Java. Vous pouvez voir en détails des instructions de l'installion de  Java à:
Ajoutez le chemin vers le dossier bin de Java à la fin de PATH
  • ;C:\DevPrograms\Java\jdk1.8.0_65\bin
Décompressez le dossier  ords-**.zip que vous venez de télécharger dans un répertoire.
Vous pouvez voir que le dossier décompressé comprend le fichier  ords.war
Copiez le dossier  images dans  apex au dossier  ords:
Maintenant, nous installerons  Oracle ORDS indépendamment (Ce n'est pas nécessaire de déployer sur  WebLogic, Tomcat ou un autre  web server quelconque)
CD au dossier  ords:
Ensuite, connectez-vous à  sqlplus avec l'autorité de sysdba.

Votre  Oracle APEX exécute sur  Oracle XML DB HTTP Server, vous devez le désactiver avec la commande :
--  Disable Oracle APEX on Oracle XML DB HTTP Server.

EXEC DBMS_XDB.SETHTTPPORT(0);


-- Note: You can enable it with command:

EXEC DBMS_XDB.SETHTTPPORT(8080)
Quittez  sqlplus. Et  CD au dossier  ords:
Exécutez la commande :
# Run command:

java -jar ords.war

# Or:

java -jar ords.war install
Saisissez l'adresse de la machine qui contient la base de données (Par défaut elle est  localhost):
Le port de la base de données (Par défaut, il est 1521):
Saisissez  Service Name ou  SID de la base de données:
Saisissez le mot de passe pour l'utilisateur de la base de données : ORDS_PUBLIC_USER
Sqlplus demande de ressaisir les informations de l'utilisateur de base de données avec l'autorité de  sysdba. (Saisissez  sys et puis  password).
SQLPlus vous demandera si vous utilisez  Oracle APEX ou non, si oui, saisissez 1 et appuyez sur le bouton 'enter' pour continuer :
Saisissez un mot de passe pour l'utitisateur qui sera créé  APEX_PUBLIC_USER:
Ensuite, saisissez 1 afin de préciser le mot de passe pour 2 utilisateurs de base de données qui viennent d'être créés (APEX_LISTENER, APEX_REST_PUBLIC_USER).
Sélectionnez 1 pour démarrer  ORDS indépendamment (Standalone).
Vous avez configuré  ORDS avec succès. Fermez la fenêtre  CMD.

Exécution ORDS

Remarque: Vous pouvez exécuter la commande suivante pour voir les instructions en détails :


java -jar ords.war help standalone
CD au dossier  ORDS et exécutez de la commande :
java -jar ords.war standalone --port 8080 --apex-images C:/DevPrograms/ords/images
Pour la 1ère fois, il demandera où le fichier de configuration se trouve :
ORDS a été déployé avec succès.
Remarque: Si vous recevez une erreur :
Débloquez l'utilisateur APEX_PUBLIC_USER
Column username format a25;
Column account_status format a25;

-- Query unlocked APEX user.

select username,account_status from dba_users
 where lock_date is not null
 and username like 'APEX%';
Alter user APEX_PUBLIC_USER account unlock;
Le fichier de configuration est également créé après que vous avez déployé  ORDS:
Ne fermez pas la fenêtre ci-dessus, vous pouvez utiliser  APEX avec le nouveau chemin URL :

View more Tutorials: