Выполнять вызовы объекта Java, работающего в существующей JVM с PHP
Я вхожу в существующий проект, который подразумевает множество удаленных объектов, взаимодействующих друг с другом для вычисления и передачи данных.
Моя цель - создать веб-приложение, позволяющее конечному пользователю вводить некоторые данные и получать результаты после обработки через существующее распределенное приложение.
В связи с этим я искал способ совершать вызовы существующих объектов Java с помощью PHP, но в большинстве случаев речь шла о том, как создать JVM и создать экземпляры объектов непосредственно в PHP, но не получить доступ к существующей и работающей JVM.
Итак, что может быть лучшим способом сделать это? Я также слышал о создании сервлета, но на данный момент у меня нет реальных знаний об этом, поэтому я отправляю SOS в бутылке сообществу Stackru, надеясь, что кто-то (и я уверен, что это так) найдет хороший ответ на этот вопрос. та проблема:-)
Спасибо за ваше время!
3 ответа
Вам нужно изменить приложение Java. Вы должны добавить какой-то удаленный интерфейс к этому приложению, который затем может быть использован PHP. Если вы неопытны в Java, вам не повезло.
Одним из вариантов, описанных выше, является сервлет, который в основном означает предоставление вашего Java-приложения через интерфейс REST или SOAP. Это может быть или не быть самым простым решением, в зависимости от вашего Java-приложения. Если это веб-приложение, вам повезло. Вы можете попробовать использовать JAX-WS для этого. Недостатком является то, что такое общение связано с накладными расходами. Если ваше java-приложение является программой командной строки, вы можете использовать встроенный контейнер сервлетов, такой как Jetty, или попробовать использовать WSpublish (встроенный в java 6).
Вы можете попробовать Гессиана. Это двоичный протокол веб-службы, который поддерживает как PHP, так и Java. Я широко использовал его в java-средах, но он может работать и в сценарии php-java. http://hessian.caucho.com/
Как видите, вариантов много, но все они требуют знаний и опыта в JAVA и не могут быть описаны в одном предложении или двух.
Самый простой пример Java-WS, который я видел, можно найти здесь: http://java.dzone.com/articles/jax-ws-hello-world?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+javalobby/frontpage+(Javalobby+/+Java+Zone)
Может быть, вы можете попробовать проект PHP/Java Bridge: http://php-java-bridge.sourceforge.net/pjb/
Есть одна дверь в работающую виртуальную машину Java: расширения управления Java. Дверь должна быть разблокирована изнутри, поэтому приложение должно предлагать несколько управляемых bean-компонентов, а jvm должен запускаться с некоторыми параметрами.
Но как только это настроено правильно, у вас есть открытый порт, где вы можете читать и устанавливать данные из / в экземплярах или выполнять методы.
Я не могу точно сказать, насколько сложно использовать это соединение с jvm из "других языков", может быть, вам просто нужно иметь возможность эмулировать сериализацию объектов javas с помощью php. Но это может быть предложением решения вашей актуальной проблемы.