WebFacing

l'AS/400 propose maintenant deux serveurs WEB : IBM HTTP server et Apache.

Le but est de fournir au clients (Internet Explorer, Netscape, Opera etc...) des pages HTML à afficher.

Le standard HTML est un langage SGML (comme UIM sur l'AS/400) qui est interprété complétement par la navigateur sur le poste client:

par exemple

voici un texte en <b>GRAS</b> dont une partie est <font color="#FF0000">
rouge</font><br>(suivi d'un passage &agrave; la ligne)

s'affiche :

voici un texte en GRAS dont une partie est rouge
(suivi d'un passage à la ligne)



Très vite il a fallut insérer dans ces pages HTML des données entreprise (commandes en attente, stock disponible etc...).
Pour cela la norme initiale fut CGI, qui permet l'appel d'un programme sur le serveur, chargé de générer du HTML en réponse. La technique est assez rugueuse mais cela fonction (sur l'AS/400 avec des programmes C ou RPG).

Pour Utiliser CGI en RPG, vous disposez des API suivantes (GAP4 Uniquement)

  • QtmhGetEnv lire le contenu d'une variable d'environnement
  • QtmhRdStin             lire STDIN (le flot en entré)
  • QtmhCvtDb découper STDIN suivant le format d'un fichier BD
  • QtmhWrStout écrire dans STDOUT (le flot en sortie)
    vous devez gnérer un flot commencant par :
    - "content-type : text/html", suivi par du flot HTMLà afficher.
    - "location : http://uuuuuuu", uuuuu étant l'adresse du fichier à afficher (l'url)

 

Pour alléger l'écriture de pgm CGI, la plupart des plates-formes proposent des langages de script ou l'on mélange dans un fichier texte, du HTML, du code (propriétaire) et des ordres d'accès à la base.
Le fournisseur proposant un pgm CGI déjà écrit traitant ces fichiers en fournissant au navigateur la page HTML après avoir remplacé les ordres d'accès aux données par les données elle même.

 

Cela s'appelle PHP dans le monde linux (souvent associé à la base MYSQL), ASP pour Microsoft (avec IIS) et Net.Data avec les bases DB2 chez IBM.

Net.Data est basé sur la notion de section, une section représenatnt soit un page HTML
(un fichier Net;Data contenant donc plusieurs pages) ou une fonction à exécuter (SQL principalement)

Exemple :

%{================================================================%}
%{=                MACRO NET.DATA                                =%}
%{=                                                              =%}
%{= affichage d'une liste sans sélection (sans page d'appel)     =%}
%{=                                                              =%}
%{= But général : afficher la liste des appellations    (BDVIN1) =%}
%{================================================================%}             
%{****************************************************************%}
%{* SQL1: génère la liste des appellations dans un  tableau HTML *%}
%{****************************************************************%}
%function (DTW_SQL) Fsql1() {
   %{* Requête SQL *%}
   %{*--------------*%}
      select Appellation, Region_code from BDVIN1.Appellations
             order by Appellation
             fetch first 50 rows only
   %{* traitement du résultat *%}
   %{*------------------------*%}
   %report{
     <table border ="1"> 
     <tr> 
     <th><b>Appellation</th>
     <th>Region_code</th>
     </tr>
     {* pour chaque ligne retournée *%}
     %{*-----------------------------*%} 
          %row{
               <tr>
               <td>$(V1)</td>
               <td>$(V2)</td>
               </tr>
          %} 
    </table>
    %}
%}
%{****************************************************************%}
%{*   PAGE1: page HTML liste des appellations (utilise SQL1)     *%}
%{****************************************************************%}
%html (page1) {
  <html>
   <body>
     <p align="center">
     <font size="5" face = "Arial"><b>LISTE des APPELLATIONS<br></b></font>
     </p>
        @Fsql1()
     <BR>
   </body>
 </html>
%}

Affiche la liste des 50 premieres appellations vinicoles, trièes par nom.

  • page1 est la page HTML à afficher, (@Fsql1 sera remplacé par le résultat produit, c'est à dire la liste elle même.
  • Fsql1 est la fonction SQL, lancant l'ordre Select et mettant en page le résultat.

 

Pour terminer, l'état de l'art est aujourd'hui de travailler dans une architecture N tiers, c'est à dire en découplant le serveur de traitement (les pgm souvent placés avec le serveur WEB) des données (pouvant être situées sur un serveur éloigné).

Cette technique est implémentée avec les serveurs d'application ou serveurs de servlet.

 

Il s'agit d'écrire des programmes JAVA s'exécutant sur le serveur et non sur le poste client , le serveur d'application assurant le lien entre le serveur WEB et la JVM (machine virtuelle java).Ces programmes java pouvant être des classes autonomes (servlet) générant du HTML


ou contenus dans des pages JSP : pages HTML faisant références à des objets externes [des beans].

Les pages JSP permettant d'intégrer du HTML (conçu par un graphiste) et du code JAVA (écrit par un développeur) dans un même fichier,
ce mélange étant reconnu par les principaux éditeurs : Dreamweaver de Macromédia, IBM Websphere Studio, etc ....)

 


Aujourd'hui,

Le produit Webfacing permet d'exécuter vos applications RPG & Cobol sur le Web.

Pour cela vos écrans 5250 sont transformés en pages JSP et les servlets doivent être exécutées sur le serveur par un moteur de servlets.


En attendant TOMCAT (non disponible à la sortie de la V5R10) le seul moteur de servlet possible est W.A.S 3.5.(ou Websphere version 3.5)

TOMCAT est arrivé en cours de version et peut faire fonctionner vos pages JSP générées par WEBFACINC, voyez la configuration Apache/Tocmcat


 

Il vous faut d'abord obtenir les CD de Websphere Application Serveur 3.5 Standard Edition et l'installer,
(pour cela il faut lancer un SHELL par strsqh) et lancer la procédure d'installation écrite en JAVA.
Cette dernière copie un savf sur votre AS/400 à partir du CD et installe le produit.

puis le mettre à jour au niveau 3.5.4 avec les group PTF suivants :

ensuite il faut installer la console sur un poste Windows ou Unix et la mettre au niveau 3.5.4
(les correctifs sont sur l'AS/400 dans le répertoire /QIBM/ProdData/WebASadv/temp)

le détail de l'installation de la version 3.5.4 est disponible sur le site de documentation IBM.

 

Ceci étant fait (OUF !!) il vous faut démarrer le serveur sur l'AS/400 par:

 

vous devez voir apparaître un job QEJBADMIN

consultez alors l'historique du travail jusqu'à voir le denier message :

et enfin, pour vérifier que tout marche bien, lancez la console Websphere

 

ce qui doit vous afficher :

 

Pendant ce temps, modifier la configuration de votre serveur WEB à l'aide de l'administration graphique :

ce qui doit générer cette série d'instructions :

(n'oubliez pas d'arrêter et de relancer votre serveur Web)

 


Cette première étape étant terminée, il nous faut maintenant nous attaquer à notre premier projet.

pour cela, lancez Webfacing et choisissez Webfacing Project

ensuite, après avoir indiqué une bibliothèque, sélectez un ou plusieurs membre source (DSPF)

l'étape d'après consiste à saisir la commande CL permettant de lancer le programme utilisant le DSPF en question.

 

Pour terminer cette étape, choisissez un style :

Voilà, c'est terminé.

il vous faut ensuite, exporter votre projet sous WAS (c'est à dire sur l'AS/400) par project/export

vous prendrez "file system"

et indiquerez l'emplacement permettant d'atteindre /QIBM/UserData/WebASAdv/default/host/default_host sur l'AS/400
(ici Q: correspond à un partage Netserver de QIBM)

reprenez, pour continuer notre configuration, la console Websphere et choisissez la tâche
Création d'une application Web

indiquez le nom de l'application (il faut cocher servlet servis par noms de classe )

indiquer ensuite l'instance Websphere (par défaut : Default Servlet Engine)

puis le chemin de l'application (forcement dans /QIBM/UserData/WebASAdv/default/host/default_host)

les chemins d'accès aux classes

et démarrer cette application, depuis la console.

voilà, votre application Webfacing est prête !!!

A noter, la manip et la configuration sont rigoureusement identiques avec WAS 3.5 sur plateforme NT.


pour utiliser Webfacing

1/ vérifier que Webfacing est bien lancé par STRTCPSVR *WEBFACING

nous allons donc lancer RPG4I07 qui sur une session 5250 affiche ceci :

2/ lancez votre navigateur (INTERNET EXPLORER UNIQUEMENT !!!)

et saisissez comme URL :

on vous affiche la fenêtre suivante (qu'il faudra reprendre avec un éditeur HTML)

puis, quand vous lancez le programme : (temps de réponse en fonction de votre AS/400) :

et

vous utilisez des pages JSP, contenant des servlets qui dialoguent avec Webfacing, ce dernier lance votre programme dans QINTER avec une device fictive et dialogue via DTAQ.

le dialogue WAS / Webfacing se déroulant à base de sockets, ce qui explique que WAS puisse si facilement se trouver sur un serveur tiers (frontal).


 

Copyright © 1995,2002 VOLUBIS