Вы не установили правильный дистрибутив Eclipse. Попробуйте установить программу с надписью «Eclipse IDE для разработчиков Java EE».
Поскольку это связь между двумя отдельными запущенными процессами, «прямой» вызов (как в JNI ) невозможен. Самыми простыми способами сделать такое межпроцессное взаимодействие, вероятно, являются именованные каналы и сетевые сокеты. В обоих случаях вам нужно будет определить протокол связи и реализовать его с обеих сторон. Использование стандартного протокола, такого как XML-RPC, упрощает это, но не является строго необходимым.
Обычно существует четыре шаблона для интеграции приложений:
У каждого из этих паттернов есть свои плюсы и минусы, но хорошее практическое правило - выбрать тот, у которого самая слабая связь, которая вам может сойти с рук. Например, если вы выбрали №4, ваше приложение Java может аварийно завершить работу, не отключая также и приложение PHP.
I '
Я пробовал мост PHP-Java (php-java-bridge.sourceforge.net/pjb/), и он работает довольно хорошо. По сути, нам нужно запустить файл jar (JavaBridge.jar), который прослушивает порт (доступно несколько вариантов, таких как локальный сокет, порт 8080 и т. Д.). Ваши файлы классов java должны быть доступны для JavaBridge в пути к классам. Вам необходимо включить файл Java.inc в свой php, и вы сможете получить доступ к классам Java.
Конечно, есть много способов, но вы сказали об ограниченных ресурсах ...
ИМХО определите свой собственный облегченный протокол, подобный RPC, и используйте сокеты TCP / IP для связи. Собственно в этом случае нет необходимости использовать все преимущества RPC и т. Д. Вам нужно только определить API для этого конкретного случая и реализовать его с обеих сторон. В этом случае вы можете сериализовать свои пакеты до очень маленьких. Вы даже можете назначить своего рода GUID своим удаленным методам и использовать их для экономии трафика и ускорения взаимодействия.
Преимущество использования сокетов в том, что ваше решение будет довольно масштабируемым.
Почему бы не использовать веб-службу?
Создайте уровень Java и установите доступ ws (Axis, SpringWS и т. Д.), А Php доступ к Слой Java с использованием одного клиента WS.
Думаю, это просто и полезно.
Вы можете попробовать интеграцию PHP / Java .
Кроме того, если связь односторонняя (что-то вроде «sendmail для IM»), вы можете написать отправляйте запросы PHP к файлу и отслеживайте их в своем приложении Java.
Извините, это немного быстрый ответ, но: я слышал, что сервер приложений Resin поддерживает интеграцию java и PHP.
Они утверждают, что могут разбить php и java вместе: http://www.caucho.com/resin-3.0/quercus/
Я использовал смолу для обслуживания приложений J2ee, но не для его поддержки PHP.
Мне было бы интересно услышать о таких приключения.
Я наткнулся на эту страницу, на которой представлены средства связи двух уровней. Однако для этого по-прежнему требуется средний уровень (TCP / IP). Более того, другие службы также могут использовать службу Java, поскольку она принимает все входящие соединения.
http://www.devx.com/Java/Article/20509
[Исследования ...]
Недавно я тоже столкнулся с этой проблемой. Приведенное выше решение Resin на самом деле является полной переписью PHP на Java по аналогии с JRuby, Jython и Rhino. Он называется Quercus. Но я предполагаю, что для вас, как и для меня, выбросить вашу установку Apache / PHP на самом деле не вариант.
И с Quercus есть еще проблемы: бесплатная версия - GPL, что сложно, если вы мы разрабатываем коммерческое программное обеспечение (хотя и не такое сложное, как хотел бы Ресин (но IANAL)), и, кроме того, бесплатная версия не поддерживает компиляцию в байтовый код, поэтому в основном это интерпретатор, написанный на Java.
В конце концов я решил просто обмениваться простыми сообщениями через HTTP. Я использовал PHP json_encode ()
/ json_decode ()
и Java ' s json-lib для кодирования сообщений в JSON (простой, текстовый, хорошо соответствует модели данных).
Другой интересный и легкий вариант - заставить Java сгенерировать PHP-код, а затем использовать директиву PHP include () для извлечения его через HTTP и его выполнения. Я не пробовал этого.
Если вас беспокоят фактические HTTP-вызовы (для производительности), ни одно из этих решений не поможет. Все, что я могу сказать, это то, что у меня не было проблем с PHP и Java в одной локальной сети. Я считаю, что это не будет проблемой для подавляющего большинства приложений, если вы будете поддерживать свои RPC-вызовы достаточно четко определенными (что вам действительно следует делать в любом случае).
Другой интересный и легкий вариант - заставить Java сгенерировать PHP-код, а затем использовать директиву PHP include () для извлечения его через HTTP и его выполнения. Я не пробовал этого.
Если вас беспокоят фактические HTTP-вызовы (для производительности), ни одно из этих решений не поможет. Все, что я могу сказать, это то, что у меня не было проблем с PHP и Java в одной локальной сети. Я считаю, что это не будет проблемой для подавляющего большинства приложений, если вы будете поддерживать свои RPC-вызовы достаточно четко определенными (что вам действительно следует делать в любом случае).
Другой интересный и легкий вариант - заставить Java сгенерировать PHP-код, а затем использовать директиву PHP include () для извлечения его по HTTP и его выполнения. Я не пробовал этого.
Если вас беспокоят фактические HTTP-вызовы (для производительности), ни одно из этих решений не поможет. Все, что я могу сказать, это то, что у меня не было проблем с PHP и Java в одной локальной сети. Я считаю, что это не будет проблемой для подавляющего большинства приложений, если вы будете поддерживать свои RPC-вызовы достаточно детализированными (что вам действительно следует делать в любом случае).
Были проблемы с PHP и Java в одной локальной сети. Я считаю, что это не будет проблемой для подавляющего большинства приложений, если вы будете поддерживать свои RPC-вызовы достаточно четко определенными (что вам действительно следует делать в любом случае). Были проблемы с PHP и Java в одной локальной сети. Я считаю, что это не будет проблемой для подавляющего большинства приложений, если вы будете поддерживать свои RPC-вызовы в определенной степени (что вам действительно следует делать в любом случае).