dhs@orbits.com
. Par construction du language, les variables d'environnement du système ne sont pas facilement accessibles au programmeur Java. Par ailleurs, le JDK (Java Development Kit) rend impossible l'invocation directe d'un programme, ce qui ne facilite pas le traitement standard par CGI des formulaires HTML. On peut contourner ces limitations de plusieurs façons. Vous saurez comment j'ai implémenté l'une d'elles en poursuivant votre lecture.
Je considère que vous êtes familiarisé avec les principes qui sous-tendent HTML et CGI, et que vous possédez un minimum de connaissances de votre serveur HTTP. La programmation Java ne devra pas non plus vous être étrangère, à défaut de quoi ce qui va suivre ne vous sera pas très parlant.
http://www.orbits.com/software/Java_CGI.html est l'adresse où vous êtes sûr de trouver la dernière version de ce document.
L'archive ftp://ftp.orbits.com/pub/software/java_cgi-0.4.tgz contient la dernière version du package décrit ici. Vous y trouverez également le source SGML de ce document (en anglais bien sûr).
La distribution du package suit les recommandations de la LGPL (GNU Library General Public License). Ce document peut être distribué selon les termes gouvernant le copyright des Linux HOWTO.
Merci de bien vouloir mentionner le document http://www.orbits.com/software/Java_CGI.html si vous utilisez ce logiciel. Vous permettrez ainsi à d'autres d'accéder aux classes Java CGI.
Ce document a été mis au point avec la bienveillance de Stellar Orbits Technology Services. Si vous voulez savoir ce que nous faisons, allez voir à http://www.orbits.com/.
Cette section vous conduira à travers l'installation de mon package Java CGI, et sera agrémentée d'explications généreuses qui vous permettront de mesurer les conséquences de vos actes. Si vous souhaitez simplement installer les programmes, sans vous soucier du pourquoi et du comment, sautez directement à la section Configuration du serveur (version courte).
Ce logiciel devrait fonctionner sur n'importe quel système à la Unix
sur lequel se trouvent au moins installés le JDK et un serveur
Web. J'utilise pour ma part un Linux Debian sur lequel tourne
le démon HTTP apache. Si cela ne fonctionne pas sur votre
installation, n'hésitez pas à me contacter à
dhs@orbits.com
.
Malheureusement, l'interpréteur Java n'est pas particulièrement économe en mémoire ; si vous devez utiliser souvent des programmes de CGI en Java, quelques mégaoctets de RAM supplémentaires ne seront pas de trop.
Le logiciel que j'ai écrit s'appelle Java CGI (Note: au cas où vous ne l'auriez pas encore remarqué (NdT)). Vous pouvez le récupérer par ftp anonyme à l'adresse ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz. (Le numéro de version peut avoir changé.)
Choisissez un répertoire où vous pourrez tranquillement déployer
l'archive du package. Je suggère généralement /usr/local/src
.
Désarchivez ensuite à l'aide de la commande (Note : les
"lignuxeurs" préfèreront sans doute le plus élégant tar
xzvf java_cgi-0.4.tgz
(NdT).) :
gzip -dc java_cgi-0.4.tgz | tar -xvf -Cela aura pour effet de créer un répertoire de nom
java_cgi-0.4
. Vous y trouverez les fichiers auxquels
nous feront référence dans la suite. (Si le numéro de version a
changé, suivez les instructions qui s'y trouvent à partir de
maintenant).
Vous allez devoir décider de l'endroit où vous souhaitez que les
programmes Java CGI résident. La plupart du temps, vous aurez intérêt
à les placer dans un répertoire parallèle au répertoire
cgi-bin
. La configuration de mon serveur apache
indiquait /var/web/cgi-bin
comme répertoire cgi-bin
par défaut. J'ai donc placé mes programmes Java CGI dans le répertoire
/var/web/javacgi
. Il n'est pas conseillé de placer ces
programmes dans l'un des répertoires référencés par
CLASSPATH
. Éditez le Makefile pour refléter la
configuration de votre système. En tant qu'utilisateur root, lancez
make install
. Cela aura pour effet de compiler vos programmes
Java, modifier le script java.cgi
pour qu'il s'adapte à votre
système, et installer les programmes au bon endroit. Si vous souhaitez
également disposer d'une version HTML de ce document, et d'un document
test en HTML, lancez plutôt make all
.
Les documents javacgitest.html
, javaemailtest.html
et javahtmltest.html
devraient maintenant être installés. Si
vous avez choisi make all
, ils se trouveront dans le
répertoire spécifié par la variable WEBDIR du Makefile
. Dans
le cas contraire, vous pouvez lancer make test
pour les créer
à partir de javacgitest.html-dist
,
javaemailtest.html-dist
et javahtmltest.html-dist
.
Après vous être assuré que votre installation s'était déroulée
correctement, vous pouvez supprimer les fichiers
CGI_Test.class
, Email_Test.class
et
HTML_Test.class
de votre répertoire JAVACGI, ainsi que
javacgitest.html
, javaemailtest.html
et
javahtmltest.html
de votre répertoire WEBDIR. Ils montrent
les informations utilisateurs auxquelles le serveur est normalement
seul à avoir accès.
gzip -dc java_cgi-0.4.tgz | tar -xvf -(Si le numéro de version de la distribution a changé, utilisez les instructions qui s'y trouvent à partir de maintenant.)
Makefile
que vous trouverez dans le nouveau
répertoire java_cgi-0.4
pour qu'il reflète la
configuration de votre système.make install
. Cela aura pour effet
de compiler les programmes Java, prendre en compte les informations
propres à votre système, et installer les divers fichiers.
Si vous souhaitez disposer d'une version HTML de ce document, ainsi
que d'un document test en HTML, lancez plutôt make all
.
L'exécution d'un programme Java depuis un serveur Web pose deux types de problèmes majeurs :
Il faut lancer l'interpréteur Java et fournir la classe principale (le programme à exécuter) sur la ligne de commande. Les formulaires HTML ne permettent pas d'envoyer directement une ligne de commande au serveur Web.
Toutes les variables d'environnement requises par le programme Java
doivent lui être passées explicitement. Il n'existe pas de méthode
similaire à la fonction getenv()
de C .
Pour contourner ces obstacles, j'ai écrit une script shell de CGI, qui fournit les informations nécessaires à l'interpréteur Java.
Ce script de shell se charge de l'interaction entre le démon HTTP et le programme Java CGI que vous souhaitez utiliser. Il extrait le nom du programme que vous souhaitez lancer à partir des données fournies par le serveur. Il récupère ensuite toutes les valeurs d'environnement dans un fichier temporaire. Enfin, il lance l'interpréteur Java en lui passant le nom du fichier contenant les informations d'environnement, ainsi que le nom du programme à exécuter.
Le script java.cgi
a été configuré et installé selon les
procédure décrites à la section
Decide On Your Local Path Policies.
Mes formulaires qui utilisent les programmes Java CGI spécifient l'action à effectuer de la façon suivante :