Каковы плюсы и минусы использования RMI или JMS между веб-уровнями и бизнес-уровнями?

StackOverflow https://stackoverflow.com/questions/71144

  •  09-06-2019
  •  | 
  •  

Вопрос

Для типичного приложения веб-клиент-сервлет/WS-бизнес-уровень (Spring или EJB) каковы компромиссы таких подходов, как удаленный RPC или обмен сообщениями между веб-уровнем (сервлет) и удаленным бизнес-уровнем, помимо основные аспекты синхронизации/асинхронности?

Это было полезно?

Решение

Под веб-клиентом вы имеете в виду веб-браузер?Если да, то я рекомендую обратить внимание на такие вещи, как DWR или JAX-RS.RMI или JMS действительно работают только тогда, когда обе стороны представляют собой код Java.

При использовании любой технологии удаленного взаимодействия самая большая проблема при ее использовании заключается в том, насколько навязчивой становится технология для ваших бизнес-объектов.напримервезде используйте интерфейс/исключения RMI или используйте API-интерфейсы JMS внутри вашего бизнес-кода.

Я рекомендую использовать POJO повсюду в Java, а затем использовать такую ​​технологию, как Весеннее удаленное взаимодействие наслаивать ваше промежуточное программное обеспечение, будь то RMI, JMS или что-то еще, но полностью отделить код промежуточного программного обеспечения от вашей бизнес-логики, чтобы вы могли переключаться между технологиями в любое время (и сохранять код бизнес-логики более простым и ориентированным на вашу бизнес-задачу).

Например, см. Реализация Spring Remoting в Camel который затем позволяет вам использовать любой из этих транспортов и протоколов такие как RMI, JMS или даже обычный HTTP, электронная почта, файлы или XMPP, а затем легко переключайтесь между ними, используя простое изменение строки URI.

Другие советы

Мы используем RMI через Spring и считаем его очень простым в использовании, достаточно надежным и быстрым.Хотя наши требования заключались в достаточно отзывчивой ссылке, и реальной необходимости добавлять компонент обмена сообщениями не было.

SUN RMI сломалась для нас.

Настройки и сборка мусора для очень долго работающего приложения с непрерывным обменом сообщениями.Мы вносим исправления, чтобы он работал непрерывно.Приложения JMS, которые мы запускаем, не вызывают ошибок нехватки памяти или проблем с сборкой мусора, которые возникают в RMI.Все, что требует периодического вызова System.gc() и не работает с инкрементальным сбором для восстановления ресурсов, закодировано неправильно.

Надежность RMI повышается с JDK 6 и правильными настройками свойств, но JHC — это обманчивая среда.RMI будет значительно улучшен за счет использования каналов в nio и исправления использования system.gc() в Sun Nio.

Правильный ответ - отдельная связь (механизм) из доменного кода.RPC тесно связан, и протокол и приложение могут мешать друг другу.JMS отделяет протокол от приложения, что является гораздо лучшей парадигмой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top