Связь PHP с Java-сервером

Добрый день,

У меня есть проект, в котором мне нужно создать «живое» Java-приложение (сервер) для хранения состояния объектов домена (это система частных аукционов). Java-сервер будет обмениваться данными с классами PHP, которые содержат основные внутренние бизнес-функции. Классы PHP не будут иметь состояния.

Мне нужно передать объекты домена на сервер Java (из PHP), чтобы их состоянием можно было управлять с течением времени. Изменения в объектах домена должны быть сохранены обратно в хранилище данных через вызовы классов PHP на веб-сервере.

Я думал о том, чтобы обернуть свои классы PHP с помощью класса XML-RPC (например, Zend_Xmlrpc_Server), поскольку они не будут иметь состояния. Если/когда java-приложению необходимо записать в хранилище данных (путем вызова правильного метода класса PHP), это вопрос использования класса клиентской библиотеки XML-RPC.

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

Привет, Пол


person Paul Hanssen    schedule 20.08.2009    source источник


Ответы (2)


Предоставьте свой код Java на стороне сервера как веб-службу.

Существует бесчисленное множество способов сделать это в Java, но два из них, которые приходят на ум, — это EJB3 WS. Аннотации и Apache Axis.

Кроме того, какую бы технологию вы ни выбрали, убедитесь, что вы рассматриваете ее как транспорт и отделяете фактическую логику обработки от нее.

person Nick Holt    schedule 20.08.2009
comment
Я поддерживаю этот подход. Вы не хотите тесно связывать эти 2 части системы, и подход веб-сервисов (или основанный на сообщениях, REST,... - список бесконечен) позволяет вам иметь четкий контракт между этими 2 частями. Apache также имеет CXF в качестве альтернативы Axis. - person SteveD; 20.08.2009
comment
Спасибо, но моему внутреннему Java-приложению необходимо хранить состояние, поэтому оно должно постоянно работать в памяти. Совместимы ли эти подходы с этим? Здоровья, Пол. - person Paul Hanssen; 20.08.2009
comment
Как я уже сказал в отношении концепции транспорта, убедитесь, что это отдельно, и тогда у вас останется Java-сервер, который, безусловно, позволит вам поддерживать состояние тем или иным способом. Самый надежный и прямой способ - сохранить его в база данных. - person Nick Holt; 20.08.2009
comment
@stevendick: +1 для обмена сообщениями или REST, это намного проще, чем SOAP WS. - person Nick Holt; 20.08.2009

Вы уже экспериментировали с инструментом PHP Java Bridge?

person mere-teresa    schedule 20.08.2009