Что такое локальное / удаленное представление без интерфейса в EJB?

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

2 ответа

Решение

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

Когда ваш 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.2.2 EJB 3.1 Спецификация:

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

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

Другие вопросы по тегам