Запустить файл класса Java из скрипта PHP на веб-сайте - PullRequest
45 голосов
/ 24 января 2010

У меня есть веб-сайт, и я хочу, чтобы пользователь мог запускать файл Java на сервере с веб-сайта.

Я хочу, чтобы пользователь нажал кнопку, которая запустит файл Java на сервере, и все, что будет распечатано программой Java, будет распечатано на веб-сайте для просмотра пользователем.

Как это можно сделать (вызвать программу на Java из PHP и вывести стандарт из файла Java обратно на сайт PHP в режиме реального времени)?

Обновление:

Спасибо за ответы о том, как запустить программу на Java из PHP. Однако я также хочу иметь возможность, поскольку Java-программа печатает на стандартный вывод, где она будет печатать много текста во время выполнения, чтобы иметь возможность распечатать это на веб-странице, чтобы пользователь мог видеть, на какой стадии Java-программа находится в своем исполнении.

Как это можно сделать и требует ли он какого-либо дополнительного AJAX или JavaScript или чего-то подобного?

Ответы [ 5 ]

48 голосов
/ 24 января 2010

Функция PHP exec() - это путь, но вы должны быть очень осторожными в том, что вы разрешаете выполнять ... другими словами, не полагайтесь на пользователя ввод, поскольку он может потенциально поставить под угрозу весь ваш сервер.

Вызывая панель запуска приложений Java с помощью exec, вы можете запустить любое приложение Java из PHP, например,

<?php exec("java -jar file.jar arguments", $output); ?>
16 голосов
/ 24 января 2010

Поскольку вы упоминаете в реальном времени, я бы предложил настроить PHP на Java Bridge. Инициализация JVM при каждом запросе занимает много ресурсов.

PHP / Java Bridge

PHP / Java Bridge - это реализация потоковой передачи, Сетевой протокол на основе XML, который может использоваться для подключения нативного скрипта движок, например PHP, Scheme или Python, с Java или ECMA 335 виртуальная машина. До 50 раз быстрее, чем локальный RPC через SOAP, требует меньше ресурсов на сторона веб-сервера. Это быстрее и более надежный, чем прямой связь через Java Native Интерфейс, и это не требует дополнительные компоненты для вызова Java процедуры из PHP или процедуры PHP с Java.

5 голосов
/ 25 января 2010

Я бы предпочел обернуть класс Java в апплет Java, который затем может быть вызван из вызова javascript на стороне клиента: см. http://www.rgagnon.com/javadetails/java-0170.html

В противном случае, если вызов выбрасывает много текста на стандартный вывод или класс должен быть запущен на сервере из-за системных зависимостей, вызов php exec - это путь, но вам, вероятно, понадобится что-то вроде cometd для отображения текста на клиенте в режиме реального времени. Существуют реализации для различных наборов инструментов JavaScript, таких как Dojo или jQuery.

Для серверной части, похоже, есть реализация cometd в php здесь .

Надеюсь, это поможет ...

Philippe

4 голосов
/ 24 января 2010

Проверить exec и другие функции выполнения программы .Но сделайте это очень осторожно, или это рецепт для подвигов.

2 голосов
/ 24 января 2010

Является ли функция passthru каким-либо использованием?

http://www.php.net/manual/en/function.passthru.php

...