Я очень плохо знаком с Java EE и пытаюсь понять концепцию локальных интерфейсов и удаленных интерфейсов.
В начальных версиях спецификации EJB EJB-компоненты «предполагались» как удаленные компоненты, и единственный способ вызвать их состоял в том, чтобы сделать удаленный вызов, используя семантику RMI и все накладные расходы, которые это подразумевает (сетевой вызов и сериализация объекта для каждого вызов метода). Клиенты EJB должны были платить штраф за производительность, даже если они размещены на одной виртуальной машине с контейнером EJB.
Позже Sun осознал, что большинство бизнес-приложений на самом деле не распределяют EJB-компоненты на другом уровне, и они исправили спецификацию (в EJB 2.0), представив концепцию локальных интерфейсов, чтобы клиенты, расположенные в одной виртуальной машине с контейнером EJB, могли вызывать EJB-компоненты с помощью прямой вызов метода, полностью обходя семантику RMI (и связанные с этим издержки).
Мне сказали, что одним из больших преимуществ Java EE является то, что его легко масштабировать (что, я считаю, означает, что вы можете развертывать различные компоненты на разных серверах)
Java EE может масштабироваться, но это не обязательно означает распределение компонентов. Вы можете запустить приложение Web + EJB в кластере, не разделяя веб-уровень и уровень EJB.
Предполагается ли использовать удаленные интерфейсы, если вы ожидаете, что ваше приложение будет иметь разные компоненты на разных серверах? И использовать локальные интерфейсы, если ваше приложение будет находиться только на одном сервере?
Я бы сказал так: используйте удаленные интерфейсы, если клиент не находится в той же JVM (это не означает, что используется только один сервер / JVM).
(...) Начать с использования локальных интерфейсов и постепенно обновлять до удаленных интерфейсов, где это применимо?
Я бы, наверное, начал с использования локальных интерфейсов. И, как уже было сказано, переключение на удаленные интерфейсы не всегда обязательно (вы можете кластеризовать объединенную структуру).
Я предлагаю проверить ресурсы, упомянутые ниже (2 первых довольно старые, но все еще актуальны, 2 других более поздние).
Ресурсы