2012-01-30 2 views
2

Я прочитал эту большую статью о передовой практике для отображения EJB-JNDI:Понимание EJB-ссылок разметки

http://www.ibm.com/developerworks/websphere/library/bestpractices/increase_app_portability.html

Понятие EJB-ссылки не ясно для меня.

Например, предположим, что у нас есть EJB-jar.xml, содержащий это:

<ejb-ref> 
    <ejb-ref-name>ejb/Bean2Home</ejb-ref-name> 
    <ejb-ref-type>Entity</ejb-ref-type> 
    <home>com.ibm.wsc.Bean2Home</home> 
    <remote>com.ibm.wsc.Bean2</remote> 
    <ejb-link>Bean2</ejb-link> 
</ejb-ref> 

Таким образом, уточнено, что целевой компонент EJB является Bean2 и это простое обозначение означает, что Bean2 должны найти на этот пакет приложений J2EE или файл .ear.

Итак, если разметка ejb-link достаточно детерминанта, чтобы указать правильный способ ссылки на хороший компонент EJB, зачем нужна ассемблер для создания имени JNDI для этого ejb-ref?

Действительно ли это полезно?

ответ

2

Вот некоторые сценарии, которые мы надеемся выяснить, почему <ejb-link/> (или @EJB(beanName="...")) и EJB реф переплеты являются полезными и дополняют друг друга:

  1. Приложение может само по себе быть логически разбиты на компоненты, и разработчик решает использовать EJB для реализации этих компонентов. В этом случае разработчик приложения знает целевой компонент EJB, который клиент хочет использовать. Если существует несколько компонентов, реализующих один и тот же интерфейс, тогда требуется некоторая неоднозначность, и может использоваться <ejb-link/>.

  2. Приложение имеет зависимость от внешней службы. В этом случае приложение знает, что оно имеет зависимость от внешней службы, поэтому <ejb-link/> не может использоваться, поскольку реализация службы не существует в одном приложении.

  3. Приложение имеет зависимость от внешней службы, но минимальная реализация предоставляется в одном приложении. В этом случае разработчик может использовать <ejb-link/>, как в # 1, но у развертывателя есть возможность переопределить этот выбор, как в # 2.

Смежные вопросы