Newsgroup: it.comp.java
Titolo: tomcat da cd

qualcuno ha mai provato ad installare tomcat su cd ?
la curiosità mi è venuta quando ho scoperto che si può installare un jre su
cd semplicemente copiando la directory jre su cd (così dicono per lo meno)
questo permetterebbe di creare delle webapps su cd anche in jsp
ciao


Tomcat deve scrivere su disco.


Non è detto :)
E' molto difficile e non testato al 100%, ma ecco cosa bisogna fare
per mettere il gatto su un CD:
1) eliminare TUTTI i log su file;
2) pre-compilare le JSP;
3) incrociare le orecchie
Il punto 2) è critico, infatti se su Linux basta includere il JRE e
utilizzarlo così com'è, su Windozz la situazione cambia... Sul sistema
operativo di Redmond infatti il JDK/JRE quando viene installato:
- scrive un sacco di m#§@ sul file di registro;
- copia java.exe e javaw.exe nelle directory di sistema.
e se compili per un JRE troppo recente sono ca..voli amari.
Morale: pre-compilare le JSP per il JDK più basso che puoi: 1.4 o al
massimo 1.5, fortemente sconsigliato 1.6 :)
www.megadix.it

 - copia java.exe e javaw.exe nelle directory di sistema.
anche su windows non e' obbligatorio usare l'installer.
basta che ti copi la cartella del jre e dai il percorso al java.exe ivi
contenuto, tutto il resto viene da se'.
ovviamente, non esistendo una distribuzione per win senza
installer, almeno una volta lo devi installare da qualche parte.

 installer, almeno una volta lo devi installare da qualche parte.
Il problema di solito, e penso anche in questo caso, è che *non sai in
anticipo* se l'utente ha installato o meno il JRE sulla propria
macchina, da qui la necessità di pre-compilare le JSP con un JDK
abbastanza datato.
Fate questa prova:
1) create una classe di prova, compilata per JRE 1.5: va benissimo un
HelloWorld, basta che sia compilato con target=1.5
2) create su una chiavetta USB la struttura della vostra "Portable
Application":
  - create una directory "MyApp"
  - copiate la classe HelloWorld in "MyApp/classes";
  - copiate tutto il jdk 1.5 in "MyApp/jdk-1.5";
3) create un file MyApp/start.bat che:
  - imposta la variabile JAVA_HOME a "jdk-1.5";
  - imposta il classpath per includere "MyApp/classes";
  - lancia HelloWorld, usando riga di comando %JAVA_HOME%\bin\java.exe
Ora andate con la vostra chiavetta su una macchina dove è installato
*solamente JRE 1.4*, infilate la chiavetta, lanciate "start.bat"
Ugh...brutta sorpresa :(
www.megadix.it

 utilizzarlo così com'è, su Windozz la situazione cambia... 
perchè pensi che non si possa fare la stessa cosa su windows, cioè 
utilizzare un runtime qualsiasi non installato o anche diverso da quello 
installato?


Non sto dicendo che non si può, ma che da dei problemi se c'è
installata una versione più vecchia di quella con cui sono state
compilate le JSP, per questi motivi:
- quando installi un JDK o un JRE, sul registro viene scritto: "Il
runtime *ufficiale* da utilizzare su questa macchina è il JRE XXX,
situato sotto la directory YYY, ..." più un po' di altra  merda;
- in:
 C:\WINDOWS\system32
 vengono copiati java.exe e javaw.exe della versione che stai
installando; e se installi prima la 1.5 e poi la 1.4 te li
sovrascrive, ovviamente :(
Se pre-compili le JSP con JDK 1.5, ed esegui il "Tomcat portatile" su
una macchina dove è installata la 1.4, ottieni il famigerato errore
"class file has wrong version 49.0, should be 48.0"
che vuol dire "Ehi amico, io qui ho un JRE 1.4, mi hai dato da
eseguire delle classi compilate per la versione 1.5...spiacente, non
so come caricarle!"
E fatele, 'ste prove che vi ho detto!
Ci si diverte un casino (palla mostruosa) e si impara tanto su
Windows, JDK e Tomcat (verissimo)
www.megadix.it

 
si' ma tu eseguirai tomcat portatile con il jre portatile che hai messo
sul cd cosi' ti svincoli da cosa e' installato sulla macchina non ottenendo
il famigerato errore. a naso direi che bastino un paio di modifiche agli
script di tomcat che, se non ricordo male, cercano java in JAVA_HOME.


Aahhh, ma allora non mi credete, vero?
Vi dico che il maledetto Windows, anche se gli dici
JAVA_HOME=vattelapesca, o addirittura gli dici il path assoluto del
java.exe, si ostina a voler utilizzare il JRE indicato nel registry
sputando fuori messaggi di terrorismo psicologico.
Garantito al bicarbonato
www.megadix.it

 Aahhh, ma allora non mi credete, vero?
fatico molto. e' una soluzione che ho in produzione da anni
su una decina di macchine (non per tomcat). fornisco il percorso assoluto
e tutto funziona perfettamente. pochi giorni fa ho fatto un'installazione
di un app java5 con jre privato su un pc java4 senza problemi.

 Windows, JDK e Tomcat (verissimo)
Ehi, ehi... smorza i toni.
Queste sono cose provate, riprovate e consolidate.

> sovrascrive, ovviamente :(
Lol,
Megadix ti spaventi se ti dico che al momento su questa macchina da cui 
scrivo convivono benissimo JSE 1.6.0_01, JDK 1.5.0_12 e JDK 1.4.2_11?
Il tuo problema è che installi anche tutte le JRE, cosa che non è 
necessaria, di JRE te ne basta solo una per far girare i tuoi 
applicativi, ad esempio la JRE 1.6.0_11 ti fa girare tutti le classi 
java scritte anche per le VM precedenti...
Siccome nei singoli JDK c'è già la jre "privata" perchè devi installarne 
altrettante e far incasinare Windows?!
Solo per il bello di cliccare su un file jar e mandarlo in esecuzione!?
Se non installi le JRE contenuti nei bundle nel registro non vai a 
scrivere nulla di più delle tracce lasciate da Windows Installer! ;)
Ciao,
jRed
PS: java jar e tutti vissero felici e contenti! :P

Mi auto-rispondo, per chiarire alcune cose.
I) lo so benissimo che si possono far convivere più JDK / JRE su
Windows, io stesso ne ho installate diverse versioni:
- 1.4.1
- 1.4.2
- 1.5.0_10
- 1.5.0_12
- 1.6.0
e spero di averle citate tutte. Mai avuto un problema, né sulla mia
macchina, né su server vari. Contenti?
II) non volevo sembrare alterato, infatti ho scritto tutto in
minuscolo. Mi scuso se qualcuno si è offeso.
III) Ribadisco...avete fatto le prove che ho indicato? E come è
andata? Avete provato a impostare una JAVA_HOME differente? E se
digitate java -version che succede?
Il problema, e lo scrivo per l'ultima volta dopodiché rinuncerò a
insistere, è che:
- l'installatore del JRE copia in c:\WINDOWS\system32 i file java.exe
e javaw.exe
- anche se nel PATH avete JAVA_HOME e PATH=%JAVA_HOME%\bin, *di
solito* (qualcuno può confutare questa affermazione, please?) C:
\WINDOWS\system32 viene *prima* di questo. Il risultato è che viene
invocata l'ultima JVM installata.
IV) Ma quanti punti sto scrivendo? Adesso ho finito, promesso...
dicevo che mi è capitato *spesso* di fare il giochettino di cui
abbiamo parlato fin'ora, ma delle volte i PC su cui girava il fanta-cd-
super-tomcat-portatile erano di dipendenti senza diritti di
amministrazione; questo probabilmente faceva si che alcune
impostazioni non si potessero cambiare, o che ne so. Fatto sta che su
queste macchine si presentava il problema citato: all'avvio di
java.exe Windows si lamentava del fatto che nel registro fosse
segnalata un'altra versione di Java installata.
Chiedo scusa ancora, ma mi era sembrato che qualcuno stesse dando per
scontati alcuni dettagli. Io personalmente ritengo che nella nostra
professione non ci sia la libertà di dare per scontato nulla,
specialmente per quello che riguarda la compatibilità delle
applicazioni in diversi contesti. Mi sono limitato a riportare la mia
(seppur modesta) esperienza, cercando di mettere in guardia da alcuni
problemi che penso sia normale incontrare. Tutto qua.
www.megadix.it


Di solito e' cosi', l'importante e' impostare la directory corrente quando  
si lancia qualcosa:
"If the file name does not contain a directory path,
the system searches for the executable file in the following sequence:
The directory from which the application loaded.
The current directory for the parent process.
The 32-bit Windows system directory. Use the GetSystemDirectory function  
to get the path of
this directory. Windows Me/98/95:  The Windows system directory. Use the  
GetSystemDirectory
function to get the path of this directory.
The 16-bit Windows system directory. There is no function that obtains the  
path of this
directory, but it is searched. The name of this directory is System.
The Windows directory. Use the GetWindowsDirectory function to get the  
path of this directory.
The directories that are listed in the PATH environment variable. Note  
that this function
does not search the per-application path specified by the App Paths  
registry key.
To include this per-application path in the search sequence, use the  
ShellExecute function."
http://msdn2.microsoft.com/en-us/library/ms682425.aspx
--
Marco
-- 
Posted via a free Usenet account from 
http://www.teranews.com

 invocata l'ultima JVM installata.
Te la confuto volentieri. Un qualsiasi programma può essere invocato
esplicitando il percorso completo del file eseguibile, in quel caso il
PATH non viene valutato. Questo su windows, linux, MacOSX o che ti
pare.

Funziona !!
ho preso la versione zippata di tomcar 6, quella senza installer, ho scopato
via le directoy temp e work, nel server.xml ho definito così la workdir
      <Host name="localhost" appBase="webapps"
       workDir="${java.io.tmpdir}"
       unpackWARs="false" autoDeploy="false" deployOnStartup="true"
       xmlValidation="false" xmlNamespaceAware="false">
      </Host>
poi in setclasspath.bat gli forzo la jre
set JRE_HOME=..\..\jre1.5.0_03_cd
il jre che va su cd
e in catalina.bat
set CATALINA_TMPDIR=%TEMP%\temp
messo tutto su cd, tomcat e jre, lancio startup.bat , apro il browser a
localhost:8080 e và come il vento

 localhost:8080 e và come il vento
Mitico :)
A la proscèn fuà
--
www.megadix.it