iAS 9i - Passerelle PL/SQL

Précédente ] Accueil ] Suivante ]
 

Introduction

Ce document décrit l'utilisation et la configuration de la passerelle PL/SQL (PL/SQL Gateway) pour le serveur Web Apache livré avec les produits Oracle (bases de données et iAS) dans le cadre du laboratoire de génie logiciel.

La base de données doit être au minimum une base 8.1.7 pour bénéficier de la passerelle PL/SQL.

Généralités

La passerelle PL/SQL permet d'accéder à des procédures et des fonctions stockées dans une base de données Oracle au moyen d'une requête HTTP.

Il existe deux versions différentes de la passerelle PL/SQL. La première version est fournie par le module Apache mod_plsql. Il s'agit d'un plug-in serveur qui permet à Apache d'accéder aux bases de données Oracle. C'est cette version qui nous intéresse pour publier les modules de traitements Web réalisés avec Designer 6i. La seconde version est embarquée dans le module Apache mod_ose. Ce module permet à Apache de devenir un serveur de servlets grâce au composant OSE (Oracle Servlet Engine) qui est intégré dans les bases de données Oracle.

Le module mod_plsql est utilisé pour réaliser des applications Web "stateless" alors que le mod_ose est utilisé pour réaliser des applications "stateful".

Une application "stateless" ne conserve pas l'état de la transaction ni les valeurs des variables de paquetage après qu'une procédure PL/SQL se soit terminée. A l'inverse une application "stateful" conserve ces informations et les rend accessibles aux procédures exécutées ultérieurement. En mode "stateful" une procédure PL/SQL est considérée comme un servlet d'où l'utilisation du mod_ose.

Ce document présente uniquement le mod_plsql.

Configuration de la passerelle PL/SQL

Voici les fichiers de configuration qui permettent à Apache de collaborer avec la passerelle PL/SQL d'Oracle:


Le fichier <ORACLE_HOME>\network\Admin\Sqlnet.ora doit être configuré pour accéder aux serveurs de nom de l'ESNIG:

Aperçu du fichier Sqlnet.ora

    NAME.DEFAULT_ZONE = world

    NAMES.PREFERRED_SERVERS =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dbnsrv.cpln.ch)(PORT = 1575))
    (ADDRESS = (PROTOCOL = TCP)(HOST = dbnsrv.esnig.cifom.ch)(PORT = 1575))
    )

    NAMES.DEFAULT_DOMAIN = world

    SQLNET.EXPIRE_TIME = 0

    NAMES.DIRECTORY_PATH= (ONAMES,TNSNAMES)

httpd.conf (aperçu du fichier de configuration du serveur Apache)

# Include the Oracle configuration file for custom settings
include "D:\ORACLE\iSuites\Apache\Apache\conf\oracle_apache.conf"

oracle_apache.conf (aperçu du fichier de configuration pour la collaboration Apache - Oracle)

include "D:\ORACLE\iSuites\Apache\Apache\conf\mod__ose.conf"
include "D:\ORACLE\iSuites\Apache\modplsql\cfg\plsql.conf"

plsql.conf (aperçu du fichier de configuration de la passerelle PL/SQL)

LoadModule plsql_module D:\ORACLE\iSuites\bin\modplsql.dll
#
# Enable handling of all virtual paths beginning with "/pls" by mod-plsql
#
<IfModule mod_plsql.c>
  <Location /pls>
    SetHandler pls_handler
    Order deny,allow
    Allow from all
  </Location>
</IfModule>

Par défaut, Apache et la passerelle PL/SQL sont correctement configurés pour travailler ensemble. Cependant, il faut encore paramétrer les DAD (Database Access Descriptor) de la passerelle avant de pouvoir réellement l'utiliser pour accéder à des modules Designer.

Un DAD est un ensemble de valeurs de configuration que la passerelle PL/SQL utilise pour se connecter à une base de données. Un DAD spécifie entre autres :

  • L'alias de la base de données à laquelle la passerelle doit se connecter
  • Le nom d'utilisateur et le mot de passe à utiliser pour la connexion

Si les informations concernant le nom d'utilisateur et le mot de passe ne sont pas spécifiés dans le DAD, la passerelle demandera alors à l'utilisateur de s'identifier à travers une boite de dialogue

.

Une url qui utilise la passerelle PL/SQL est construite de la façon suivante: http://nom_serveur/pls/nom_dad/nom_procedure

"pls" est un chemin virtuel qui permet au serveur Web de savoir qu'il ne doit pas traiter lui-même l'url mais qu'il doit la transmettre à la passerelle PL/SQL.

Configuration des DAD (Database Access Descriptor)

Oracle fournit, avec iAS ou avec une base de données, une application Web pour paramétrer les DAD (http://lgl-ias/pls/admin/admin_/gateway.htm).

On remarque qu'il existe deux niveaux de configuration de la passerelle. Le premier niveau permet de défiir les paramètres globaux qui sont hérités par défaut par les DAD mais qui peuvent être redéfinis individuellement pour chaque DAD. Le second niveau permet de définir les paramètres spécifiques à chaque DAD.

Pour pouvoir utiliser cette application Web d'administration, il faut commencer par créer un DAD d'administration à la main.

Première configuration:

Pour la toute première configuration, il faut paramétrer le DAD d'administration à la main. Les DAD sont décrits dans le fichier <ORACLE_HOME>\Apache\modplsql\cfg\wdbsvr.app.

Voilà comment configurer le DAD d'administration qui permettra de créer les autres DAD avec l'application Web.

[PLSQL_GATEWAY]
administrators = sunier,daucourt,kohler
adminPath = /admin_/
admindad = admin

;debugModules = 
;defaultDAD = 
;upload_as_long_raw = 
;upload_as_blob = 
;enablesso = 
;stateful = 
;custom_auth = 
error_style = WebServer
;
[DAD_admin]
connect_string = agl
;password = 
;username = 
default_page = admin_/gateway.htm
;document_table = 
;document_path = 
;document_proc = 
;upload_as_long_raw = 
;upload_as_blob = 
;name_prefix = 
;always_describe = 
;after_proc = 
;before_proc = 
reuse = Yes
;connmax = 
;pathalias = 
;pathaliasproc = 
enablesso = No
;sncookiename = 
stateful = STATELESS_RESET
;custom_auth = 
;response_array_size = 
;exclusion_list = 
;cgi_env_list = 
;error_style = 
;nls_lang =

Quelques explications sur ces paramètres:

Paramètres généraux de la passerelle PL/SQL

  • administrators
    Liste des utilisateurs autorisés à administrer la passerelle PL/SQL.
  • adminPath
    Chemin virtuel indiquant qu'il s'agit d'une page d'administration.
  • admindad
    La passerelle utilise le DAD admin pour authentifier les utilisateurs définit par le paramètre "administrators".
  • error_style
    Les messages d'erreur renvoyés par la passerelle sont par défaut masqués par des messages d'erreur du serveur Web pour des raisons de sécurité.

Paramètres du DAD d'administration

  • connect_string
    La passerelle PL/SQL utilise la base AGL pour authentifier les administrateurs. Si aucune base n'est indiquée pour ce paramètre, tout le monde peut administrer la passerelle.
  • default_page
    L'indication du document par défaut "gateway.htm" permet le bon fonctionnement du bouton "Page d'accueil" Page d'accueil de l'application Web d'administration.
  • reuse
    La connexion à la machine hébergeant la base de donnée est conservée d'une url à l'autre afin d'optimiser les performances de la passerelle.
  • enablesso
    Dans notre cas on n'utilise pas le mécanisme du Single Sign-On pour s'identifier
  • stateful
    Avec le module mod_plsql, il n'est pas possible de faire du "stateful". Il existe deux modes "stateless": Reset Package et Preserve Package. Avec le premier mode, les variables et les curseurs de tous les package sont réinitialisés. Avec le second mode, les variables et les curseurs des packages de l'application ne sont pas réinitialisés (seuls les packages OWA sont remis à zéro).

Remarque au sujet du fichier "wdbsvr.app"

Le caractère ";" indique qu'un paramètre est mis en commentaire.

Il ne sert à rien de formater ou de commenter le fichier "wdbsvr.app" car il est automatiquement re-généré à chaque sauvegarde effectuée depuis l'application Web d'administration.

Autres configurations:

Pour les autres configurations, il faut utiliser l'application Web (http://lgl-ias/pls/admin/admin_/gateway.htm).

  • Cliquer sur "Paramètres des DAD de la passerelles".
  • Cliquer sur "Ajout d'un descripteur par défaut (configuration vide)" pour créer un nouveau DAD pour Designer 6i
  • Cliquer sur Edit pour modifier un DAD
  • Cliquer sur Delete pour supprimer un DAD

Certains paramètres ne sont pas accessibles depuis l'application Web et il faut les définir manuellement dans le fichier "wdbsvr.app".

Une liste exhaustive des paramètres est disponible dans la documentation d'iAS &.

 
Paramétrage de la page d'accueil du serveur Apache

Après l'installation d'iAS, le lien "Mod_plsql Configuration Menu" ne fonctionne pas. En effet, l'url http://agl1/pls/gateway.htm n'est pas une url valide car aucun DAD n'est configuré comme DAD par défaut. Il faut donc modifier la page d'accueil du serveur Apache (<ORACLE_HOME>\Apache\Apache\htdocs\index.html) pour que le lien pointe sur le DAD d'administration créé précédemment, http://lgl-ias/pls/admin/admin_/gateway.htm.

Voir aussi: Personnalisation ESNIG-LGL

Aperçu du fichier index.htm:

...
<li>
  <font face="Arial,Helvetica">
      <a href="http://www.openssl.org/">OpenSSL</a>
</font>
</li>

<li>
  <font face="Arial,Helvetica">
    <a href="/fastcgi/">FastCGI Developer's Kit Documentation</a>
  </font>
</li>

<li>
  <font face="Arial,Helvetica">
    <a href="http://perl.apache.org/">mod_perl Web Site</a>
  </font>
</li>

<li>
  <font face="Arial,Helvetica">
    <a href="/pls/admin/admin_/gateway.htm">Mod_plsql Configuration Menu</a>
  </font>
</li>


<li>
  <font face="Arial,Helvetica">
    <a href="bc4j.html">BC4J Documentation and Samples</a>
  </font>
</li>

<li>
  <font face="Arial,Helvetica">
    <a href="../xsql/">XML Developers Kit XDK Documentation</a>
  </font>
</li>
...

 
Pourquoi utiliser la passerelle d'iAS?

Nous avons décidé d'utiliser la passerelle d'iAS plutôt que celle d'une base de données (version 8.1.7) pour des raisons de sécurité. En effet, le serveur d'applications se situe dans une zone démilitarisée et est donc accessible depuis Internet. La base de données est, au contraire, inaccessible directement depuis Internet puisqu'elle se trouve dans la partie protégée du réseau. Il faut passer par le serveur d'application pour interroger celle-ci.