Яка різниця між компонентами EJB та CDI?

The відсутність контекстних можливостей у компонентах EJB є найбільшою відмінністю в CDI. Впроваджений проксі-сервер EJB просто вказує або на пул екземплярів, або на один екземпляр компонента для компонента, анотованого @Stateless або @Stateful анотацією відповідно.

Основна причина того, що модель Pojo Programming (Spring) перейняла модель Ejb: Важка вага– Додатки, розроблені на базі EJB, були важкими, оскільки вони використовували бібліотеки Application server + JDK. EJB-контейнер є частиною сервера додатків, наприклад JBoss, і не є легшим веб-контейнером.

У CDI боб є джерело контекстних об'єктів, які визначають стан і логіку програми. Компонентами керують контейнери CDI за допомогою анотацій, що визначають компоненти. Контейнер створює екземпляри залежностей і контролює, коли і як компоненти створюються та знищуються. Анотації — це метадані про код.

Як легкий контейнер, Весна часто вважається заміною EJB.

Існує три типи EJB: сеансові компоненти, компоненти сутності та компоненти, керовані повідомленнями.

Буква «C» у CDI є основною відмінністю між компонентами EJB та керованими компонентами CDI. Компоненти, керовані CDI, є контекстними, а компоненти EJB – ні. Керовані компоненти в CDI живуть у чітко визначеній області. Вони створюються та знищуються на вимогу контейнера.