2012-05-04 6 views
0

У меня есть веб-сервис, который в зависимости от выполненного вызова мне нужен другой EJB для инъекции. Я могу использовать аннотацию @EJB и указать все EJB, которые можно использовать в веб-службе.Когда введен EJB

Пример:

@EJB 
private EJBType1 ejb1; 
@EJB 
private EJBType1 ejb1; 

@WebMethod 
public String readDataFromType1() { 
    ejb1.call1(); 
} 

@WebMethod 
public String readDataFromType2() { 
    ejb2.call2(); 
} 

То, что я хочу знать, когда будет EJBs вводить? Только при использовании EJB или оба вводятся при выполнении любого вызова веб-службы? Я волнуюсь, что я должен вводить многочисленные EJB, это негативно скажется на производительности.

ответ

0

EJB вводится перед тем, как bean готов к использованию. Таким образом, оба EJBType1 будут введены, хотя ни один из их методов не вызывается. Но есть ли причина беспокоиться? Это зависит.

Если EJBType1 является EJB с удаленным интерфейсом, то получение ссылки на такой компонент может быть дорогостоящим (особенно, если этот компонент является компонентом с состоянием).

Если EJBType1 является локальным интерфейсом EJB, то служебные данные, связанные с вводом такого компонента, не имеют особого значения, особенно для компонента без состояния, который может быть объединен сервером приложений.

+0

EJB все местные. Это просто кажется пустой тратой ресурсов, если они не будут использоваться. Я хочу сделать один EJB, который является точкой входа для всех приложений. Этот интерфейс выполняет базовое ведение журнала аудита и аутентификацию системы. Если это удастся, он вызовет соответствующий EJB. Это означает, что мне придется вводить несколько EJB, где обычно для каждого запроса будет использоваться только один. Но спасибо за подтверждение того, что EJB вводятся, даже если они не используются. – likenoother

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