pdf / 7-ejb
.pdfEnterprise Beans
EJB & Container
Что такое EJB
Серверный компонент реализующий бизнес логику
Работает под управлением контейнера
Может быть настроен в момент размещения на сервере путем изменения environment entries
Сервисная информация (о транзакциях, безопасности) может быть размещена в метаданных (аннотации или в ХМЛ)
Клиент работает с EJB через контейнер
Типы EJB
Stateless service
Stateless service + web service endpoint
Асинхронный stateless service
Stateful service
Entity
Когда использовать session EJB
Только один клиент должен работать с экземпляром бина
Коротко живущий
Не переживает перезапуск сервера
Может быть транзакционным
Может изменять общие данные в БД
Не является прямым отображением сущности из базы данных
Возможные типы клиентов: Remote, Local, Web Service (только для stateless)
Remote vs Local
Распределенные системы |
В пределах одной JVM |
Меньше связанность |
Pass-by-reference |
между компонентами |
Низкие накладные |
Pass by value |
расходы |
Параметры serializable |
Возможность вызова |
Возможно большие |
множества мелких методов |
накладные расходы |
|
Дополнительные ошибки |
|
исполнения (сетевые |
|
проблемы, ...) |
|
Обычно используется для |
|
«больших» операций |
|
Пример
@Remote
public interface InterfaceName { ... }
@Remote(InterfaceName.class) public class BeanName implements InterfaceName { ... }
Использование
@EJB Cart cart; //dependency injection
Life cycle (Stateful)
Создание
Create
Выполняется Dependency injection
@PostConstruct
@Init method
Passivate
@PrePassivate
@PostActivate
Удаление
@Remove
@PreDestroy
Instance Passivation
Serializable object |
Resource manager |
Null |
connection factory |
Ссылка на EJB |
EJB 2 |
SessionContext
Naming Context
UserTransaction
EntityManager
EntityManagerFactory
javax.ejb.Timer
Life cycle (Stateless)
Создание
Выполняется Dependency injection
@PostConstruct
Удаление
@PreDestroy