Java CGI HOWTO di David H. Silber dhs@orbits.com v0.4, 18 Novembre 1996 Questo HOWTO spiega come configurare il vostro server per accogliere programmi CGI scritti in Java e come utilizzare Java per scrivere pro grammi. Nonostante gli HOWTO abbiano come obiettivo l'utilizzo di Linux come sistema operativo, questo documento si rivolge a tutti gli utilizzatori indipendentemente dalla versione di unix usata. La traduzione italiana è stata curata da Luca Rossetti (lukaros@tin.it). ______________________________________________________________________ Indice Generale 1. Introduzione 1.1 Conoscenze necessarie 1.2 Dove trovare questo Documento 1.3 Il Pacchetto Software 1.4 Inserzione senza Pudore 2. Come Configurare il Vostro Server per lanciare Programmi Java CGI (con Spiegazioni) 2.1 Requisiti di Sistema 2.2 Il Software Add-On di Java CGI 2.3 Come decomprimere il Pacchetto Sorgente 2.4 Le Directory di Installazione 2.5 Come Testare l'installazione. 3. Come Configurare il Vostro Server per lanciare Programmi Java CGI (forma abbreviata) 4. Come Eseguire un Programma Java CGI 4.1 Ostacoli quando si lanciano Programmi Java sotto il Modello CGI 4.1.1 Non si possono lanciare programmi Java come normali eseguibili. 4.1.2 Con Java non si ha un accesso generale alle variabili d'ambiente. 4.2 Superare i Problemi lanciando Programmi Java CGI 4.2.1 Lo script java.cgi. 4.2.2 Come Utilizzare il java.cgi da un form HTML. 5. Utilizzo delle Classi Java. 5.1 CGI 5.1.1 Sintassi della Classe 5.1.2 Descrizione della Classe 5.1.3 Sommario dei membri della Classe 5.1.4 Vedi Anche 5.1.5 CGI() 5.1.6 getNames() 5.1.7 getValue() 5.2 CGI_Test 5.2.1 Sommario dei membri della Classe 5.2.2 Vedi Anche 5.2.3 main() 5.3 Email 5.3.1 Sintassi della Classe 5.3.2 Descrizione della Classe 5.3.3 Sommario dei membri della Classe 5.3.4 Vedi Anche 5.3.5 Email() 5.3.6 send() 5.3.7 sendTo() 5.3.8 subject() 5.4 Email_Test 5.4.1 Sommario dei membri della Classe 5.4.2 Vedi Anche 5.4.3 main() 5.5 HTML 5.5.1 Sintassi della Classe 5.5.2 Descrizione della Classe 5.5.3 Sommario dei membri della Classe 5.5.4 Vedi Anche 5.5.5 HTML() 5.5.6 author() 5.5.7 definitionList() 5.5.8 definitionListTerm() 5.5.9 endList() 5.5.10 listItem() 5.5.11 send() 5.5.12 title() 5.6 HTML_Test 5.6.1 Sommario dei membri della Classe 5.6.2 Vedi Anche 5.6.3 main() 5.7 Text 5.7.1 Sintassi delle Classi 5.7.2 Descrizione delle Classi 5.7.3 Member Summary 5.7.4 Vedi Anche 5.7.5 add() 5.7.6 addLineBreak() 5.7.7 addParagraph() 6. Piani Futuri 7. Varianti 7.1 Varianti da 0.3 a 0.4 7.2 Varianti da 0.2 a 0.3 7.3 Varianti da 0.1 a 0.2 ______________________________________________________________________ 11.. IInnttrroodduuzziioonnee A causa del metodo con cui Java è stato scritto, il programmatore non ha un accesso molto semplice alle variabili d'ambiente del sistema. Inoltre, per le modalità con cui il Java Development Kit (JDK) è stato costruito, per lanciare un programma è necessario utilizzare segnali multipli, cosa che non si addice molto alla metodologia di operazioni dello standard HTML forms/CGI. Esistono vari metodi per eliminare queste limitazioni, ed io ho implementato uno di questi. Il seguito di questo documento ne spiega tutti i dettagli. 11..11.. CCoonnoosscceennzzee nneecceessssaarriiee Si assume che abbiate una conoscenza generale del linguaggio HTML e dei concetti legati al CGI e almeno una minima conoscenza del vostro server HTTP. Dovreste anche conoscere la programmazione in Java o molto di quanto leggerete non avrà granché senso. 11..22.. DDoovvee ttrroovvaarree qquueessttoo DDooccuummeennttoo La versione più recente di questo documento si può trovare presso http://www.orbits.com/software/Java_CGI.html. 11..33.. IIll PPaacccchheettttoo SSooffttwwaarree La versione più recente del pacchetto software descritto può essere scaricata mediante FTP anonimo presso ftp://ftp.orbits.com/pub/software/java_cgi-0.4.tgz.La distribuzione del pacchetto include anche un sorgente SGML di questo documento. Il pacchetto è distribuito nei termini della GNU Library General Public License. Questo documento può essere distribuito nei termini della nota di copyright degli HOWTO di Linux. Se utilizzate questo software, rendete disponibile un collegamento alla pagina http://www.orbits.com/software/Java_CGI.html, cosicché altre persone possano trovare le classi CGI Java. 11..44.. IInnsseerrzziioonnee sseennzzaa PPuuddoorree Questo documento vi proposto viene grazie a SStteellllaarr OOrrbbiittss TTeecchhnnoollooggyy SSeerrvviicceess. (Visitate il nostro sito http://www.orbits.com/ per vedere di cosa ci occupiamo.) 22.. CCoommee CCoonnffiigguurraarree iill VVoossttrroo SSeerrvveerr ppeerr llaanncciiaarree PPrrooggrraammmmii JJaavvaa CCGGII ((ccoonn SSppiieeggaazziioonnii)) Questa sezione vi guiderà nella installazione dei miei pacchetti _J_a_v_a _C_G_I con spiegazioni approfondite per farvi capire quali siano gli effetti di tutte le vostre azioni. Se volete solo installare i programmi e non vi interessano tutti i motivi ed i perché, saltate alla sezione ``Come Configurare il Vostro Server per lanciare Programmi Java CGI (forma abbreviata)''. 22..11.. RReeqquuiissiittii ddii SSiisstteemmaa Questo software dovrebbe funzionare su un qualsiasi web server unix- like che ha il Java Development Kit installato. Io lo utilizzo su un sistema con _D_e_b_i_a_n _L_i_n_u_x che usa _a_p_a_c_h_e come demone HTTP. Se non dovesse funzionare sul vostro server, contattatemi presso dhs@orbits.com. Sfortunatamente, l'interprete run-time di Java sembra essere veramente ingordo di memoria -- potreste avere la necessità di installare qualche altro megabyte di RAM nel vostro server se vorrete usare estensivamente le capacità dei programmi Java CGI. 22..22.. IIll SSooffttwwaarree AAdddd--OOnn ddii JJaavvaa CCGGII Il software di cui ho scritto il codice è chiamato _J_a_v_a _C_G_I. Potete scaricarlo dal sito ftp: ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz. (Il numero della versione potrebbe essere cambiato). 22..33.. CCoommee ddeeccoommpprriimmeerree iill PPaacccchheettttoo SSoorrggeennttee Scegliete opportunamente una directory per decomprimere il pacchetto. (Se non avete ancora fissato un posto standard in cui installare i pacchetti software, suggerisco di utilizzare /usr/local/src.) Per decomprimere il file contenente la distribuzione si utilizza il seguente comando: gzip -dc java_cgi-0.4.tgz | tar -xvf - Questo comando creerà una directory chiamata java_cgi-0.4. All'interno di questa directory troverete tutti i file a cui farò riferimento nel resto del documento. (Se il numero della versione è cambiato, consul tate le istruzioni contenute nella distribuzione per continuare l'installazione). 22..44.. LLee DDiirreeccttoorryy ddii IInnssttaallllaazziioonnee A questo punto dovete decidere dove volete che i vostri programmi Java CGI risiedano. Generalmente si mettono in una directory in parallelo con la directory cgi-bin. Il mio server _a_p_a_c_h_e è configurato per usare /var/web/cgi-bin come directory cgi-bin, per cui uso /var/web/javacgi come la directory in cui inserire programmi Java. Probabilmente è meglio non mettere i vostri programmi Java CGI nelle directory esistenti nel CLASSPATH. Modificate il Makefile per fare in modo che esso che si adatti alla configurazion del vostro sistema. Come root lanciate make install. Questo compilerà i programmi Java, modificate lo script java.cgi per fare in modo che si adatti al vostro sistema ed installi i programmi nei posti giusti. Se invece volete avere la versione HTML di questo documento e una pagina HTML di test in aggiunta, lanciate make all. 22..55.. CCoommee TTeessttaarree ll''iinnssttaallllaazziioonnee.. Assieme alla distribuzione trovere dei documenti HTML chiamati javacgitest.html, javaemailtest.html e javahtmltest.html. Se avete installato tutto con make all come menzionato nella sezione precedente, i documenti saranno nella directory che avete specificato come WEBDIR nel Makefile. Se non lo avete fatto, potrete lanciare make test per costruirli da javacgitest.html-dist, javaemailtest.html- dist e javahtmltest.html-dist. Quando siete sicuri che la vostra installazione sia andata a buon fine, potrete decidere se rimuovere CGI_Test.class, Email_Test.class e HTML_Test.class dalla vostra directory JAVACGI e javacgitest.html, javaemailtest.html e javahtmltest.html dalla vostra directory WEBDIR visto che essi mostrano alcune informazioni relative all'utente che sono normalmente disponibili solo al server. 33.. CCoommee CCoonnffiigguurraarree iill VVoossttrroo SSeerrvveerr ppeerr llaanncciiaarree PPrrooggrraammmmii JJaavvaa CCGGII ((ffoorrmmaa aabbbbrreevviiaattaa)) · Scaricate il pacchetto _J_a_v_a _C_G_I dal sito ftp ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz. (Il numero della versione potrebbe essere cambiato). · Decomprimete il file contenente la distribuzione utilizzando il comando: gzip -dc java_cgi-0.4.tgz | tar -xvf - (Se il numero della versione è cambiato, consultate le istruzioni con tenute nella distribuzione per continuare l'installazione). · Controllate il contenuto del Makefile che troverete all'interno della directory java_cgi-0.4 appena creata e modificatelo opportunamente per il vostro sistema. · Come root, lanciate make install. Questo comando compilerà i programmi Java, applicherà le informazioni che avete specificato per il vostro sistema ed installerà tutti i file. Se invece desiderate consultare la documentazione in formato HTML e visionare un documento HTML di test, lanciate make all. · Giunti a questo punto dovreste essere pronti per iniziare. 44.. CCoommee EEsseegguuiirree uunn PPrrooggrraammmmaa JJaavvaa CCGGII 44..11.. OOssttaaccoollii qquuaannddoo ssii llaanncciiaannoo PPrrooggrraammmmii JJaavvaa ssoottttoo iill MMooddeelllloo CCGGII Esistono due problemi principali nel lanciare un programma Java da un server Web: 44..11..11.. NNoonn ssii ppoossssoonnoo llaanncciiaarree pprrooggrraammmmii JJaavvaa ccoommee nnoorrmmaallii eesseegguuiibbiillii.. Bisogna lanciare l'interprete run-time di Java e fornire la classe iniziale (programma da eseguire) in linea di comando. Con un form HTML, non esiste nessuna precauzione nell'inviare una linea di comando al server web. 44..11..22.. CCoonn JJaavvaa nnoonn ssii hhaa uunn aacccceessssoo ggeenneerraallee aallllee vvaarriiaabbiillii dd''aammbbii eennttee.. Ogni variabile d'ambiente necessaria al programma Java deve essere passata esplicitamente. Non esiste un metodo simile alla funzione CC getenv(). 44..22.. SSuuppeerraarree ii PPrroobblleemmii llaanncciiaannddoo PPrrooggrraammmmii JJaavvaa CCGGII Per eliminare questi ostacoli, ho scritto un programma CGI di shell che fornisce le informazioni necessarie all'interprete Java. 44..22..11.. LLoo ssccrriipptt jjaavvaa..ccggii.. Questo script di shell si occupa dell'interazione tra il demone HTTP daemon e il programma Java CGI che dovete usare. Estrae il nome del programma che volete lanciare dai dati forniti al server e raccoglie tutti i dati d'ambiente in un file temporaneo. Quindi lancia l'interprete run-time di Java con il nome del file di informazioni d'ambiente e il nome del programma aggiunto alla linea di comando. La spiegazione di come viene configurato ed installato lo script java.cgi si trova nella sezione ``Le Directory di Installazione''. 44..22..22.. CCoommee UUttiilliizzzzaarree iill jjaavvaa..ccggii ddaa uunn ffoorrmm HHTTMMLL.. I forms che usano i programmi Java CGI specificano delle azioni come di seguito formalizzato: