Сейчас я работаю над миграцией с EJB 2.0 на 3.0. Старые сеансовые компоненты использовали xdoclets для настройки некоторых вещей.
Я могу понять почти все из них, но есть одна вещь, которая меня беспокоит. Почему кто-то использует @ejb.ejb-ref
так, как в коде ниже.
/**
* @ejb:bean name="SomeBean"
* local-jndi-name="com/my/jndi/SomeBean"
* view-type="local" type="Stateless"
*
* @ejb.ejb-ref ejb-name="SomeBean"
* view-type="local"
*
* ..some more stuff here
*/
public class SomeBean implements SessionBean {
// class body here
}
В этом xdoclet есть еще несколько @tags
, включая некоторые для настройки weblogic (@weblogic
).
Есть ли какая-то причина, по которой мы можем захотеть добавить ссылку на сам компонент? Второй вопрос, нужен ли еще этот конфиг в ejb3?
У меня такое чувство, что я где-то читал, что эти @weblogic
теги могут иногда нуждаться в такой ссылке, но я просто не могу найти ее еще раз. Это правда?
@РЕДАКТИРОВАТЬ
После разговора с одним из авторов таких классов я узнал, что такая самоссылка может использоваться, когда один из методов bean-компонента вызывает второй метод (для которого может потребоваться новая транзакция), используя ссылку на экземпляр класса, которым он владеет.
После обновления его можно заменить чем-то вроде этого ниже.
@Stateless
public class SomeBean implements IBeanLocal {
@EJB
IBeanLocal someBean;
// class body here
}
Мое замешательство было в основном вызвано некоторым ненужным использованием такого рода самореференции. Как указал Steve C, вероятно, кто-то не знал, как использовать эту функцию xdoclet.