|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2010
Città: Ancona
Messaggi: 893
|
Bloccare un file ".jar"
Ciao a tutti,
volevo sottoporvi una questione... cercherò di essere il più preciso possibile. Ho un'applicazione scritta in JAVA che gira su una macchina con SO "Ubuntu 13.10". Gira come applicazione ".jar". Siccome questa applicazione, sotto determinate condizioni, si blocca volevo sapere se esiste la possibilità di creare, sempre in JAVA, un'altra applicazione "supervisore" che monitora il lavoro della prima e la chiude in caso si blocchi. Al momento uso codice scritto direttamente da SO, in sostanza uso la parola chiave "kill" per chiudere il ".jar" e poi lo faccio ripartire. Come posso by-passare questa operazione? Grazie mille in anticipo!!! |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Quote:
|
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: May 2010
Città: Ancona
Messaggi: 893
|
Quote:
Uno dei piani (tipo piano "c") è questo che ho appena descritto. Ho già pensato di creare un thread che supervisioni il programma che si blocca(che quindi diventerebbe un thread "figlio"), il problema è che girando su Linux, per la gestione di scheduling che ha, potrei creare dei problemi "sincronismo" fra tutti i thread che così creerò. Per quanto riguarda il motivo che blocca l'applicazione originale, è un problema di connessione. Ho un socket che prende i dati da un server, ma se la connessione cade per più di un minuto circa il sistema si blocca... ma ripeto ancora devo debuggaarlo in locale quindi è difficile anche per me essere chiaro ed esauriente! |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Come ti è stato già detto la cosa migliore da fare è correggere il programma. L'istruzione che apre la connessione ha un parametro che consente di impostare il timeout. Se questo viene raggiunto viene sollevata un'eccezione che puoi intercettare e gestire in modo opportuno.
Per rispondere alla tua domanda poi, cosa c'è che non va con il metodo che hai già adottato? |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: May 2010
Città: Ancona
Messaggi: 893
|
Quote:
Per rispondere alla tua domanda poi, cosa c'è che non va con il metodo che hai già adottato?[/quote] Quale metodo? Quello dei thread? |
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2005
Messaggi: 395
|
Ciao
Ma l'applicazione è costituita dal solo jar o c'è un application server a monte ? Genera dump quando si blocca ? Io proverei a fare un thread dump del processo java per vedere dove sono bloccati i thread, o eventualmente capire se c'è qualche leak di memoria. Infine, se l'applicazione si collega a un db, ammesso ci sia un connection pool, andrebbe visto su quest'ultimo se restano sessioni aperte con relativi lock. |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Allora vedi qui:
http://docs.oracle.com/javase/6/docs...meout%28int%29 Intendevo il metodo con il "kill". |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Quote:
Come fai ad accorgerti che il processo in esecuzione è "bloccato" per poi utilizzare il comando "kill" (kill è un comando vero e proprio) ?? Hai un tuo metodo? Il processo dice parolacce? |
|
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: May 2010
Città: Ancona
Messaggi: 893
|
Quote:
Cmq stiamo deviando dalla mia domanda originale. Posso bloccare un eseguibile che sta girando su un SO con un altro eseguibile? |
|
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Quote:
Ora ti chiedo di nuovo: "Come te ne accorgi che il tuo processo in esecuzione non funziona più come dovrebbe?" |
|
![]() |
![]() |
![]() |
#11 | |
Senior Member
Iscritto dal: May 2010
Città: Ancona
Messaggi: 893
|
Quote:
Monitorando con uno sniffer la rete si vede che dopo che la connessione cade e viene ristabilita dopo più di un minuto, non ci sono più richieste da e verso detto server. L'applicazione non manda segnali di alcun tipo nè solleva eccezioni. |
|
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Allora non puoi farci nulla. Bisogna modificare il sorgente. Questo perché un processo esterno non può sapere se il programma in esecuzione è realmente bloccato oppure semplicemente non ha nulla da fare in quel momento. A meno che non abbia un file di journaling che può essere consultato dall'esterno che dice ad esempio "ho cominciato il download", "ho terminato il download ", ecc...
Inviato da una supercazzola ed un Nexus 5 scappellato a sinistra.. con senso unico |
![]() |
![]() |
![]() |
#13 | |
Senior Member
Iscritto dal: May 2010
Città: Ancona
Messaggi: 893
|
Quote:
![]() ![]() |
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Cos'è, un indovinello?
Ti ripropongo la mia domanda, cos'ha che non va il kill? |
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Vedo che hai quartato. Comunque se vuoi è molto più semplice implementare un file di journaling che far testare la rete al programma. Sono davvero poche righe di codice. A quel punto un semplicissimo script pianificato con crontab e sei a cavallo
Inviato da una supercazzola ed un Nexus 5 scappellato a sinistra.. con senso unico |
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: May 2010
Città: Ancona
Messaggi: 893
|
Quote:
non è che non posso... ma vorrei trovare anche un'altra soluzione... Ok grazie mille! |
|
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Jan 2014
Messaggi: 852
|
Ah certo, non avevo associato
![]() I processi si possono terminare anche "programmaticamente" (si può dire?), alcuni linguaggi potrebbero mettere a disposizione delle api portabili, con altri invece devi ricorrere a quelle del sistema operativo. Questo "monitor" vorresti farlo sempre in java? PS. in ogni mio post ti ripeterò sempre che la retta via è quella di correggere il programma principale. |
![]() |
![]() |
![]() |
#18 | |
Senior Member
Iscritto dal: May 2010
Città: Ancona
Messaggi: 893
|
Quote:
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 03:09.