Skip to main content  
        iSeries home   |   Easy400     |   CGIDEV2     |   MMAIL  
Public source
 
Introduzione
 
XLSCONVERT
XLSTABLE
XLSTABLE2
Alcuni programmi CGI
 
Appendici:
 JVMSTARTUP
 
 PDF di questo manuale
 
 Scarica questo tool
 
 

 
 
 
JVMSTARTUP

Tutti i programmatori IBM i sono abituati a lavorare con "library list". Anche la JVM (Java Virtual Machine) lo fa, ma a modo suo. Se queste "liste" non sono correttamente impostate, la applicazione Java va in errore con un messaggio di "classe" o oggetto non trovato. In questa pagina si danno alcuni consigli per una corretta impostazione di tali parametri quando si usano comandi XLPARSE2 o HSSFCGI che fanno uso di codice Java.

  1. I file JAR
    1. Il funzionamento del codice Java si basa sulle cosiddette "classi" Java. Le classi Java vengono raccolte in file di flusso con estensione JAR (Java ARchive). In un certo modo i file JAR possono essere pensati come librerie di programmi.
    2. I file JAR contenuti nell'indirizzario IFS /QIBM/userdata/java400/ext costituiscono una Default Library List di classi Java.
    3. Per impostare una "User Library list" di classi Java, occorre invece specificare path di file JAR nella variabile di ambiente CLASSPATH.
    4. La variabile d'ambiente CLASSPATH è indispensabile quando il codice Java da eseguire si trova in un indirizzario diverso da /QIBM/userdata/java400/ext e va impostata prima dell'avvio della JVM. La JVM non si può riavviare.

  2. I file JAR di XLPARSE2 e di HSSFCGI
    • I file jar di HSSFCGI si trovano in alcuni sottoindirizzari dell'indirizzario /HSSFCGI/java
    • I file jar di XLPARSE2 si trovano in alcuni sottoindirizzari dell'indirizzario /XLPARSE2/java
    • Anche se gli indirizzari sono diversi, i file JAR sono gli stessi nei due casi
    • Quando vine eseguito un comando HSSFCGI o XLPARSE2 che invoca codice Java, il relativo programma imposta un suo CLASSPATH e fa partire (se ancora non è stata avviata) la JVM del lavoro corrente. Dato che nei due casi le classi Java sono le stesse, i CLASSPATH di HSSFCGI e di XLPARSE2 sono equivalenti.
    • HSSFCGI e XLPARSE2 hanno un comando di nome SETDFTJARS che copia i loro file jar nell'indirizzario IFS /QIBM/userdata/java400/ext. Entrambi i comandi danno lo stesso risultato (le class Java sono le stesse). Quando si fa ciò, non è più necessario che venga emessa la variabile di ambiente CLASSPATH - prima dell'avvio della JVM - per poter eseguire il codice Java di HSSFCGI e di XLPARSE2.
      Entrambi i tool hanno un altro comando, di nome RMVDFTJARS che rimuove le loro classi jar dall'indirizzario /QIBM/userdata/java400/ext.
      Il comando SETDFTJAR può essere utilizzato per tentare di risolvere errori dovuti al non ritrovamento di una classe JAR di uno dei due tool.

  3. Lavori che eseguono più di una applicazione Java
    1. Lavori che eseguono sia comandi HSSFCGI che comandi XLPARSE2, in qualunque ordine essi siano, non hanno problemi JVM. Il primo comando HSSFCGI o XLPARSE2 immesso imposta un CLASSPATH che soddisfa entrambi, quindi avvia la JVM.
    2. Lavori che invece utilizzino comandi HSSFCGI e/o XLPARSE2 unitamente ad altre applicazioni Java, possono avere problemi.
      Per evitare problemi, all'inizio del lavoro occorre eseguire il comando HSSFCGI/JVMSTARTUP oppure XLPARSE2/JVMSTARTUP.
      Questo comando fa sì che, in una miscela di applicazioni Java, HSSFCGI ed XLPARSE2 possano essere eseguiti correttamente.

  4. In caso di problemi JVM irresolubili
    Se in un lavoro una combinazione di HSSFCGI e/o XLPARSE2 con altri lavori Java fallisce in modo irresolubile, l'unico modo per uscirne è quello di sottomettere i comandi HSSFCGI e/o XLPARSE2 per una esecuzione in un lavori batch separati. Questo è sempre possibile, dato che tutti i comandi di HSSFCGI e di XLPARSE2 prevedono un parametro SBMJOB. In particolare:
    • Un lavoro sottomesso da XLPARSE2 ha esecuzione "sincrona" con il lavoro che lo ha sottomesso. In altre parole, il lavoro che ha lanciato il lavoro batch resta in attesa del completamemnto di quest'ultimo.
    • Invece un lavoro sottomesso da HSSFCGi ha una esecuzione "asincrona". Il altre parole, il lavoro che la sottomesso continua senza attendere il suo completamento.