|
Questo articolo spiega come installare Cocoon
2 con Tomcat 4 su Mac OS X versione 10.1.3 (aggiornato in seguito
alla 10.1.4). Tali istruzioni funzionano perfettamente anche su
Linux Debian 2.2 (kernel 2.2.17).
Introduzione
Effettueremo tutte le installazioni dalla linea di
comando e le eseguiremo come utente normale, non con i diritti di
superuser, in una sottodirectory della nostra home utente. Probabilmente
la linea di comando rappresenta una novità per molti utenti
Mac, dal momento che è stata introdotta da Apple solo in
questa nuova e rivoluzionaria versione del suo sistema operativo:
Mac OS X, un sistema POSIX compatibile, come tutti gli altri sistemi
*nix. Per questo motivo questo articolo riporta in dettaglio gran
parte dei comandi necessari per installare Tomcat e Cocoon.
L'ambiente java, necessario per installare ed utilizzare
questi programmi che sono interamente scritti in Java, è
presente di default su Mac OS X; va invece installato su Debian,
ma la procedura non presenta la minima difficoltà. Tomcat
4 si può scaricare dal sito http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.3/bin/,
il file da prelevare è jakarta-tomcat-4.0.3.tar.gz
ed è l'ultima release stabile rilasciata mentre sto scrivendo
questo articolo; Cocoon 2 si può scaricare su http://xml.apache.org/cocoon/dist/,
utilizzeremo due versioni: Cocoon 2.0.1 versione binaria e Cocoon
2.0.2 versione binaria e versione sorgente. I file da prelevare
sono, rispettivamente: cocoon-2.0.1-bin.tar.gz,
cocoon-2.0.2-bin.tar.gz e cocoon-2.0.2-src.tar.gz.
Nota per gli utenti Linux
Il framework Cocoon include anche Batik, un toolkit in Java per
la generazione di immagini mediante l'utilizzo dello standard SVG.
Batik richiede che il server X sia in esecuzione per funzionare
correttamente; se avete installato Cocoon 2 sulla workstation che
usate per effettuare i test via browser mentre sviluppate, non dovreste
avere problemi, se invece volete utilizzare una macchina su cui
non è installato il server X, dovrete installare Xfvb
per poterlo utilizzare correttamente.
Nota per gli utenti Mac OS X
Non utilizzate Stuffit Expander per scompattare i file di distribuzione
di Tomcat e Cocoon, le installazioni risultanti non funzioneranno.
E non funzioneranno nemmeno se utilizzerete da un terminale il comando
tar fornito di default con Mac OS X.
Per ottenere delle installazioni funzionanti dovrete utilizzare
il programma tar della GNU, che si richiama digitando in un terminale
il comando gnutar.
Installazione di Tomcat 4.0.3
La effettueremo dai binari. Avviate un terminale,
portatevi nella directory in cui avete scaricato il file di distribuzione
e al prompt dei comandi digitate:
[localhost:~] marina% gnutar xfvz jakarta-tomcat-4.0.3.tar.gz
il file si scompatterà in una directory chiamata jakarta-tomcat-4.0.3,
che per semplicità consiglio di rinominare tomcat4.
Tomcat normalmente risponde alle richieste sulla porta 8080, quindi
prima di avviarlo controllate se avete altre applicazioni in ascolto
su tale porta. In tal caso, dovrete modificare il valore della porta
nel file server.xml, che trovate nella
directory tomcat4/conf. Ecco il blocco
di istruzioni che va modificato:
<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector className="org.apache.catalina.connector.http.HttpConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"
acceptCount="10" debug="0" connectionTimeout="60000"/>
è sufficiente sostituire al valore di default 8080 un qualsiasi
altro valore superiore a 1023. Normalmente io utilizzo la porta
10080.
Se invece la porta 8080 è disponibile, resta una sola operazione
da compiere prima di avviare Tomcat per la prima volta: settare
le variabili d'ambiente JAVA_HOME e CATALINA_HOME.
Per comodità useremo due semplici script per settare le
variabili d'ambiente ed avviare e fermare Tomcat. Aprite l'editor
di testi preferito e digitate in un file che chiameremo start
le seguenti righe:
#!/bin/sh
export CATALINA_HOME=/Users/marina/tomcat4
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Home
$CATALINA_HOME/bin/startup.sh
la seconda riga specifica il percorso in cui avete installato Tomcat,
la terza il percorso in cui è installata di default la Java
Virtual Machine fornita con Mac OS X, la quarta lancia lo script
che avvia Tomcat.
Una volta salvato il file conferitegli i permessi di esecuzione
usando il comando:
[localhost:~] marina% chmod a+x start
a questo punto potete lanciare Tomcat con il comando:
[localhost:~] marina% ./start
avviate il browser preferito e digitate http://localhost:8080/
nella barra degli indirizzi. Se l'installazione è andata
a buon fine, il browser caricherà la pagina di default di
Tomcat
Per fermare Tomcat, scrivete in un file che chiameremo stop
le seguenti righe:
#!/bin/sh
export CATALINA_HOME=/Users/marina/tomcat4
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Home
$CATALINA_HOME/bin/shutdown.sh
questo script si differenzia dal primo in quanto nella quarta riga
richiama lo script incaricato di arrestare il server. Anche in questo
caso date un:
[localhost:~] marina% chmod a+x stop
per conferirgli i giusti permessi di esecuzione, dopodiché
per fermare Tomcat potrete semplicemente digitare:
[localhost:~] marina% ./stop
Installazione di Cocoon 2.0.1
Installeremo dai binari. Scompattate il file di distribuzione
con il comando:
[localhost:~] marina% gnutar xfvz cocoon-2.0.1-bin.tar.gz
otterrete una directory chiamata cocoon-2.0.1
che conterrà la documentazione e il file cocoon.war.
Leggendo il file INSTALL potrete apprendere
come per installare Cocoon 2 su Tomcat 4 sia sufficiente copiare
il file cocoon.war dentro alla directory
tomcat4/webapps e avviare Tomcat. Richiedendo
sul browser preferito l'indirizzo: http://localhost:8080/cocoon/
Cocoon 2 finira' di compilarsi e genererà una pagina di benvenuto,
con molti esempi di applicazioni.
Semplice, vero? Peccato però che la prima
volta che richiamerete Cocoon non otterrete la pagina di benvenuto,
ma il seguente errore:
Apache Tomcat/4.0.3 - HTTP Status 500 - Internal Server Error
type Exception report
message Internal Server Error
description
The server encountered an internal error (Internal Server Error)
that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet.init() for servlet Cocoon2
threw exception
at org.apache.catalina.core.StandardWrapper.
loadServlet(StandardWrapper.java:935)
at org.apache.catalina...
[taglio il resto]
Ricercando tra gli archivi della mailing list cocoon-users
troviamo la risposta a questo problema: è un bug non documentato
che potete risolvere semplicemente ricopiando i file batik-libs-1.1.1.jar
e xml-apis.jar dentro tomcat4/common/lib.
Tali file si trovano nella directory tomcat4/lib.
Riavviate Tomcat e finalmente il browser caricherà
la pagina di benvenuto di Cocoon 2.0.1.
Installazione di cocoon 2.0.2
La effettueremo a partire dai binari. Scompattate
il file di distribuzione:
[localhost:~] marina% gnutar xfvz cocoon-2.0.2-bin.tar.gz
Anche in questo caso la documentazione afferma che
è sufficiente copiare il file cocoon.war
dentro tomcat4/webapps. Riavviando Tomcat
e richiamando sul browser l'indirizzo http://localhost:8080/cocoon/,
Cocoon finirà di compilarsi ed apparirà la pagina
di benvenuto.
Purtroppo però anche questa volta otterrete
lo stesso errore riportato in precedenza per la versione 2.0.1.
Per risolvere il problema copiate i file xalan-2.3.1.jar,
xml-apis.jar, xercesImpl-2.0.0.jar,
batik-all-1.5b1.jar da tomcat4/webapps/cocoon/WEB-INF/lib
a tomcat4/common/lib.
Riavviate Tomcat e richiamate nuovamente sul browser
http://localhost:8080/cocoon/, finalmente ora tutto funziona!
Installazione di cocoon 2.0.2
Questa volta compileremo dai sorgenti. Scompattate
il file di distribuzione:
[localhost:~] marina% gnutar xfvz cocoon-2.0.2-bin.tar.gz
la directory cocoon-2.0.2
così ottenuta questa volta conterrà, oltre alla documentazione,
i sorgenti e tutti gli script necessari per la compilazione.
La documentazione vi richiede per prima cosa di rimuovere il file
xerces.jar da tomcat4/common/lib/.
Per sicurezza lo sposteremo sul desktop.
Successivamente copiate i file: xalan-2.3.1.jar,
xml-apis.jar, xercesImpl-2.0.0.jar,
batik-all-1.5b1.jar in tomcat4
/common/lib. I primi tre li trovate nella directory cocoon-2.0.2/lib/core,
il quarto nella directory cocoon-2.0.2/lib/optional
[localhost:cocoon-2.0.2/lib/core] marina% cp xalan-2.3.1.jar
xercesImpl-2.0.0.jar xml-apis.jar /Users/marina/tomcat4/common/lib/
[localhost:cocoon-2.0.2/lib/optional] marina% cp
batik-all-1.5b1.jar /Users/marina/tomcat4/common/lib/
Inserite nel file web.xml,
che trovate nella directory cocoon-2.0.2/src/webapp/WEB-INF/,
le seguenti righe:
<!-- extra classpath -->
<init-param>
<param-name>extra-classpath</param-name>
<param-value>/tomcat4/common/lib/xalan-2.3.1.jar:
/tomcat4/common/lib/xercesImpl-2.0.0.jar:
/tomcat4/common/lib/xml-apis.jar:
/tomcat4/common/lib/batik-all-1.5b1.jar</param-value>
</init-param>
Per eseguire la compilazione, utilizzeremo uno scriptino
che chiameremo buildc2. Aprite l'editor
di testo che preferite e digitate:
#!/bin/sh
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Home
./build.sh -Dinclude.webapp.libs=yes webapp
la seconda riga imposta la JAVA_HOME, la terza riporta
l'istruzione per compilare Cocoon. Assegnate allo script gli opportuni
permessi di esecuzione:
[localhost:~/cocoon-2.0.2] marina% chmod a+x buildc2
ora siete pronti per compilare:
[localhost:~/cocoon-2.0.2] marina% ./buildc2
ed otterrete immediatamente l'errore:
./build: permission denied: ./build.sh [3]
assegnate i corretti permessi di esecuzione al file
build.sh che trovate nella directory
cocoon-2.0.2 :
[localhost:~/cocoon-2.0.2] marina% chmod a+x build.sh
e riprovate:
[localhost:~/cocoon-2.0.2] marina% ./buildc2
finalmente inizia il processo di compilazione:
Apache Cocoon Build System
--------------------------
Buildfile: build.xml
init:
--------------------------------------------------------------
Apache Cocoon 2.0.2 [1999-2002]
--------------------------------------------------------------
Building with Ant version 1.4.1 compiled on October 11 2001
using build file /Users/marina/cocoon-2.0.2/build.xml
--------------------------------------------------------------
prepare-docs:
Created dir: /Users/marina/cocoon-2.0.2/build/cocoon/documentation
Created dir: ...
[taglio la parte centrale]
...
webapp:
Writing: ./build/cocoon/webapp/WEB-INF/Manifest.mf
Building jar: /Users/marina/cocoon-2.0.2/build/cocoon/cocoon.war
BUILD SUCCESSFUL
Total time: 9 minutes 2 seconds
Il file cocoon.war viene
compilato dentro la directory cocoon-2.0.2/build/cocoon/;
copiatelo nella directory tomcat4/webapps:
[localhost:cocoon-2.0.2/build/cocoon] marina% cp
cocoon.war /Users/marina/tomcat4/webapps/
riavviate Tomcat e richiamate Cocoon digitando nel
browser http://localhost:8080/cocoon/ per terminare la compilazione.
Purtroppo otterrete un altro errore:
Cocoon 2 - Internal server error
type fatal
message SAX2 driver class org.apache.xerces.parsers.SAXParser
does not implement XMLReader
description java.lang.ClassCastException: org.apache.xerces.parsers.
StandardParserConfiguration
sender org.apache.cocoon.servlet.CocoonServlet
source Cocoon servlet
stack-trace
java.lang.ClassCastException: org.apache.xerces.
parsers.StandardParserConfiguration
at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(Unknown Source)
at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(Unknown Source)
at org.apache.cocoon.components.language.markup.AbstractMarkupLanguage.
generateCode(AbstractMarkupLanguage.java:377)
at org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.
generateResource(ProgramGeneratorImpl.java:365)
at org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.
createResource(ProgramGeneratorImpl.java:328)
at org.apache.cocoon.components.language.generator.ProgramGeneratorImpl.
load(ProgramGeneratorImpl.java:291)
at org.apache.cocoon.sitemap.Handler.run(Handler.java:270)
at java.lang.Thread.run(Thread.java:496)
request-uri
/cocoon/
path-info
Per eliminarlo, è sufficiente rimettere a
posto il file xerces.jar:
[localhost:~/Desktop] marina% cp xerces.jar /Users/marina/tomcat4/common/lib/
riavviate Tomcat, digitate nuovamente sul browser
http://loalhost:8080/cocoon/ per terminare la compilazione...
...and now it's work! Happy hacking :-)
Osservazione: ho riprovato a compilare ed installare seguendo la
stessa procedura senza eliminare il file xerces.jar
e tutto è andato a buon fine.
Licenza
This document is released under GNU Free Documentation
License
di Marina
Sturino
|