Что здесь происходит? Это просто захватывает экземпляр EJB из пула EJB сервера приложений?
Конечная точка веб-компонента JAX-WS (в отличие от конечной точки EJB JAX-WS) следует типичной модели потоков сервлета, что означает, что обычно существует один экземпляр, который выполняется одновременно для каждый клиент. Реализации JAX-WS могут свободно использовать пулы экземпляров bean-компонентов для обработки запроса аналогично EJB-компонентам сеансов без сохранения состояния. (источник: Разработка приложений для Java TM Платформа EE FJ-310).
Во всех случаях нормально вводить / искать bean-компоненты без состояния, потому что контейнер гарантирует, что bean-компоненты всегда будут безопасны для потоков. В действительности, контейнер автоматически сериализует клиентские вызовы, но использует пул экземпляров, чтобы убедиться, что вы по-прежнему получаете преимущества параллелизма.
Если на сервере развернуто более 1 EJB, как он узнает, какой из них получить?
Хмм ... я этого не понял. Можете ли вы уточнить, что именно вы имеете в виду? С какой стати двусмысленность?
Где выполняется поиск jndi в базе данных (возможно, в файле persistence.xml)?
В среде Java EE источник данных указывается в элементе <jta-data-source>
в каждой единице сохраняемости файла persistence.xml
(которая может содержать несколько единиц постоянства), а источник данных будет получен с помощью EntityManager
(только при необходимости, т.е. только если действительно необходим доступ к данным).
Все ли EJB имеют общий EntityManager
?
Нет. EntityManager
- это не потокобезопасный объект, который следует использовать один раз для одного бизнес-процесса, одной единицы работы и затем отбрасывать. В среде Java EE, использующей EJB 3, шаблоном по умолчанию является «entitymanager-per-request». Запрос от клиента отправляется на уровень персистентности EJB 3, открывается новый EntityManager
, и все операции с базой данных выполняются в этой единице работы. Когда работа завершена (и ответ для клиента подготовлен), контекст постоянства сбрасывается и закрывается, а также объект диспетчера сущностей. (источник: Глава 4. Транзакции и параллелизм ).