Buongiorno a tutti,
volevo sottoporvi una domanda: è possibiloe lanciare un eseguibile da un programma scritto in java che funziona via web???e se si, come???
grazie
Buongiorno a tutti,
volevo sottoporvi una domanda: è possibiloe lanciare un eseguibile da un programma scritto in java che funziona via web???e se si, come???
grazie
A dire il vero di "chiaro" c'è ben poco. Un programma Java che "gira" dove? Una "applet" in una pagina web? Una applicazione stand-alone (lanciata in locale o lanciata da web tramite Java Web Start)? Una "web application" Java EE?Originariamente inviato da aleche9argentin
volevo sottoporvi una domanda: è possibiloe lanciare un eseguibile da un programma scritto in java che funziona via web???e se si, come???
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Il programma java è una web application che gira in locale, praticamente viene richiamato dal browser in questo modo: http://localhost:8080/cupnet. L'eseguibile che deve essere chiamato è anch'esso in locale. Praticamente mi servirebbe sapere se è è possibiloe richiamarlo dalla web application java...
so di non essere abbastanza chiaro e non so se queste infomazioni che ho dato sono abbastanza sufficienti per ricevere una risposta...i am sorry![]()
allora se parli di web application policy di sicurezza (e ci mancherebbe) vietano (a meno di speciali permessi) di lanciare programmi o comunque andare a ravanare sul file system locale.Originariamente inviato da aleche9argentin
Il programma java è una web application che gira in locale, praticamente viene richiamato dal browser in questo modo: http://localhost:8080/cupnet. L'eseguibile che deve essere chiamato è anch'esso in locale. Praticamente mi servirebbe sapere se è è possibiloe richiamarlo dalla web application java...
so di non essere abbastanza chiaro e non so se queste infomazioni che ho dato sono abbastanza sufficienti per ricevere una risposta...i am sorry![]()
La web application nasce per spostare la logica dal client al server, ergo non ha più senso che l'applicazione stia sul server senza fare riferimento a robe e/o requisiti sulla macchina (cmq brutti)?
Il codice della web application può benissimo lanciare "qualcosa" (a meno che ci siano restrizioni, dipende dall'application server, che comunque, se il server è "sotto" il tuo controllo puoi toglierle) usando le solite classi di Java dedicate a questo ovvero Runtime (e il suo exec() ) oppure ProcessBuilder.Originariamente inviato da aleche9argentin
Il programma java è una web application che gira in locale, praticamente viene richiamato dal browser in questo modo: http://localhost:8080/cupnet. L'eseguibile che deve essere chiamato è anch'esso in locale. Praticamente mi servirebbe sapere se è è possibiloe richiamarlo dalla web application java...
Il fatto è che la web application può lanciare qualcosa solo sul "server", ovvero dove gira. Non può far lanciare qualcosa sul client direttamente e indiscriminatamente!
Nel tuo caso (particolare) ovvero "gira in locale", allora client e server sono la stessa macchina, quindi se il codice della web application avvia un altro processo lo vedi in questa stessa macchina.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Grazie ancora per l'interessamento e l'aiuto. Nel mio caso, naturalmente l'applicazione è stata pensata per girare da client, ma in questo caso in particolare a me serve mettere sulla stessa macchina sia clien che server e quindi da quanto mi dici non ci dovrebbero essere problemi. Come deve essere il codice per richiamare l'eseguibile da java, magari associato ad un bottone???Originariamente inviato da andbin
Il codice della web application può benissimo lanciare "qualcosa" (a meno che ci siano restrizioni, dipende dall'application server, che comunque, se il server è "sotto" il tuo controllo puoi toglierle) usando le solite classi di Java dedicate a questo ovvero Runtime (e il suo exec() ) oppure ProcessBuilder.
Il fatto è che la web application può lanciare qualcosa solo sul "server", ovvero dove gira. Non può far lanciare qualcosa sul client direttamente e indiscriminatamente!
Nel tuo caso (particolare) ovvero "gira in locale", allora client e server sono la stessa macchina, quindi se il codice della web application avvia un altro processo lo vedi in questa stessa macchina.
Grazie ancora e buona giornata
Ti ricordo che stiamo parlando di una web application, quindi client e server: nel tuo caso girano sulla stessa macchina, ma il meccanismo di funzionamento è uguale al caso in cui i due ambienti siano "fisicamente" distinti, e questo devi tenerlo SEMPRE presente. La cosa importante, comunque, è che tu sia cosciente del fatto che il processo sarà eseguito sul sistema server, indipendentemente da quale sia il client.
Quindi quello che succederà è:
- premi un pulsante sulla pagina aperta nel browser (non ricordo se l'hai detto, ma do per scontato che stiamo parlando di un normalissimo browser web);
- la pagina esegue una chiamata HTTP ad una servlet che gira sul server;
- la servlet, a un certo punto della sua esecuzione, incontrerà ed eseguirà l'istruzione:
(lo stesso effetto può essere ottenuto tramite un uso equivalente della classe ProcessBuilder).codice:Runtime.getRuntime().exec(COMANDO_DA_LANCIARE);
Per altre informazioni ti consiglio di consultare la documentazione di
Runtime (soprattutto i metodi exec()):
http://download.oracle.com/javase/1....g/Runtime.html
ProcessBuilder:
http://download.oracle.com/javase/1....ssBuilder.html
Process:
http://download.oracle.com/javase/1....g/Process.html