EJB - Главная/Удаленный и LocalHome/Локальные интерфейсы

Пересмотр некоторых прошлых экзаменационных документов для экзамена в основном сосредоточен на компонентно-ориентированном дизайне и J2EE, я столкнулся с следующим вопросом:

Предварительное исследование сценария 3: "Запрос Exchange" предполагает, что два EJB предоставят подходящее решение: сеанс bean, называемый EnterExchangeRequest, для управления обработкой и объект bean, называемый ExchangeRequest, для представления постоянных свойств запрос. Обсудите роль следующих интерфейсов:

  • Главная
  • Remote
  • LocalHome
  • Local

и как они будут предоставлять доступ к службам EJB, описанным выше.

Я мог бы попытаться объяснить, как интерфейсы Home и Remote будут вписываться в изображение. Я также слышал, как лектор сказал, что заменить Home на LocalHome и Remote на Local (почему?), Но почему они просят меня обсудить роль всех четырех одновременно?


Правильно ли, когда я говорю, контейнер EJB (сервер приложений) увидит, что интерфейс Home или Remote, а затем решил, что bean может "жить" на любой машине в кластер, в то время как в интерфейсах LocalHome и Local контейнер будет знать, что beans не может быть распределен между несколькими машинами и поэтому сохранит их "живыми" только на одной машине?


Я полностью потерялся в этом Java Jungle этого предприятия. Я испытываю BeanOverflow. Не могли бы вы рассказать мне, какие из моих допущений ошибочны, указать на мои заблуждения и промахи.

Спасибо всем, кто хочет помочь мне с этими интерфейсами EJB.

P.S. Обратите внимание, что я не прошу вас ответить на вопрос из прошлой экзаменационной работы. Просто любопытно, есть ли у вас какие-либо мысли относительно того, что они могут после этого спрашивать.

Ответы

Ответ 1

Как указано в Yishay, Home/Remote и LocalHome/Local связаны друг с другом, а домашний интерфейс функционирует как конструктор.

Локальные beans привязаны к JVM, в котором они живут, вы не можете получить к ним доступ извне. Удаленный beans можно получить из других JVM.

Я использую аналогичный подход: я всегда использую уши. beans для уха я делаю локальный beans, beans, предназначенный для использования другими ушами, я делаю удаленный. Но можно использовать локальный beans в других ушах, если они развернуты в одном JVM

Ответ 2

Главная отвечает за создание Remote (вроде своего конструктора), а LocalHome и Local имеют одинаковые отношения.

В каждом случае контейнер предоставляет вам прокси, который ссылается на настоящий класс EJB, который вы пишете.

Если бы я должен был догадаться, то, что искал вопрос, было использование удаленного для сеанса bean и локального для объекта bean.

Во всяком случае, хотя эти концепции все еще существуют, в EJB3 все было намного упрощено.

EDIT: В ответ на комментарий, с EJB3, сам класс bean может непосредственно реализовать удаленный и домашний интерфейсы (для сеанса beans). Они создаются EJB с одной аннотацией. Устоятельно beans есть еще несколько аннотаций для решения государственных проблем. Объект beans не имеет домашнего интерфейса и не нуждается в локальном интерфейсе, вы можете напрямую взаимодействовать с объектом java. Существует EntityManager, который извлекает правильный объект beans на основе запроса и что EntityManager вводится через аннотацию.

Это подводит итог в параграфе. В Интернете есть большие учебные пособия, но EJB в целом решают класс проблем, который трудно оценить, если вы не справитесь с этой проблемой. Это не единственный способ решить эту проблему, но, если вы не справитесь с этим типом программирования, просто чтение о ней не поможет вам в этом.