-
-
1- Introduction
-
Ce document est basé sur :
-
-
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.
- APEX_LISTENER - Le compte utilisé pour requêterles les définitions des services RESTful stockés dans Oracle APEX.
- 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 :
-
-