Главная » Spring » Внедрение компонентов EJB в Spring

0

Компоненты сеансов, определяемые спецификацией EJB 3, – это всего лишь объекты, хранящиеся в репозитории JNDI, подобно лю- бым другим объектам в JNDI. Поэтому элемент <jee:jndi-lookup> можно с успехом использовать для получения компонентов сеанса EJB 3. Но как быть, если потребуется внедрить в контекст прило- жения компонент сеанса EJB 2?

Чтобы получить доступ к компоненту сеанса EJB 2, сначала нужно извлечь объект из JNDI. Но это будет объект, реализующий собственный (домашний) интерфейс EJB, а не сам компонент EJB.

Чтобы получить ссылку на EJB, необходимо вызвать метод create()

домашнего интерфейса.

К счастью, вам не придется вникать во все эти детали при органи- зации доступа к компонентам сеансов EJB 2 с помощью фреймворка Spring. На этот случай вместо элемента <jee:jndi-lookup> фреймворк Spring предлагает два других элемента из пространства имен jee:

# <jee:local-slsb> – для доступа к локальным компонентам се-

ансов;

#  <jee:remote-slsb>  – для доступа к удаленным компонентам се- ансов.

Оба элемента действуют подобно элементу <jee:jndi-lookup>. На- пример, объявить ссылку на удаленный компонент сеанса в Spring с помощью <jee:remote-slsb>  можно следующим образом:

<jee:remote-slsb id="myEJB" jndi-name="my.ejb"

business-interface="com.habuma.ejb.MyEJB"  />

Атрибут jndi-name – это имя в JNDI, используемое для поиска до- машнего интерфейса компонента EJB. А атрибут business-interface определяет прикладной интерфейс, реализуемый компонентом EJB. Определив ссылку на компонент EJB, как показано выше, компо- нент myEJB можно внедрять в свойства любых других компонентов, имеющие тип com.habuma.ejb.MyEJB.

Аналогично, с помощью элемента <jee:local-slsb>, объявляется ссылка на локальный компонент:

<jee:local-slsb   id="myEJB" jndi-name="my.ejb"

business-interface="com.habuma.ejb.MyEJB"  />

Выше  мы  обсудили  особенности  использования  элементов

<jee:local-slsb> и <jee:remote-slsb> для объявления компонентов се- анса EJB 2 в Spring. Но самое интересное в этих элементах состоит в том, что они могут применяться для внедрения компонентов сеансов EJB 3. Они способны извлекать объекты из JNDI и автоматически определять, являются ли они реализациями домашнего интерфейса EJB 2 или компонентами сеанса EJB 3. При получении реализации домашнего интерфейса EJB 2 они автоматически вызывают метод create(). В противном случае они предполагают, что имеют дело с компонентом EJB 3, и внедряют его в контекст Spring.

Поддержка извлечения объектов из JNDI может пригодиться, чтобы организовать обращение к объектам, настраиваемым за преде- лами фреймворка Spring. Как было показано выше, источники дан- ных могут настраиваться на сервере приложений и предоставляться приложениям посредством JNDI. И, как будет показано ниже, под- держка JNDI в Spring может также пригодиться для реализации от- правки электронной почты. Познакомимся с абстракцией электрон- ной почты в Spring.

Источник:   Уоллс К., Spring в действии. – М.: ДМК Пресс, 2013. – 752 с.: ил.

По теме:

  • Комментарии