Можно ли сделать что-то подобное с CDI?
@Named
@ApplicationScoped
public class DAO {
@PersistenceContext
private EntityManager entityManager;
}
Я понимаю, что EntityManager сам по себе не является потокобезопасным и поэтому не должен использоваться в глобальном глобальном контексте, таком как @ApplicationScoped. Однако, поскольку введенный объект с @PersistenceContext на самом деле является обертки, ориентированной на поток, вокруг базового EntityManager, делает ли это это нормально?
Я видел другие сообщения по этому вопросу, но не смог найти авторитетный ответ для этого конкретного случая. Например:
Java CDI @PersistenceContext и безопасность потоков
Похоже, что он безопасен для использования с @Stateless, например, но я не уверен, работает ли это из-за способа @Stateless или из-за чего-то собственного @PersistenceContext.
ИЗМЕНИТЬ
Источником моей путаницы является то, что обертка @PersistenceContext, введенная EntityManager, кажется, знает о текущем потоке, чтобы выяснить, есть ли уже транзакция. Поэтому, возможно, я путаю нить-осведомленность с безопасностью потоков, и это две разные вещи.