Лучшая практика для общения с сервером Java EE - PullRequest
1 голос
/ 11 августа 2011

У нас есть приложение Swing.Теперь мне нужно настроить сервер Java EE, который предоставляет некоторые услуги этим клиентам Swing в локальной сети.

Как лучше всего это реализовать, учитывая, что клиент и сервер взаимодействуют обоими способами?

Ответы [ 6 ]

2 голосов
/ 11 августа 2011

Если клиенты находятся в локальной сети, а вы программируете обе стороны, я бы взял RMI. Потому что он гораздо более производительный, чем веб-сервисы. Я думаю, что это родной способ связи с сервером Java EE.

Возможно, вам следует создать классы Facade на стороне сервера, которые предоставляют услуги.

1 голос
/ 11 августа 2011

Если вам нужна гибкость, используйте Spring remoting , так как он абстрагирует слой удаленного взаимодействия, поэтому возможное изменение реализации сохраняет ваши руки в чистоте.

Я использую HTTP Invoker , потому что он легкий и использует сериализацию Java, так что это хороший выбор для клиента Java -> Связь с сервером Java.

Недостатком HTTP Invoker, в отличие от RMI, является то, что вы всегда получаете новые экземпляры объектов с сервера, поэтому, если объект, отправленный с клиента, изменяется на сервере, это изменение не будет отражено в экземпляр клиента.

Хорошая информация здесь: Соображения при выборе технологии

1 голос
/ 11 августа 2011

Использование JAX-RS с реализациями, такими как Джерси или Apache CXF с форматом данных XML или JSON - неплохой вариант.

0 голосов
/ 11 августа 2011

Я бы предложил Spring RPC или, возможно, EJB 3, если у вас есть сервер Java EE и вы предпочитаете придерживаться стандартов спецификации Java EE Веб-сервисы не являются бинарными и поэтому страдают от проблем с производительностью.

0 голосов
/ 11 августа 2011
  • RMI - Это довольно хорошо для Java-приложений, но общая совместимость невелика. Если я представлю, что вы хотите переключиться с Swing на другую технологию или добавить другого клиента, не написанного на Java, тогда RMI будет кошмаром.

  • Веб-сервисы - не распространяется на оба направления связи. Это хорошо для Swing - Java EE, но вам придется также сделать несколько WS (или любой другой механизм предоставления доступа) на стороне Swing, который позаботится о связи Java EE - Swing. Например. как REST на Java EE и XML-RPC на Swing.

Вы также можете подумать об использовании ESB .

0 голосов
/ 11 августа 2011

Я бы посоветовал использовать Веб-сервисы .

...