Это только что обсуждалось в этом вопросе: Thread.sleep () в EJB .
Я бы разделил логику на два EJB: один для вставки пользовательских данных в БДи один для получения его.Ваш веб-слой будет вызывать одну за другой, что приведет к двум отдельным транзакциям, которые должны быть правильно упорядочены базой данных (тем не менее, это может зависеть от других факторов, таких как изоляция транзакции).
EDIT
Проблема с sleep()
в том, что вы никогда не знаете, как долго ждать, поэтому это почти всегда плохая идея.Я вижу случай, когда Ajax push - ваш EJB должен немедленно вернуться со страницей, на которую будут отправлены данные после завершения обработки.Я не буду давать вам дальнейших советов по этой теме, поскольку я далек от опыта в этой области.
Все еще несовершенный, но лучше, чем sleep()
, может синхронизироваться при блокировках базы данных: сначала EJB вставитданные и заблокировать некоторые записи в своей транзакции, второй EJB попытается заблокировать ту же запись и прочитать данные.Таким образом, второй EJB будет ждать минимально необходимого времени.