Что такое локальное / удаленное и неинтерфейсное представление в EJB? - PullRequest
75 голосов
/ 11 октября 2011

Я пытаюсь понять, какова цель и почему нам нужны различные представления клиентов в EJB. Может ли кто-нибудь попытаться объяснить?

Ответы [ 2 ]

121 голосов
/ 11 октября 2011

Просмотр удаленного клиента

Когда ваш EJB и его клиенты будут находиться в распределенной среде, то есть EJB и клиенты будут находиться на отдельных виртуальных машинах Java. Пример: EJB-компоненты, размещенные на сервере приложений WebSphere, и сервлеты, использующие API-интерфейсы EJB, размещенные на сервере Tomcat.

Вид локального клиента

Только в том случае, если гарантируется, что другие корпоративные компоненты или клиенты будут обращаться только к одному компоненту в пределах одной JVM. Например, EJB, а также сервлеты, развернутые на одном сервере WebSphere.

Вид без интерфейса

Почти так же, как локальный клиент, но есть различия. В этом случае ваш bean-класс не обязан реализовывать интерфейсы представления клиента. Все открытые методы класса bean-компонента автоматически предоставляются вызывающей стороне. представление без интерфейса всегда получает ссылку на EJB - точно так же, как локальное или удаленное представление - либо посредством внедрения, либо поиска JNDI; но Java-тип ссылки на EJB - это тип класса компонента, а не тип локального интерфейса. Это удобство, представленное как часть Java EE6.

Разница между представлением локального клиента и представлением без интерфейса

В случае представления без интерфейса клиент и целевой компонент должны быть упакованы в одном приложении (EAR). В случае локального просмотра клиент может быть упакован в отдельное приложение, чем корпоративное приложение. Таким образом, это дает больше гибкости с точки зрения тонкой настройки ваших компонентов.

В зависимости от сценария использования API вы можете использовать представление локального клиента и представление без интерфейса. Весьма вероятно, что представление без интерфейса получит гибкие функции в будущих спецификациях.

Причина

Исторически или иначе, клиент, желающий использовать службы EJB, должен был «искать» bean-компонент в контейнере (с определенными начальными контекстами). Это произошло потому, что все вызовы выполняются через специальную ссылку EJB (прокси), предоставляемую контейнером. Это позволяет контейнеру предоставлять все дополнительные сервисы компонента, такие как пул, транзакции, управляемые контейнером и т. Д. Таким образом, клиент не может явно создать экземпляр EJB с оператором new. Клиентское представление обеспечивается через определенные интерфейсы, к которым у клиента будет доступ. Реализация прокси на стороне сервера осуществляется на основе этих интерфейсов. Различные клиентские представления определены для соответствия различным сценариям развертывания, как указано выше.

3 голосов
/ 28 декабря 2015

Согласно Разделу 3.2.2 EJB 3.1 Спецификация:

Доступ к корпоративному компоненту только через локальное представление клиента требуется поддержка для локальных клиентов, упакованных в одном и том же приложение в качестве корпоративного компонента, предоставляющего локального клиента Посмотреть. Совместимые реализации этой спецификации могут опционально поддержка доступа к локальному клиентскому представлению корпоративного бина из локальный клиент упакован в другое приложение. Конфигурация требования для доступа между приложениями к представлению локального клиента зависит от поставщика и выходит за рамки данной спецификации. Приложения, использующие межприкладной доступ к локальному клиенту вид не переносимый.

Представление без интерфейса - это просто удобная функция, которая позволяет компоненту выставить представление локального клиента без необходимости объявления отдельного интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...