2010-01-24 11 views
42

Ho un sito Web e voglio essere in grado di consentire all'utente di eseguire un file Java sul server dal sito web.Esegui file di classe Java da script PHP su un sito Web

Desidero che l'utente faccia clic su un pulsante che eseguirà il file Java sul server E qualsiasi cosa stampata sullo standard-out dal programma Java verrà stampata sul sito Web affinché l'utente possa vederla.

Come si può fare (chiamare il programma Java da PHP e reindirizzare lo standard dal file Java al sito Web PHP in tempo reale)?

Aggiornamento:

Grazie per le risposte su come eseguire il programma Java da PHP. Tuttavia voglio anche essere in grado, come il programma Java sta stampando su stdout dove stamperà molto testo mentre è in esecuzione, per poterlo stampare sulla pagina web in modo che l'utente possa vedere in quale fase Il programma Java è in esecuzione.

Come può essere fatto e richiede ulteriori AJAX o JavaScript o qualcosa del genere?

risposta

44

La funzione PHP exec() è la strada da percorrere, ma si dovrebbe essere molto attenti in quello che si consente di eseguire .. in altre parole non si basano su input dell'utente come potrebbe potenzialmente compromettere la vostra intero server.

Chiamando il programma di avvio applicazioni Java utilizzando exec, è possibile eseguire qualsiasi applicazione Java da PHP, ad es.

<?php exec("java -jar file.jar arguments", $output); ?> 
+1

HI James, l'esecuzione di Java è dandomi il permesso negato errore. il mio utente è apache. –

14

Dal momento che si parla in tempo reale Vorrei suggerire la creazione di un PHP a Java Bridge. L'inizializzazione della JVM ad ogni richiesta richiede molte risorse.

PHP/Java Bridge

The Bridge PHP/Java è un implementazione di uno streaming, basato su XML protocollo di rete, che può essere utilizzato per collegare un nativo motore di script , ad esempio PHP, Scheme o Python, con una macchina virtuale Java o ECMA 335 . È fino a 50 volte più veloce di RPC locale tramite SOAP, richiede meno risorse sul lato server Web . E 'più veloce e più affidabile di comunicazione diretta attraverso la Java Native Interface , e non richiede alcuna componenti aggiuntivi per richiamare Java procedure da PHP o procedure PHP da Java.

4

avrei preferito avvolgere la classe Java in un applet Java, che possono poi essere richiamato da una chiamata JavaScript sul lato client: vedi http://www.rgagnon.com/javadetails/java-0170.html

In caso contrario, se la chiamata getta un sacco di testo per lo standard output o la classe deve essere eseguito sul server a causa delle dipendenze del sistema, chiamare php exec è la strada da percorrere, ma probabilmente avrete bisogno di qualcosa come per visualizzare il testo sul client in tempo reale. Esistono implementazioni per vari toolkit javascript come Dojo o jQuery.

Per il lato server, sembra esserci un'implementazione cometd in php here.

Spero che questo aiuta ...

Philippe