Enterprise Java per Linux HOWTO Greg Wilkins gregw@mortbay.org originale di Gary Meyer gary@meyer.net v0.2, 2001-11-07 __________________________________________________________________ Come predisporre un ambiente Enterprise Java in Linux che comprenda un Java Development Kit ed un Web server che supporti i Java servlet, che acceda ad un database tramite JDBC, e che supporti l'uso degli Enterprise Java Beans (EJB). __________________________________________________________________ 1. Introduzione 1.1 Generalità La stesura di questo documento ha avuto inizio il gennaio 1999 da parte di Gary Meyer ( [1]gary@meyer.net) dopo molte settimane di installazioni di vari prodotti Enterprise Java open source e proprietari per Linux. È definito "Enterprise Java" ciò che usa le API Java Enterprise. Alcuni aggiornamenti sono stati aggiunti da Greg Wilkins ( [2]gregw@mortbay.org) nel novembre 2001 ciò nondimeno parti del documento sono ancora obsolete. 1.2 Pubblico Questo HOWTO è inidirizzato a professionisti del software che siano interessati a valutare, sviluppare o distribuire Enterprise Java per Linux. Si assume che il lettore abbia una limitata conoscenza ed esperienza di Linux o di Java. 1.3 Nuove versioni La versione più recente di questo documento può essere trovata sul sito del Linux Documentation Project: [3]http://linuxdoc.org/HOWTO/Enterprise-Java-for-Linux-HOWTO.html 1.4 Copyright e licenza Questo documento è un Copyright (c) 1999-2001 di Gary Meyer e Greg Wilkins. La copia, distribuzione e/o modifica di questo documento è permessa entro i termini della licenza GNU Free Documentation License, versione 1.1 o di una qualsiasi successiva versione pubblicata dalla Free Software Foundation; senza "Sezioni non modificabili", senza "Testi copertina", e senza "Testi di ultima di copertina". Una copia della licenza è disponibile all'indirizzo [4]http://www.gnu.org/copyleft/fdl.html 1.5 Liberatoria I suggerimenti contenuti in questo documento sono stati forniti per aiutare ad avere il più velocemente possibile un ambiente Java Enterprise in Linux attivo e funzionante. I suggerimenti non sono raccomandazioni o adesioni a particolari prodotti. Dopo aver familiarizzato con le scelte disponibili si potranno fare proprie valutazioni di prodotto e si potrà determinare quali opzioni siano migliori per il proprio scopo. Per lo scopo di questo HOWTO, "Enterprise Java" definisce l'uso delle API Java Enterprise. Questo HOWTO non affronta la scalabilità, la disponibilità, la gestibilità ed altri simili aspetti del software che sono spesso associati alla parola "enterprise". 1.6 Future potenziali sezioni Questo HOWTO è focalizzato sugli aspetti più popolari dell'Enterprise Java. Potrebbero essere aggiunte a questo HOWTO le seguenti sezioni. * Ambienti di sviluppo integrato (IDE) che consentano l'uso dell'Enterprise Java per Linux * Supporto per Java Naming and Directory Interface (JNDI) * Supporto per Java Mail API (JMAPI) * Supporto per Java Transaction Service (JTS) * Supporto per Java Interface Definition Language (JIDL) * Supporto per Java Messaging Service (JMS) * Supporto per Common Object Request Broker Architecture (CORBA) Interessati a scrivere una sezione? Contattare l'autore, Gary Meyer, presso ( [5]gary@meyer.net). 1.7 Altre risorse Il sito web di App-Serv Center all'indirizzo [6]http://www.app-serv.com/. Java Enterprise in a Nutshell di David Flanagan ed altri all'indirizzo [7]http://www.oreilly.com/catalog/jentnut/. 1.8 Feedback Si prega di sottoporre tutte le aggiunte e le correzioni all'autore, Gary Meyer, presso ( [8]gary@meyer.net). 2. Come predisporre il Java Development Kit Ci sono molti Java Development Kit disponibili per Linux. Questi includono: * [9]Blackdown JDK * [10]IBM Java Developer Kit * [11]Sun J2SE * [12]Kaffe Se si volesse provare solo un JDK, suggerirei inizialmente di provare il Sun J2SE, a meno che richiesto diversamente da particolare software in uso o che si abbia intenzione di usare. Inoltre, se si è interessati ad utilizzare una implementazione open source, sarà necessario ricorrere a Kaffe. 2.1 Blackdown JDK Generalità Blackdown JDK è un port del Sun JDK su Linux. Al tempo della scrittura di questo documento, il Blackdown JDK è allineato con il JDK 1.2.2 sull'architettura Intel e con il JDK 1.1.8 su PowerPC. Nel Dicembre 1999, Sun ha annunciato la disponibilità della piattaforma Java 2, Standard Edition (J2SE) su Linux. Questo rilascio Sun ha un impatto significativo su Blackdown perché Blackdown è un port. In un comunicato stampa, Sun ha affermato, "L'annuncio di questa settimana non sarebbe stato possibile senza la collaborazione di Blackdown, un gruppo di sviluppatori ed appassionati sparsi per il mondo. Sin dalla sua fondazione, Blackdown è stato un fornitore di tecnologia Java per la piattaforma Linux. Il loro continuo sforzo per diversi anni ha gettato le fondamenta per il rilascio del port della piattaforma Java 2 per Linux; in particolare il loro sforzo è stato determinante per il successo di questo rilascio". Inoltre, il comunicato stampa della Sun prosegue con, "Blackdown.org continua ad essere una preziosa fonte di tecnologia Java per Linux, compresi i rilasci di JDK 1.1.x". Download Il JDK Blackdown può essere ottenuto da [13]http://www.blackdown.org. Dalla pagina iniziale di Blackdown, selezionare l'opzione download ed un sito mirror. Selezionare la versione desiderata del JDK. Se il software che si vuole utilizzare non indica una specifica versione, suggerirei di usare la più recente, che al momento della stesura di questo documento è la JDK 1.2.2. Selezionare l'architettura della macchina su cui si stà installando. Per l'architettura Intel, selezionare i386. Selezionare la "release candidate" desiderata. Se il software che si vuole utilizzare non ne indica una specifica, suggerirei di usare la più recente o la versione finale se disponibile. Per il JDK Blackdown, è probabile siano disponibili un certo numero di file presenti in diversi formati d'impacchettamento. Inoltre si deve essere sicuri di avere il supporto per la giusta libreria libc per la propria distribuzione Linux. Tra i file disponibili sono compresi: * jdk - Il Java Development Kit contiene tutto il necessario per compilare, eseguire, e fare il debug di Java. Non contiene convertitori per i caratteri internazionali. * jre - Il Java Runtime Environment, con inclusi i convertitori per i caratteri internazionali. * rt - Un Java Runtime Environment minimo che non include i convertitori per caratteri internazionali. * i18n - Le mappe dei font per l'internazionalizzazione ed un JAR contenente i convertitori di caratteri internazionali. * native - Ulteriori binari che forniscono supporto nativo per i thread. Suggerirei di scaricare solo il jdk per sviluppare Java in inglese. Quando si scaricano i file di Blackdown, si può scegliere tra libc5 e glibc e potenzialmente anche una specifica versione di glibc. Tra le scelte di libc sono incluse: * libc5 - La più vecchia, ed ancora la più comune, libc di Linux è la libc5. * glibc - La nuova libc di Linux. Se si sta usando una distribuzione più recente di Linux, si avrà con molta probabilità glibc. Io suggerisco di provare in prima istanza glibc. Installazione Suggerirei d'installare i file nella directory /usr/local. Dopo aver scaricato i file, eseguire: mkdir /usr/local/blackdown mv jdk* /usr/local/blackdown Se si è scaricato il file in formato tarball, eseguire: tar zxvf [filename].tar.gz Dove [filename] è il nome del file. Nella directory /usr/local/blackdown si dovrebbe vedere una directory chiamata jdk1.2.2. L'esempio di cui sopra mostra la versione candidata al rilascio 3 per l'architettura Intel del JDK 1.2.2. Sostituire il nome del file, il numero della versione, il numero di versione candidata per il rilascio e l'architettura in modo appropriato. Si dovrà aprire ogni file del pacchetto di distribuzione nella maniera sopra indicata. Predisporre l'ambiente Le variabi d'ambiente da impostare sono: * JAVA_HOME * PATH * CLASSPATH La variabile d'ambiente JAVA_HOME fa riferimento alla directory di base del JDK installato. Impostare la variabile d'ambiente JAVA_HOME con la directory dove è stata appena installata la versione del JDK Blackdown. export JAVA_HOME=/usr/local/blackdown/jdk1.2.2 La directory $JAVA_HOME/bin contiene il compilatore Java (javac) e la Java Virtual Machine (java), come anche altri programmi necessari per lo sviluppo. Aggiungere $JAVA_HOME/bin al PATH. export PATH=$JAVA_HOME/bin:$PATH Notare che $JAVA_HOME/bin è stato aggiunto al principio del PATH in modo che venga utilizzato il JDK installato piuttosto che un qualche JDK che potrebbe essere già stato incluso nella distribuzione Linux in uso. Per avere conferma che il PATH sia correttamente impostato, si controlli quali compilatore Java e JVM siano installati. which javac which java L'output dovrebbe far riferimento a javac e java nella directory $JAVA_HOME/bin. La variabile d'ambiente CLASSPATH fa riferimento a tutti i JAR ed a tutte le directory che sono necessarie per la compilazione e l'esecuzione dei programmi Java. Per il JDK 1.2.2, non è necessario inizialmente aggiungere alcun JAR al proprio CLASSPATH. I JAR possono essere inseriti in file .jar o in file .zip. export CLASSPATH=$CLASSPATH:. Verifica dell'installazione Si è ora in grado di compilare ed eseguire una semplice applicazione. Creare il seguente programma. class HelloWorld { public static void main (String[] args) { System.out.println("Hello, World!"); } } Compilare il programma con il compilatore Java. javac HelloWorld.java Se il compilatore produce errori si controlli la sintassi e si verifichino le variabili PATH e CLASSPATH. Eseguire il programma con la JVM. java HelloWorld Se la JVM produce errori, si verifichino le variabili PATH e CLASSPATH. Si dovrebbe ottenere il seguente output: Hello, World! Congratulazioni, si è installato, configurato e verificato un ambiente per il JDK Blackdown per Linux. Maggiori informazioni Per maggiori informazioni sul JDK Blackdown, si veda il sito di Blackdown all'indirizzo [14]http://www.blackdown.org. È disponibile un'eccellente FAQ. 2.2 IBM Java Developer Kit Generalità Il Java Developer Kit di IBM ed il suo ambiente di esecuzione (Runtime Environment) ha passato il test della Sun sulla compatibilità Java ed include l'ultima versione in manutenzione (dal sito di IBM). Al tempo della redazione di questo documento, Il Java Developer Kit IBM è allineato con il JDK 1.1.8 ed è disponibile solo per la piattaforma Intel. Download Il Java Developer Kit di IBM può essere ottenuto da [15]http://www.ibm.com/java/jdk/118/linux. Per scaricarlo è necessario registrarsi presso il sito IBM e acconsentire alla licenza in linea. I file disponibili includono: * ibm-jdk-l118-linux-x86.tgz - Il Java Development Kit contiene tutto il necessario per compilare, eseguire e debuggare Java. * ibm-jre-l118-linux-x86.tgz - Il Java Runtime Environment contiene tutto il necessario per eseguire Java. Considerando che si ha intenzione di fare sviluppo Java suggerirei di scaricare il file tarball ibm-jdk. Installazione Suggerirei di installare i file nella directory /usr/local. Dopo aver scaricato i file, eseguire: mkdir /usr/local/ibm mv ibm-jdk-l118-linux-x86.tgz /usr/local/ibm Si potranno quindi aprire i pacchetti di distribuzione. Per farlo digitare: tar zxvf ibm-jdk-l118-linux-x86.tgz Nella directory /usr/local/ibm si dovrebbe poter vedere la directory jdk118. L'esempio sopra fatto mostra il JDK 1.1.8 per l'architettura Intel. Si sostituiscano i nomi dei file in modo appropriato. Predisporre l'ambiente Le variabili d'ambiente da impostare sono: * JAVA_HOME * PATH * CLASSPATH La variabile d'ambiente JAVA_HOME fa riferimento alla directory di base del JDK installato. Impostare la variabile d'ambiente JAVA_HOME con la directory dove si è appena installata la versione del Java Developer Kit di IBM. La directory $JAVA_HOME/bin contiene il compilatore Java (javac) e la Java Virtual Machine (java), come anche altri programmi necessari per lo sviluppo. Aggiungere $JAVA_HOME/bin al PATH. export PATH=$JAVA_HOME/bin:$PATH Notare che $JAVA_HOME/bin è stato aggiunto al principio del PATH in modo che venga utilizzato il JDK installato piuttosto che un qualche JDK che potrebbe essere già stato incluso nella distribuzione Linux in uso. Per confermare che il PATH sia correttamente impostato, si controlli quale compilatore Java e JVM siano installati. which javac which java L'output dovrebbe far riferimento a javac e java nella directory $JAVA_HOME/bin. La variabile d'ambiente CLASSPATH fa riferimento a tutti i JAR ed a tutte le directory che sono necessarie per la compilazione e l'esecuzione dei programmi Java. Inizialmente suggerirei di aggiungere i seguente JAR al CLASSPATH. I JAR possono essere inseriti in file .jar o in file .zip. Per esempio: export CLASSPATH=$JAVA_HOME/lib/classes.zip export CLASSPATH=$CLASSPATH:. Verifica dell'installazione Ora si è in grado si compilare ed eseguire una semplice applicazione. Creare il il seguente programma. class HelloWorld { public static void main (String[] args) { System.out.println("Hello, World!"); } } Compilare il programma con il compilatore Java. javac HelloWorld.java Se il compilatore produce errori si controlli la sintassi e si verifichino le variabili PATH e CLASSPATH. Eseguire il programma con la JVM. java HelloWorld Se la JVM produce errori, si verifichino le variabili PATH e CLASSPATH. Si dovrebbe ottenere il seguente output: Hello, World! Congratulazioni, si è installato, configurato e verificato un ambiente per il Java Developer Kit di IBM per Linux. Maggiori informazioni Per maggiori informazioni sul Java Developer Kit di IBM, si veda il sito IBM dedicato a Java all'indirizzo: [16]http://www.ibm.com/java. 2.3 Kaffe Generalità Kaffe è un'implementazione open source della Java Virtual Machine e delle librerie di classi sviluppate con il metodo cleanroom. Al momento dell'estensione di questo documento, Kaffe "è per lo più conforme al JDK 1.1, ad eccezione di alcune parti mancanti." Ed "alcune parti sono già compatibili con JDK 1.2 (Java 2)" (dal sito Kaffe). È probabile che Kaffe sia già contenuto nella distribuzione Linux in uso grazie alla sua licenza open source. Download ed installazione Prima di scaricarla da Kaffe, suggerirei inizialmente di provare la Kaffe che molto probabilmente è già disponile nella distribuzione Linux in uso. In alternativa, Kaffe può essere ottenuto da [17]http://www.kaffe.org. Dalla home page di Kaffe, selezionare il rilascio più recente. Al momento della redazione di questo documento, il rilascio più recente è 1.0.5. Il numero di versione di Kaffe non ha nessun rapporto con i numeri di specifica di JDK. Predisporre l'ambiente Le variabi d'ambiente da impostare sono: * PATH * CLASSPATH Per verificare che il PATH sia correttamente impostato, si controlli quale compilatore Java e JVM vengano usati. which javac which java La variabile d'ambiente CLASSPATH fa riferimento a tutti i JAR ed a tutte le directory che sono necessarie per la compilazione e l'esecuzione dei programmi Java. Suggerirei inizialmente di aggiungere al CLASSPATH i seguenti JAR. I JAR possono essere inseriti in file .jar o in file .zip. Per esempio: export CLASSPATH=/usr/local/share/kaffe/Klasses.zip export CLASSPATH=$CLASSPATH:. Verifica dell'installazione Ora si è in grado di compilare ed eseguire una semplice applicazione. Creare il il seguente programma. class HelloWorld { public static void main (String[] args) { System.out.println("Hello, World!"); } } Compilare il programma con il compilatore Java. javac HelloWorld.java Se il compilatore produce errori si controlli la sintassi e si verifichino le variabili PATH e CLASSPATH. Eseguire il programma con la JVM. java HelloWorld Se la JVM produce errori, si verifichino le variabili PATH e CLASSPATH. Si dovrebbe ottenere il seguente output: Hello, World! Congratulazioni, si è installato, configurato e verificato un ambiente Kaffe per Linux. Maggiori informazioni Per maggiori informazioni su Kaffe, vedere il sito di Kaffe all'indirizzo [18]http://www.kaffe.org. 2.4 Sun J2SE Generalità Sun Java 2, Standard Edition (J2SE) è il rilascio per la produzione di Sun della piattaforma Java 2 per il sistema operativo Linux. Al momento dell'estensione di questo documento, J2SE è allineato con JDK 1.2.2 per l'architettura Intel. Download J2SE può essere ottenuto da: [19]http://developer.java.sun.com/developer/earlyAccess/j2sdk122. È necessario registrarsi presso Sun ed accettare i termini della licenza in linea prima di scaricare. Installazione Suggerirei d'installare i file nella directory /usr/local. Dopo aver scaricato i file, eseguire: mkdir /usr/local/sun mv jdk1_2_2rc1-linux-i386.tar.gz /usr/local/sun Si potranno allora aprire i pacchetti di distribuzione. Per farlo digitare: tar zxvf jdk1_2_2rc1-linux-i386.tar.gz Sotto la directory /usr/local/sun si dovrebbe vedere la directory jdk1.2.2. L'esempio sopra fatto mostra la versione candidata al rilascio 1 del JDK 1.2.2 per l'architettura Intel. Si sostituiscano i nomi dei file in modo appropriato. Predisporre l'ambiente Le variabili d'ambiente da impostare sono: * JAVA_HOME * PATH * CLASSPATH La variabile d'ambiente JAVA_HOME fa riferimento alla directory di base dell'installazione del JDK. Impostare la variabile d'ambiente JAVA_HOME calla directory dove si è appena installata la versione di J2SE. export JAVA_HOME=/usr/local/sun/jdk1.2.2 La directory $JAVA_HOME/bin contiene il compilatore Java (javac) e la Java Virtual Machine (java), come anche altri programmi necessari per lo sviluppo. Aggiungere $JAVA_HOME/bin al PATH. export PATH=$JAVA_HOME/bin:$PATH Notare che $JAVA_HOME/bin è stato aggiunto al principio del PATH in modo che venga utilizzato il JDK installato piuttosto che un qualche JDK che potrebbe essere già stato incluso nella distribuzione Linux in uso. Per confermare che il PATH sia correttamente impostato si controlli quali compilatore Java e JVM risultano installati. which javac which java L'output dovrebbe far riferimento a javac e java nella directory $JAVA_HOME/bin. La variabile d'ambiente CLASSPATH fa riferimento a tutti i JAR ed a tutte le directory che sono necessarie per la compilazione e l'esecuzione dei programmi Java. Per la JDK 1.2.2, inizialmente non è necessario aggiungere alcun JAR al CLASSPATH. I JAR possono essere pacchettizzati sia come file .jar che .zip. export CLASSPATH=$CLASSPATH:. Verifica dell'installazione Si è ora in grado di compilare ed eseguire una semplice applicazione. Creare il seguente programma. class HelloWorld { public static void main (String[] args) { System.out.println("Hello, World!"); } } Compilare il programma con il compilatore Java. javac HelloWorld.java Se il compilatore produce errori si controlli la sintassi e si verifichino le variabili PATH e CLASSPATH. Eseguire il programma con la JVM. java HelloWorld Se la JVM produce errori, si verifichino le variabili PATH e CLASSPATH. Si dovrebbe ottenere il seguente output: Hello, World! Congratulazioni, si è installato, configurato e verificato un ambiente per Sun J2SE per Linux. Maggiori informazioni Per maggiori informazioni su Sun J2SE, vedere il sito Sun dedicato a Java all'indirizzo: [20]http://java.sun.com. Ci sono eccellenti forum di discussione disponibili dove si possono trovare risposte a svariate domande. 3. Come predisporre il server Web Ci sono parecchi server Web disponibili per Linux. Tra questi sono inclusi: * [21]Apache * [22]IBM Domino * [23]IBM HTTP Server * [24]Jetty HTTP Server Se si volesse provare solo un Web Server, suggerirei di provare inizialmente Apache, principalmente perché è presente nella maggior parte delle maggiori distribuzioni Linux ed è probabile sia già installato, e forse funzionante, nel sistema in uso. 3.1 Apache Generalità Apache è il più popolare server HTTP in Internet. Originariamente era basato sull'httpd NCSA ed è stato poi completamente riscritto. Ha una licenza Open Source (dal sito web di Apache). Download, installazione e predisposizione dell'ambiente Piuttosto che scaricarlo da Apache, suggerirei inizialmente di provare l'Apache che molto probabilmente sarà presente nella distribuzione Linux. In alternativa, Apache può essere ottenuto da [25]http://www.apache.org. Verifica dell'installazione Per avere una conferma del fatto che Apache sia installato e funzionante su un computer, aprire il web browser, ed inserire lo URL: "http://127.0.0.1". (127.0.0.1 è l'indirizzo IP per il localhost.) Si dovrebbe vedere una pagina web che abbia un effetto simile a "Funziona!" Se non dovesse funzionare, si può avere conferma che Apache sia installato digitando il seguente comando in una distribuzione Linux basata sul RedHat Package Manager (RPM). rpm -q | grep apache Per lanciare Apache digitare: cd /etc/rc.d/init.d ./httpd start Nota: lo script httpd usato al momento del boot potrebbe essere in una diversa posizione su altre distribuzione Linux. Per maggiori assistenza, suggerisco di leggere le FAQ Apache all'indirizzo: [26]http://www.apache.org/docs/misc/FAQ.html. 3.2 IBM Domino Da scrivere. Vedere [27]http://www.lotus.com/dominolinuxper maggiore informazioni. 3.3 IBM HTTP Server Generalità Il server HTTP di IBM è un reimpacchettamento di Apache fatto da IBM. Si consideri l'uso di IBM HTTP Server se si ha intenzione di lavorare con IBM WebSphere. Al momento della redazione di questo documento, la più recente versione è la 1.3.6.1. Download L'IBM HTTP Server può essere ottenuto da [28]http://www-4.ibm.com/software/webservers/httpservers/download.html. Cliccare su il link di download e selezionare la cifratura SSL a 56-bit o a 128-bit. Sarà necesssario registrarsi presso IBM, rispondere ad un sondaggio di marketing ed accettare la licenza prima di scaricarlo. L'IBM HTTP Server richiede la glibc nella versione 2.0 o 2.1. La glibc è la nuova libc di Linux. Se si è in possesso di una vecchia distribuzione che si basa sulla libc5, non si sarà in grado di usare l'IBM HTTP Server. Su una distribuzione Linux basata su RedHat Package Manager (RPM), eseguire: rpm -qa | grep libc L'output sarà del tipo: glibc-2.1.2-11 libc-5.3.12-31 Questo mostrerà quali versioni di libc5 e glibc sono installate nella distribuzione Linux in uso. Nel precedente esempio sono installate sia la glibc che la libc5. La glibc è nella versione 2.1, dunque si dovranno installare i file per la glibc2.1. Considerando le loro piccole dimensioni, suggerirei di scaricare tutti i file tar per la versione glib presente sulla distribuzione di Linux in uso. Comunque, al minimo saranno necessari i file del server. Per RedHat 6.0 e distribuzioni derivate da Redhat 6.0 sarà anche necessario la redhat60only. Per distribuzioni basate su glibc2.0 sarà necessario pure il file libstdc. Installazione Si suggerisce d'installare i file nella directory /usr/local. Dopo aver scaricato i file, eseguire: mkdir /usr/local/ibm mv HTTPServer.linux.* /usr/local/ibm Si può ora aprire il pacchetto di distribuzione del file o dei file. tar xvf [filename].tar Dove [filename] è il nome del file. Sotto la directory /usr/local/ibm, si dovrebe vedere la directory IHS. Usare il RedHat Package Manager (RPM) per installare i file rpm che il file tar produce. Se fosse necessario il file libstdc, sarà necessario installarlo per primo. Dopo di che installare il file RPM del server nel modo seguente: cd IHS rpm -i IBM_HTTP_Server-1.3.6-2.i386.rpm L'esempio qui sopra mostra la versione 1.3.6 per l'architettura Intel. Si sostituisca il nome del file in modo appropriato. Dopo l'installazione i file rpm possono essere cancellati potendoli ricreare facilmente partendo dai file tar. >Predisporre l'ambiente Le variabili d'ambiente da impostare sono: * PATH L'IBM HTTP Server si installa in /opt/IBMHTTPServer. È necessario aggiungere la sua directory bin nel PATH. export PATH=/opt/IBMHTTPServer/bin:$PATH Notare che il percorso /opt/IBMHTTPServer/bin è stato aggiunto al principio del PATH così che verrà usato il server WEB installato piuttosto che un qualche server Web che potrebbe essere già stato incluso nella distribuzione Linux in uso. Per avere una conferma che il PATH sia correttamente impostato, si verifichi quale Apache controller viene usato. Digitare: which apachectl L'output dovrebbe far riferimento a apachectl nella directory /opt/IBMHTTPServer/bin. Nota: poiché l'IBM HTTP Server è basato su Apache, usa l'Apache controller per partire e fermarsi. Quando si ha sia l'IBM HTTP Server che Apache installati su un computer, va fatta particolare attenzione al PATH per essere sicuri di lavorare con il server corretto. Può essere necessario modificare il file di configurazione di IBM HTTP Server. Il file di configurazione è installato in /opt/IBMHTTPServer/conf/httpd.conf. Le due voci più comuni da dover modificare sono il ServerName e il numero dalla porta d'ascolto (Listen port number). Ricercare le parole chiave "ServerName" e "Listen" nel file httpd.conf. Il ServerName dovrebbe essere impostato o con l'hostname o con l'indirizzo IP. Se il computer usa il DHCP per acquisire un indirizzo IP, l'hostname è � la scelta migliore. Comunque, al fine di utilizzare l'hostname del computer in uso, l'hostname del computer e l'indirizzo IP devono essere registrati in modo appropriato nel DNS. Inoltre se si volesse eseguire un altro server Web sarà necessario assegnare un'altra porta all'IBM HTTP Server in modo tale che si possano far funzionare entrambi i server Web simultaneamente se necessario. Segue un esempio di valori nel httpd.conf. ServerName 192.168.0.4 Listen 3000 Verifica dell'installazione Per lanciare l'IBM HTTP Server, digitare come segue: /opt/IBMHTTPServer/bin/apachectl start Per verificare che l'IBM HTTP Server è installato e funzionante sul computer in uso, aprire il browser web e inserire lo URL: "http://192.168.0.4:3000" sostituendo il corretto indirizzo IP e numero di porta effettivamente inseriti nel httpd.conf. Si dovrebbe vedere una pagina web il cui effetto sia "Welcome to the IBM HTTP Server". Congratulazioni, si è installato, configurato e verificato un ambiente per l'IBM HTTP Server per Linux. Maggiori informazioni Per maggiori informazioni, si suggerisce di guardare le pagine del supporto per l'IBM HTTP Server all'indirizzo: [29]http://www-4.ibm.com/software/webservers/httpservers/support.html. 3.4 Jetty HTTP Server e contenitore Servlet Generalità Jetty è un HTTP Servlet Server open source scritto in Java al 100%. E\: sia un server HTTP/1.1 completo che un contenitore di Servlet. È stato progettato per essere leggero, molto performante, integrabile, estensibile e flessibile, facendone una piattaforma ideale per servire richieste HTTP dinamiche da qualsiasi applicazione Java. Jetty può essere usato come server HTTP e contenitore di servlet indipendente ovvero può essere usato integrato in un'altra applicazione Java (ed esempio il contenitore di EJB JBoss stà usando Jetty come sua soluzione preferita per server e contenitore). L'unione di server e di contenitore di servlet consente di eseguire entrambe queste funzioni in un singolo processo unix. Anche l'installazione e la configurazione è più semplice perché si tratta di una singola applicazione. Download Il Jetty HTTP Server e Servlet container p�ò essere scaricato via: [30]http://jetty.mortbay.org. Jetty è distribuito sotto la Artistic License, i sorgenti completi sono inclusi e può essere usata e distribuita commercialmente. Installazione Il pacchetto è distribuito come un file tar compresso con gzip, che può essere spacchettato con: gunzip < Jetty-x.x.x.tgz | tar xf - Che creerà una directory Jetty-x.x.x dove x.x.x è il numero della versione. Per eseguire il server demo: export JETTY_HOME= export JAVA_HOME= $JETTY_HOME/bin/jetty.sh run Quindi per vedere il demo ed il tutorial di Jetty far puntare il browser a [31]http://localhost:8080. Jetty può essere installato ed eseguito via JMX o come parte della distribuzione di JBoss. Vedere [32]http://jetty.mortbay.org o il file README.TXT per maggiori dettagli. 4. Come predisporre il supporto per le Servlet Java Ci sono parecchi plug-in per server Web e e per Application Server disponibili per Linux che forniscono il supporto per le servlet Java. Tra questi sono inclusi: * [33]Allaire JRun * [34]Apache Tomcat * [35]BEA WebLogic * [36]Enhydra * [37]Locomotive * [38]IBM Websphere * [39]Jetty 4.1 Allaire JRun Da scrivere. Vedere [40]http://www.allaire.com/products/jrun/per maggiori informazioni. 4.2 Apache Tomcat Generalità JServ è stato sostituito con Tomcat dal progetto Apache Jakarta: [41]http://jakarta.apache.org/. Questa sezione è ancora scritta per JServ e ha necessità di essere aggiornata. Apache JServ è un motore servlet al 100% Java, completamente conforme alle specifiche Java Servlet 2.0. Apache JServ è parte del progetto Java Apache (dal sito web Apache Java Project). Download Apache JServ può essere ottenuto da [42]http://java.apache.org/jserv/index.html. Dalla home page del progetto Apache JServ, seguire il collegamento Download Apache JServ. Attualmente sono disponibili distribuzioni in formato RPM per RedHat Linux. Per altre distribuzioni Linux bisogna fare il build dei sorgenti. Il seguente esempio descrive come installare l'RPM per RedHat 6x. Al momento dell'estensione di questo documento, la versione corrente è la 1.1b3. Installazione Suggerirei di installare i file nella directory /usr/local. Dopo aver scaricato i file eseguire: mkdir /usr/local/apachejserv mv ApacheJServ*.rpm /usr/local/apachejserv Per la RedHat e le distribuzioni derivate dalla RedHat usare il RedHat Package Manager (RPM)per installare i file rpm con: rpm -i ApacheJServ-1.1-b2_RH6x.i386.rpm L'esempio di cui sopra mostra la versione 1.1-b2 per la RedHat 6x su architettura Intel. Predisporre l'ambiente È necessario fermare Apache, impostare le variabili d'ambiente di Java, e riavviare Apache per registrare Apache JServ. Per fermare Apache digitare: cd /etc/rc.d/init.d ./httpd stop Nota: lo script httpd usato al momento del boot può essere in una posizione differente su altre distribuzioni Linux. Per predisporre l'ambiente Java, vedere la sezione Come installare il JDK di questo documento specifica per il JDK effettivamente in uso. È necessario impostare molte proprietà nel file jserv.properties installato in /etc/httpd/conf/jserv. Nello specifico, cercare: * wrapper.bin - per far riferimento al JDK installato * wrapper.classpath - che al minimo deve includere /usr/lib/apache/ApacheJServ.jar e /home/httpd/classes/servlet-2.0.jar * bindaddress=localhost * port=8007 Per riavviare Apache digitare: cd /etc/rc.d/init.d ./httpd start Verifica dell'installazione Per verificare che Apache JServ sia installato e funzionante sul computer in uso, aprire il browser, e inserire lo URL: "http://127.0.0.1/servlet/IsItWorking" sostituendo l'indirizzo IP con quello corretto qualora si stesse navigando da un'altra macchina. Si dovrebbe vedere un'altra pagina web che abbia l'effetto di "Yes, It's Working!". Contratulazioni, si è installato, predisposto e verificato un ambiente per Apache JServ per Linux. Per maggiore assistenza, suggerirei di vedere il sito web di Apache JServ all'indirizzo: [43]http://java.apache.org/jserv/index.html. Ora, per compilare ed eseguire le proprie servlet inserire il seguente programma Java che fa uso di servlet. import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorldServlet extends HttpServlet { public void service (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } } Maggiori informazioni Per maggiori informazioni, suggerirei di guardare il sito web di Java Apache Project all'indirizzo [44]http://java.apache.org/. 4.3 BEA WebLogic Si veda [45]BEA WegLogic di seguito. 4.4 Enhydra Da scrivere. Vedere [46]http://www.enhydra.orgper maggiori informazioni. 4.5 IBM WebSphere Da scrivere. Vedere [47]http://www-4.ibm.com/software/webservers/appserv/linux.html per maggiori informazioni. 4.6 Locomotive Da scrivere. Vedere [48]http://www.locomotive.org/ per maggiori informazioni. 4.7 Jetty Il server HTTP Jetty è un server HTTP ed un contenitore di servlet combinati. L'installazione del server HTTP (vedere sopra) fornisce il supporto alle servlet. Maggiori informazioni possono essere ottenute attraverso il server demo e il tutorial installato con il server HTTP. 5. Come predisporre il supporto delle Java Server Pages (JSP) Da scrivere. 5.1 Apache Jakarta Da scrivere. Vedere [49]http://jakarta.apache.com/ per maggiori informazioni. 5.2 Caucho Resin Da scrivere. Vedere [50]http://www.caucho.com/ per maggiori informazioni. 5.3 Jetty Il Jetty HTTP server viene fornito con il motore JSP Jasper. L'installazione del server HTTP (vedere 3.4 sopra) fornisce il supporto a JSP. Maggiori informazioni possono essere ottenute attraverso il server demo e il tutorial installato con il server HTTP. 6. Come predisporre il supporto per JDBC Ci sono diversi database che funzionano su Linux che supportano anche un'interfaccia JDBC. Tra questi sono inclusi: * [51]IBM DB2 * [52]MiniSQL * [53]MySQL * [54]Oracle * [55]PostgreSQL * [56]Sybase Se si volesse provare solo un DBMS, suggerirei inizialmente di provare PostgreSQL, principalmente perché è presente nella maggior parte delle maggiori distribuzioni Linux ed è probabile che sia già installato, e forse funzionante, nel sistema in uso. 6.1 IBM DB2 Da scrivere. Vedere [57]http://www-4.ibm.com/software/data/db2/linux/ per maggiori informazioni. 6.2 MiniSQL Da scrivere. Vedere [58]http://www.hughes.com.au/ per maggiori informazioni. 6.3 MySQL Da scrivere. See [59]http://www.mysql.org/ per maggiori informazioni. 6.4 Oracle Da scrivere. Vedere [60]http://platforms.oracle.com/linux/ 6.5 PostgreSQL Generalità PostgreSQL è un sofisticato DBMS relazionale ad oggetti, ammette quasi tutti i costrutti SQL, inclusi subselect, transazioni, tipi e funzioni definite dall'utente. È il più avanzato database open-source disponibile. È anche disponibile il supporto commerciale di PostgreSQL, Inc. La versione attuale è la 6.5.3 ed è disponibile da uno qualsiasi dei tanti siti mirror o su CD (dal sito web di PostgreSQL). PostgreSQL potrebbe essere già contenuto nella distribuzione Linux in uso per via della sua licenza open source. Download ed installazione Piuttosto che scaricare da PostgreSQL, suggerirei inizialmente di provare il PostgreSQL che molto probabilmente è fornito con la distribuzione Linux in uso. In alternativa, PostgreSQL può essere ottenuto da [61]http://www.postgresql.org. Per verificare che PostgreSQL sia installato sul computer in uso digitare: rpm -qa | grep postgresql o which postmaster which psql Per usare Java con PostgreSQL \ necessario che i pacchetti postgresql, postgresql-server e postgresql-java siano installati. Accertarsi che PostgreSQL sia in esecuzione. Digitare: ps -f -u postgres Si dovrebbe vedere postmaster, il demone di PostgreSQL, attivo. Se postmaster non fosse attivo, ci sarà probabilmente uno script Sys V Init che può essere usato per avviarlo. In molte distribuzioni è localizzato in /etc/rc.d/init.d. Per lanciare PostgreSQL, digitare: cd /etc/rc.d/init.d ./postgresql start Si può usare il comando "ps" di cui sopra per avere una conferma che PostgreSQL è in esecuzione. Nota: per usare il JDBC, PostgreSQL necessita di essere lanciato con il parametro '-i' che indica l'uso di connessioni TCP/IP piuttosto che solamente socket di dominio UNIX. Verificare che postmaster sia stato lanciato con il parametro '-i'. Creare un database di test digitando: su - postgres createdb javatest Non si dovrebbe vedere alcun messaggio di errore. Creare una tabella di test con una riga di test. Prima, accedere allo strumento interattivo PostgreSQL e collegarsi al database javatest appena creato digitando (come utente postgres): psql javatest Si dovrebbe vedere confermato il fatto di essere connessi al database: javatest. Poi, creare la tabella di test digitando (all'interno di psql): create table test (col1 varchar(255)); Si dovrebbe vedere il messaggio di conferma del comando "CREATE". Quindi, inserire una riga digitando (all'interno di psql): insert into test (col1) values ('Hello, from PostgreSQL!'); Si dovrebbe vedere il messaggio di conferma del comando "INSERT". Finalmente, verificare che la riga sia presente digitando (all'interno di psql): select col1 from test; Si dovrebbe vedere la riga appena creata. Si può uscire da psql digitando "\q". Per maggiore assistenza nel lavoro con PostgreSQL, suggerirei di leggere a fondo il documento Database-SQL-RDBMS HOW-TO per Linux (PostgreSQL Object Relational Database System) all'indirizzo: [62]http://metalab.unc.edu/mdw/HOWTO/PostgreSQL-HOWTO.html. È necessario aggiungere il JAR appropriato nel CLASSPATH. I JAR di PostgreSQL vengono forniti con il pacchetto postgresql-jdbc. export CLASSPATH=$CLASSPATH:/usr/lib/pgsql/jdbc6.5-1.2.jar Si potrebbe aver bisogno di sostituire il percorso a seconda di dove è stato installato PostgreSQL sul sistema in uso. Verifica dell'installazione Si è ora in grado di compilare ed eseguire una semplice applicazione JDBC che usi PostgreSQL. Creare il seguente programma. import java.sql.*; class PostgreSQLTest { public static void main (String[] args) { try { Driver driver = (Driver) Class.forName("postgresql.Driver").newInstance(); DriverManager.registerDriver(driver); String url = "jdbc:postgresql:javatest"; Connection con = DriverManager.getConnection(url, "postgres", ""); Statement stm = con.createStatement(); stm.setQueryTimeout(10); ResultSet rs = stm.executeQuery("select col1 from test"); rs.next(); System.out.println(rs.getString(1)); } catch (SQLException e) { System.out.println("Exception!"); System.out.println(e.toString()); } } Compilare il programma con il compilatore Java. javac PostgreSQLTest.java Se il compilatore dovesse produrre errori, controllare la sintassi e verificare il PATH e la CLASSPATH. Eseguire il programma con la JVM. java PostgreSQLTest Se la JVM dovesse produrre errori, verificare il PATH e la CLASSPATH. Si dovrebbe vedere l'output: Hello, from PostgreSQL! Congratulazioni, si è installato, configurato e provato un ambiente per l'interfaccia JDBC verso PostgreSQL. Maggiori informazioni Per maggiori informazioni, suggerirei di esaminare a fondo il sito web di PostgreSQL all'indirizzo [63]http://www.postgresql.org/. 6.6 Sybase Generalità Sybase Adaptive Server Enterprise è un RDBMS commerciale che è disponibile per il sistema operativo Linux. Per quanto Sybase abbia recentemente rilasciato la versione 12.0, la versione disponibile per Linux è la 11.9.2. Secondo il sito web di Sybase, "Con il port di ASE su Linux, Sybase ha dato alla comunità di sviluppo di Linux il primo motore di database ad alta scalabilità ad alte prestazioni per la piattaforma. Il pacchetto include le caratteristiche standard dell'Adaptive Server Enterprise e di tutti i componenti di connettività relativi. La versione 11.9.2 è offerta per sviluppo LIBERO". Download Sybase ASE può essere ottenuto da [64]http://www.sybase.com/products/databaseservers/linux/linux1192_reg. html. Per poter effettuare il download è necessario registrarsi presso il sito web di Sybase ed accettare i termini della licenza online. Il driver JDBC di Sybase JDBC può essere ottenuto da [65]http://www.sybase.com/products/internet/jconnect/. Selezionare download jConnect 4.2/5.2. Se si ha accesso ad un server Sybase in rete, è sufficiente scaricare ed installare il solo driver JDBC. Installazione L'installazione di Sybase va oltre lo scopo di questo HOWTO. Questo HOWTO assume che Sybase sia stato installato e configurato correttamente e che si acceda a Sybase utilizzando isql. Accedere ad isql come sa e creare un utente di test ed un database di test digitando: create database javatest go sp_addlogin javatest, javatest, javatest go use javatest go sp_dbowner javatest go Non si dovrebbero vedere errori. Creare una tabella di test con una riga di test. Prima, accedere ad isql con l'utente di test javatest e digitare: create table test (col1 varchar(255)) go Non si dovrebbe vedere alcun messaggio di errore. Poi, inserire una riga digitando: insert into test (col1) values ('Hello, from Sybase!') go Non si dovrebbe vedere alcun messaggio di errore. Alla fine, verificare che la riga sia presente digitando: select col1 from test go Si dovrebbe vedere la riga appena creata. Si può uscire da isql digitando "exit". Per maggiori informazioni su come lavorare con Sybase, esaminare la documentazione che può essere scaricata con Sybase. Potrebbe essere necessario aggiungere gli appropriati JAR al CLASSPATH. export CLASSPATH=$CLASSPATH:/usr/local/sybase/jConnect-5_2/classes/jconn2.jar Potrebbe essere necessario sostituire il percorso in base a dove si è installato jConnect. Verifica dell'installazione Si è ora in grado di compilare ed eseguire una semplice applicazione JDBC che usi PostgreSQL. Creare il seguente programma. import java.sql.*; class SybaseTest { public static void main (String[] args) { try { Driver driver = (Driver) Class.forName("com.sybase.jdbc2.jdbc.SybDriver").newInstance(); DriverManager.registerDriver(driver); String host = "127.0.0.1"; String port = "4100"; String url = "jdbc:sybase:Tds:" + host + ":" + port; Connection con = DriverManager.getConnection(url, "javatest", "javatest") ; Statement stm = con.createStatement(); stm.setQueryTimeout(10); ResultSet rs = stm.executeQuery("select col1 from test"); rs.next(); System.out.println(rs.getString(1)); } catch (SQLException e) { System.out.println("Exception!"); System.out.println(e.toString()); } } Sarà necessario sostituire l'host e il numero della porta del server Sybase in modo appropriato. Vedere il contenuto di $SYBASE/interfaces e $DSQUERY per quali valori usare per l'host ed il numero di porta. Compilare il programma con il compilatore Java. javac SybaseTest.java Se il compilatore dovesse produrre errori, controllare la sintassi e verificare il PATH e la CLASSPATH. Eseguire il programma con la JVM. java SybaseTest Se la JVM dovesse produrre errori, verificare il PATH e la CLASSPATH. Si dovrebbe vedere il seguente output: Hello, from Sybase! Congratulazione, si è installato, configurato e provato un ambiente per l'interfaccia JDBC verso Sybase. Maggiori informazioni Per maggiori informazioni, suggerirei di guardare a fondo il sito web dedicato a jConnect di Sybase all'indirizzo [66]http://www.sybase.com/products/internet/jconnect/. 7. Come predisporre il supporto degli Enterprise Java Bean (EJB) Da scrivere. 7.1 BEA WebLogic Da scrivere. Vedere [67]http://www.beasys.com/linux/ per maggiori informazioni. 7.2 EJBoss Generalità EJBoss è stato rinominato JBoss ed è molto progredito con rilasci stabili conformi a J2EE all'indirizzo [68]http://www.jboss.org/. Questa sezione è stata scritta quando ancora era EJBoss 0.95 e richiede un aggiornamento. Download JBoss può essere scaricato dal sito web di JBoss all'indirizzo [69]http://www.jboss.org/. Installazione Suggerirei di installare i file nella directory /usr/local. Dopo il download eseguire: mkdir /usr/local/ejboss mv ejboss* /usr/local/ejboss Spacchettare il file: jar xvf ejboss095_jdk122.jar Si dovrebbero vedere diversi file e directory creati sotto /usr/local/ejboss. L'esempio di cui sopra mostra EJBoss 0.95 per il JDK 1.2.2. Sostituire i nomi dei file in modo appropriato. Predisposizione dell'ambiente Le variabili d'ambiente da impostare sono: * CLASSPATH La variabile d'ambiente CLASSPATH fa riferimento a tutti i JAR ed a tutte le directory che sono necessari per compilare ed eseguire i programmi Java. Includere i JAR di EJBoss e la directory beans/generated nel CLASSPATH. export CLASSPATH=/usr/local/ejboss/lib/ejboss095_jdk122.jar:/usr/local/ejboss/b eans/generated:$CLASSPATH Verifica dell'installazione Si � ora in grado di compilare ed eseguire una semplice applicazione EJB. Creare i tre seguenti file sorgenti per il server. Primo, l'interfaccia di business. // EJBTest.java import javax.ejb.*; import java.rmi.RemoteException; public interface EJBTest extends EJBObject { public String greet() throws RemoteException; } Secondo, la home interface. // EJBTestHome.java import javax.ejb.*; import java.rmi.RemoteException; public interface EJBTestHome extends EJBHome { public EJBTest create() throws CreateException, RemoteException; } Terzo, la classe che implementa il bean. // EJBTestBean.java import javax.ejb.*; import java.rmi.RemoteException; public interface EJBTestBean implements SessionBean { private SessionContext mContext = null; public void ejbPassivate() { System.out.println("EJBTestBean passivated."); } public void ejbActivate() { System.out.println("EJBTestBean activated."); } public void ejbCreate() { System.out.println("EJBTestBean created."); } public void ejbRemove() { System.out.println("EJBTestBean removed."); } public void setSessionContext() { System.out.println("EJBTestBean context set."); mContext = context; } public String greet() { return "Hello, I'm an EJB!"; } } Compilare i file sorgenti per il server con il compilatore Java: javac EJBTest*.java Se il compilatore dovesse produrre errori, verificare la sintassi e verificare il PATH ed il CLASSPATH. Ora che si è scritto e compilato con successo i file sorgenti per il server, vanno rilasciati i bean su EJBoss. La distribuzione di un bean su EJBoss richiede parecchi passi che devono essere eseguiti esattamente. Primo, creare il file ejb-jar.xml. Nextgen bean nextgen.EJBTest EJBTestHome EJBTest EJBTestBean Stateful Bean java.lang.String Container Il file di cui sopra, che deve essere chiamato ejb-jar.xml, identifica i nomi delle classi e dell'interfaccia che si sono appena create oltre al nome dell'oggetto. Secondo, all'interno della directory dei file delle tre classi appena create, si crei una directory META-INF. mkdir META-INF mv ejb-jar.xml META-INF Terzo, si impacchettino tutti e quattro i file in un jar. jar cvf EJBTest.jar EJBTest*.class META-INF/ejb-jar.xml Si deve fare attenzione che venga aggiunto anche il manifesto oltre che i tre file delle classi e il file XML che descrive la distribuzione. Quarto, posizionare il JAR appena creato nella directory dei beans in EJBoss. mv EJBTest.jar /usr/local/ejboss/beans Quinto, spostare i file delle classi creati nella directory beans/generated di EJBoss. mv EJBTest*.class /usr/local/ejboss/beans/generated (questo quinto passo è ridondante a causa di un baco in EJBoss 0.95 ) Si è ora in grado di attivare il server EJBoss. cd /usr/local/ejboss sh server.sh Si dovrebbe poter vedere i file proxy compilati automaticamente e la conferma che l'EJB è stato distribuito. Si è ora in grado di scrivere, compilare e provare una sempice applicazione client. 7.3 Bullsoft JOnAS EJB Da scrivere. Vedere [70]http://www.bullsoft.com/ejb/per maggiori informazioni. References 1. mailto:gary@meyer.net 2. mailto:gregw@mortbay.org 3. http://linuxdoc.org/HOWTO/Enterprise-Java-for-Linux-HOWTO.html 4. http://www.gnu.org/copyleft/fdl.html 5. mailto:gary@meyer.net 6. http://www.app-serv.com/ 7. http://www.oreilly.com/catalog/jentnut/ 8. mailto:gary@meyer.net 9. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: blackdown 10. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: ibmjdk 11. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: j2se 12. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: kaffe 13. http://www.blackdown.org/ 14. http://www.blackdown.org/ 15. http://www.ibm.com/java/jdk/118/linux 16. http://www.ibm.com/java 17. http://www.kaffe.org/ 18. http://www.kaffe.org/ 19. http://developer.java.sun.com/developer/earlyAccess/j2sdk122 20. http://java.sun.com/ 21. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: apache 22. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: domino 23. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: ibmhttp 24. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: jetty 25. http://www.apache.org/ 26. http://www.apache.org/docs/misc/FAQ.html 27. http://www.lotus.com/dominolinux 28. http://www-4.ibm.com/software/webservers/httpservers/download.html 29. http://www-4.ibm.com/software/webservers/httpservers/support.html 30. http://jetty.mortbay.org/ 31. http://localhost:8080/ 32. http://jetty.mortbay.org/ 33. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: jrun 34. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: jserv 35. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: weblogicservlet 36. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: enhydra 37. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: locomotive 38. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: websphere 39. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: jettyservlet 40. http://www.allaire.com/products/jrun/ 41. http://jakarta.apache.org/ 42. http://java.apache.org/jserv/index.html 43. http://java.apache.org/jserv/index.html 44. http://java.apache.org/ 45. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: weblogic 46. http://www.enhydra.org/ 47. http://www-4.ibm.com/software/webservers/appserv/linux.html 48. http://www.locomotive.org/ 49. http://jakarta.apache.com/ 50. http://www.caucho.com/ 51. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: db2 52. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: minisql 53. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: mysql 54. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: oracle 55. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: postgresql 56. file://localhost/home/giulio/ILDP/Enterprise-Java-for-Linux-HOWTO/Enterprise-Java-for-Linux-HOWTO.html#sec: sybase 57. http://www-4.ibm.com/software/data/db2/linux/ 58. http://www.hughes.com.au/ 59. http://www.mysql.org/ 60. http://platforms.oracle.com/linux/ 61. http://www.postgresql.org/ 62. http://metalab.unc.edu/mdw/HOWTO/PostgreSQL-HOWTO.html 63. http://www.postgresql.org/ 64. http://www.sybase.com/products/databaseservers/linux/linux1192_reg.html 65. http://www.sybase.com/products/internet/jconnect/ 66. http://www.sybase.com/products/internet/jconnect/ 67. http://www.beasys.com/linux/ 68. http://www.jboss.org/ 69. http://www.jboss.org/ 70. http://www.bullsoft.com/ejb/