2010-01-24 8 views
42

Ich habe eine Website und möchte in der Lage sein, den Benutzer eine Java-Datei auf dem Server von der Website ausführen zu lassen.Führen Sie Java-Klassendatei von PHP-Skript auf einer Website

Ich möchte, dass der Benutzer auf eine Schaltfläche klickt, die die Java-Datei auf dem Server ausführt UND alles, das von dem Java-Programm ausgedruckt wird, wird auf der Website für den Benutzer ausgedruckt.

Wie kann das gemacht werden (Java-Programm von PHP aufrufen und den Standard aus der Java-Datei in Echtzeit auf die PHP-Website zurückführen)?

Update:

Danke für die Antworten darauf, wie das Java-Programm von PHP laufen. Ich möchte aber auch in der Lage sein, da das Java-Programm auf stdout druckt, wo es viel Text während der Ausführung ausdruckt, um dies auf der Webseite auszudrucken, so dass der Benutzer sehen kann, in welcher Stufe der Java-Programm ist in seiner Ausführung.

Wie kann dies gemacht werden und erfordert es zusätzliche AJAX oder JavaScript oder ähnliches?

Antwort

44

Die PHP exec() Funktion ist der Weg zu gehen, aber Sie sollten seine sehr vorsichtig in dem, was Sie erlauben .. Mit anderen Worten ausgeführt nicht auf Benutzereingaben vertrauen, da es potenziell beeinträchtigen könnte Ihre gesamter Server.

Wenn Sie den Java Application Launcher mit exec aufrufen, können Sie jede Java-Anwendung von PHP ausführen, z.

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

HALLO james, java Ausführung ist mir die Erlaubnis verweigert Fehler geben. Mein Benutzer ist Apache. –

14

Da Sie Echtzeit erwähnen würde ich vorschlagen, eine PHP zu Java Bridge einrichten. Das Initialisieren der JVM bei jeder Anforderung benötigt eine Menge Ressourcen.

PHP/Java Bridge

Das PHP/Java Bridge ist eine Implementierung eines Streaming, XML-basiertes Netzwerkprotokoll, das einen native Skript Motor verbinden kann verwendet werden, um zum Beispiel PHP, Scheme oder Python, mit einem Java oder ECMA 335 virtuelle Maschine. Es ist bis zu 50 Mal schneller als lokale RPC über SOAP , erfordert weniger Ressourcen auf der Web-Server-Seite. Es ist schneller und zuverlässiger als direkte Kommunikation über die Java Native Schnittstelle, und es erfordert keine zusätzliche Komponenten, um Java Prozeduren von PHP oder PHP-Prozeduren von Java aufrufen.

4

Ich würde lieber die Java-Klasse in einem Java-Applet wickeln, die dann von einem JavaScript-Aufruf auf der Client-Seite aufgerufen werden kann: http://www.rgagnon.com/javadetails/java-0170.html

Ansonsten sehen, wenn der Anruf zu viel Text wirft die Standard-Ausgabe oder die Klasse muss auf dem Server wegen Systemabhängigkeiten ausgeführt werden, Aufruf von PHP Exec ist der Weg zu gehen, aber Sie werden wahrscheinlich so etwas wie benötigen, um den Text auf dem Client in Echtzeit anzuzeigen. Es gibt Implementierungen für verschiedene Javascript Toolkits wie Dojo oder jQuery.

Für die Server-Seite scheint es eine cometd-Implementierung in PHP here zu geben.

Ich hoffe, das hilft ...

Philippe

Verwandte Themen