2010-01-24 3 views
42

Mam witrynę internetową i chcę umożliwić użytkownikowi uruchomienie pliku Java na serwerze ze strony internetowej.Uruchom plik klasy Java ze skryptu PHP na stronie internetowej

Chcę, aby użytkownik kliknął przycisk, który uruchomi plik Java na serwerze ORAZ wszystko, co wydrukowano do standardowego wyjścia przez program Java, zostanie wydrukowane na stronie internetowej, aby użytkownik mógł ją zobaczyć.

Jak to zrobić (wywołanie programu Java z PHP i dostarczenie standardu z pliku Java z powrotem na stronę PHP w czasie rzeczywistym)?

Aktualizacja:

Dzięki za odpowiedzi, w jaki sposób uruchomić program Java z PHP. Jednak chcę również móc, podczas gdy program Java drukuje na standardowe wyjście, gdzie będzie drukował dużo tekstu podczas wykonywania, aby móc wydrukować to na stronie internetowej, aby użytkownik mógł zobaczyć, na jakim etapie Program Java jest w trakcie wykonywania.

Jak to zrobić i czy wymaga to dodatkowego AJAX, JavaScript lub czegoś w tym stylu?

Odpowiedz

44

exec() PHP funkcja jest do zrobienia, ale trzeba być bardzo ostrożny w tym, co pozwala na wykonywany .. innymi słowy nie opierać się na danych wprowadzonych przez użytkownika, ponieważ może to potencjalnie kompromis cały serwer.

Wywołanie programu uruchamiającego Java za pomocą komendy exec pozwala na uruchamianie dowolnej aplikacji Java z PHP, np.

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

HI James, wykonywanie java jest dając mi Permission denied błąd. moim użytkownikiem jest apache. –

14

Skoro wspomniałeś czasie rzeczywistym Proponuję utworzenie PHP Java Bridge. Inicjowanie maszyny JVM przy każdym żądaniu zajmuje wiele zasobów.

PHP/Java Bridge

PHP/Java Bridge jest implementacja o streamingu, protokół sieciowy oparty na języku XML, który może być wykorzystane do podłączenia natywną skrypt silnik, na przykład PHP, schemat lub Python z maszyną wirtualną Java lub ECMA 335 . To jest do 50 razy szybciej niż lokalne RPC za pośrednictwem SOAP, wymaga mniej zasobów po stronie serwera WWW . Jest szybszy i bardziej niezawodny niż bezpośrednia komunikacja za pośrednictwem interfejsu Java Native i nie wymaga dodatkowych komponentów do wywoływania procedur Java z procedur PHP lub PHP z Java.

4

Wolałbym owinąć klasę Java w apletu Java, które następnie mogą być wywołane z javascript wywołania po stronie klienta: patrz http://www.rgagnon.com/javadetails/java-0170.html

inaczej, jeśli wywołanie rzuca dużo tekstu standardowe wyjście lub klasa musi być uruchomiona na serwerze z powodu zależności systemu, wywołanie z php exec jest drogą do zrobienia, ale prawdopodobnie będziesz potrzebować czegoś takiego jak , aby wyświetlać tekst na kliencie w czasie rzeczywistym. Istnieją implementacje różnych zestawów narzędzi javascript, takich jak Dojo lub jQuery.

Wydaje się, że po stronie serwera istnieje implementacja cometd w php here.

Mam nadzieję, że to pomaga ...

Philippe