Выполненный файл класса Java из Сценария PHP на веб-сайте

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

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

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

Обновление:

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

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

45
задан tree-hacker 25 January 2010 в 13:50
поделиться

5 ответов

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

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

<?php exec("java -jar file.jar arguments", $output); ?>
49
ответ дан 26 November 2019 в 21:19
поделиться

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

4
ответ дан 26 November 2019 в 21:19
поделиться

Используется ли функция passthru?

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

2
ответ дан 26 November 2019 в 21:19
поделиться

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

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

Для сторон сервера в PHP, кажется, реализация Cometd .

Я надеюсь, что это поможет ...

Philippe

5
ответ дан 26 November 2019 в 21:19
поделиться

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

PHP / Java Bridge

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

16
ответ дан 26 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: