|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jan 2009
Messaggi: 9
|
Quale tecnologia usare?
Ciao a tutti, ho bisogno di un aiuto. Devo fare un'applicazione client-server in cui un'utente possa far partire un'esecuzione composta da una sequenza prestabilita di programmi in fila, ma quando vogliono sia lui che gli eventuali amministratori dell'applicazione devono poter interrompere questa sequenza.
Faccio un esempio per far capire meglio: l'utente dovrà dare un file di input e cliccare sul pulsante di avvio e l'applicazione dovrà passare l'input ad un programma A che genera un output;questo output verrà dato come input ad un programma B e così via. Il passaggio dei file ed il lancio dei programmi non dovrebbe essere un problema; solo non so come riuscire a memorizzare il processo che è in esecuzione quando è stato lanciato un programma per poterlo poi interrompere se così richiesto dall'utente. Avevo pensato di farla tramite j2EE ma non riesco a salvare da nessuna parte un identificatore del processo lanciato, nemmeno nel database in quanto non è serializzabile. Avete per caso consigli su altre eventuali tecnologie che possano favorire applicazioni di questo genere? |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Ogni processo e' identificato da un PID, un Process IDentifier, che alla fine e' un valore numerico, in praticamente tutti i sistemi operativi.
Potresti tenere traccia dei processi mediante il loro PID. PS: Ho un vecchio amico che si chiama Cane (di cognome), e che di mestiere e' proprio l'ingegnere. Se sei tu, ti saluto. Se non sei tu ti saluto lo stesso.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Jan 2009
Messaggi: 9
|
Ma come faccio ad ottenere questo PiD? Perchè quando faccio l'esecuzione con la Runtime.getRuntime().exec(comando) mi ritorna un oggetto di tipo Process e non trovo un metodo per recuperare il suo PID..Sennò esiste un altro comando per lanciare un programma e tener traccia del PID?
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
|
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
![]() in bash si tratta di un compito veramente banale, dovresti banalmente mettere tutti i processi in pipe e lanciarli senza scrivere nessun programma (per interrompere l'esecuzione ti basterebbe premere Ctrl+C o Ctrl+Z se ricordo bene). |
|
|
|
|
|
|
#7 | |||
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
In questo caso il PID del processo potresti ottenerlo in questo modo: 1) lancia il tuo applicativo specificando una custom property (la puoi aggiungere da riga di comando, o se stai sviluppando in un IDE come NetBeans nella pagina delle proprietà del progetto, nella scheda "Run", nel textField "VM Option" aggiungi la stringa in grassetto): Quote:
Quote:
- How a Java Application Can Discover its Process ID (PID) - How can I start a Java process and retain its process id? - Get the PID - Retrieving a VM’s PID (and more info) through Java
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|||
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
e una volta avuto il PID basta lanciare un kill o un kill -9 per essere sicuri se sei sotto linux..
se sei sotto windows invece facendolo in C# è una cavolata così ad occhio...
__________________
|
|
|
|
|
|
#9 | |
|
Junior Member
Iscritto dal: Jan 2009
Messaggi: 9
|
Quote:
Il sistema operativo usato è windows. |
|
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Tra le alternative opterei per l'uso di JNI. Sempre che appunto tu non possa cavartela in maniera più semplice, come ti hanno suggerito sopra.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#11 |
|
Junior Member
Iscritto dal: Jan 2009
Messaggi: 9
|
Ma secondo voi se utilizzo invece che la J2EE i web services,mi può facilitare nel poter lanciare sequenzialmente questi programmi e poterli interrompere quando voglio?
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
visto che sei su windows...
http://msdn.microsoft.com/en-us/libr...s_members.aspx
__________________
|
|
|
|
|
|
#13 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
|
|
|
|
|
|
|
#14 | |
|
Junior Member
Iscritto dal: Jan 2009
Messaggi: 9
|
Quote:
|
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
|
Quote:
http://msdn.microsoft.com/en-us/library/ms682425.aspx il PID viene restituito nella struttura PROCESS_INFORMATION, membro dwProcessId; per attendere che un processo termini prima di far partire il successivo usa WaitForSingleObject sull'HANDLE del processo (membro hProcess della stessa struttura): http://msdn.microsoft.com/en-us/library/ms687032.aspx per terminare prematuramente un processo usa TerminateProcess: http://msdn.microsoft.com/en-us/library/ms686714.aspx ma per quelli con interfaccia grafica sarebbe meglio inviare WM_QUIT. ricordati di chiudere gli HANDLE con CloseHandle quando non li usi piu: http://msdn.microsoft.com/en-us/libr...11(VS.85).aspx anche quelli dei thread primari (membro hThread della struttura). scrivi del codice e vediamo cosa non funziona |
|
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
__________________
|
|
|
|
|
|
|
#17 |
|
Junior Member
Iscritto dal: Jan 2009
Messaggi: 9
|
Il fatto è ke il C# non l'ho mai usato e quindi dovrei iniziare a impararmelo, ed inoltre ho già una gran parte di lavoro del progetto ke devo fare (jsp,servlet,EJB) già fatti in java. Per questo cercavo se possibile di fare tutto in java o tutt'al più in c/c++ inserendolo grazie a JNI..
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Con quel materiale e un po' di studio e prove dovresti cavartela facile (il codice in se è minimale, il tempo lo spendi in funzione della tua conoscenza di JNI).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#19 | ||
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
Quote:
![]() e che c'entrano jsp, servlet ed EJB con un'applicazione client/server?
__________________
|
||
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:42.






















