EJB - Home / Remote и LocalHome / Локальные интерфейсы - PullRequest
15 голосов
/ 27 мая 2009

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

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

  • Главная
  • Remote
  • LocalHome
  • Местное

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

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


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


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

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

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

Ответы [ 2 ]

7 голосов
/ 28 мая 2009

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

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

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

7 голосов
/ 27 мая 2009

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

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

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

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

РЕДАКТИРОВАТЬ: В ответ на комментарий, с EJB3, сам класс bean-компонента может напрямую реализовать удаленный и домашний интерфейсы (для сессионных bean-компонентов). Они сделаны EJB с одной аннотацией. Бины с состоянием имеют еще пару аннотаций для решения проблем состояния. Объектные компоненты не имеют интерфейса Home и не нуждаются в локальном интерфейсе, вы можете напрямую взаимодействовать с Java-объектом. Существует EntityManager, который извлекает нужные сущностные компоненты на основе запроса, и этот EntityManager внедряется с помощью аннотации.

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

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