Sono sempre io...
ho una domanda sul comando che mi hai scritto:
--while (eseguibile gira)--
Se il mio eseguibile è un oggetto della classe Process, come faccio a dirgli che devi fare tutto finche il processo non finisce????
Sono sempre io...
ho una domanda sul comando che mi hai scritto:
--while (eseguibile gira)--
Se il mio eseguibile è un oggetto della classe Process, come faccio a dirgli che devi fare tutto finche il processo non finisce????
una cosa tipo
codice:class Processo { boolean finito = false; void runProcess() { Process p = ... Messaggio m = new Messagio(this); p.waitFor(); finito = true; } } class Messaggio extends Thread { private Processo processo; Messaggio(Processo proc) { processo = proc; start(); } public void run() { while (!processo.finito) { ... } } }
Ho fatto come mi hai detto te...adattandolo alle mie esigenze.
Compilo e lo lancio...intanto che esegue il processo compare il messaggio...come volevo!!!
Ora ho un'altro problema...quando io rilancio il processo la seconda volta il messaggio non mi compare più...perchè???
Bisogna forse interrompere il Thread la prima volta???
In ogni caso GRAZIE...sei stato gentilissimo!!!!
Ok ho risolto!!!
Ora però ho un altro problema...
Io vorrei che lo stesso messaggio mi comparisse insieme al messaggio che mi dà il mio processo intanto che è in esecuzione.
Mi spiego meglio...per prima cosa uso anche pagine jsp...
Intanto che il processo viene eseguito io vedo sul browser di Internet una clessidra...posso far comparire contemporaneamente un messaggio vicino ogni 2 minuti???
Grazie!!!
abbastanza complicato
1 soluzione - scrivi nel response il tuo messaggio e chiami flush sull'output stream, il codice html viene mandato al client e visualizzato nel browser (brutto)
2 soluzione - il thread separato scrive il messaggio in un file di log, la response viene chiusa subito, la pagina che hai mandato al client fa un auto refresh nel quale legge nel file di log e mostra il messaggio, se vuoi farla semplice la pagina (senza auto refresh) contiene un link che aprirà una nuova pagina che dovrà leggere nel log
La prima soluzione mi sembra la più semplice...no!?!
Ok...va bene per il response ma come si fa a mettere il flush...mi spieghi meglio???
Grazie...
PrintWriter pw = response.getWriter();
pw.write(...);
pw.flush();![]()
Ok però a me serve sempre che lo faccia ogni due minuti senza interrompere il processo...non dovrei metterlo nella classe messaggio che ho creato...
L'idea credo sia che si comporti come un thread ma che invece che stamparmi il messaggio sulla riga di comando me lo faccia comparire nel browser...
Non lo so però ho l'impressione che facendo come mi hai detto te la cosa sia statica...il tempo ad esempio come glielo do!!!
:master:
suppongo che hai scritto una roba del genere
while (cond) {
Thread.sleep(2 minuti);
System.out.println(messaggio);
}
al posto del out.print metti il codice che dicevo
Allora scrivo..
while (cond) {
Thread.sleep(2 minuti);
ServletResponse response=null;
PrintWriter pw = response.getWriter();
pw.write(msg);
pw.flush();}
importo javax.servlet.ServletResponse;
---va in errore e mi dice:
java.lang.NullPointerException
----
Perchè????