我想在Java EE中创建一个登录应用程序。我想过为用户使用html页面,servlet和实体类来实现它,但似乎EntityManager
不是线程安全的(不能在servlet中注入,我需要它来检查数据库) )。
我读到了EntityManagerFactory
,但是当我可以让容器执行此操作时,我不想管理生成的EntityManager
的生命周期。我认为可以使用DAO模式进行一些实现,这样我就可以在servlet中拥有一个实体管理器,类似于包含管理器的DAOImpl,并将该类作为servlet中的私有变量。但我在网上找不到任何有用的教程。
有人可以为此提供实施吗?
答案 0 :(得分:1)
要做的就是将LoginService创建为@Stateless。它应该包含EntityManager。这个EJB问题是管理登录。
现在将EJB注入您的servlet。
容器会关注并发性。
http://www.adam-bien.com/roller/abien/entry/is_in_an_ejb_injected
答案 1 :(得分:1)
遵循Oracle建议的文档here,任何方法都应该: 要么:
通过SerlvetContextListener在你的dao impl中注入EntityManagerFactory。
@PersistenceUnit
private EntityManagerFactory emf;
或在DaoImpl中注入EntityManager。
@PersistenceContext
private EntityManager em;