我发现了如何在Servlet,控制器类和JSP文件中获取EntityManager和UserTransaction。
让我们从SessionBeans开始。我将所有控制器类都重新定义为无状态SessionBeans。会话Bean允许资源注入。这是我的方法:
@Statelesspublic class UserHandling { @PersistenceContext(unitName = "SSIS2") private static EntityManager em; @Resource private UserTransaction utx; public User getUser(int userId) { User userObject = em.find(User.class, userId); return userObject; }}如果会话Bean类中需要另一个会话Bean,则可以使用
@EJB注释将其注入:
@Statelesspublic class UserHandling { @PersistenceContext(unitName = "SSIS2") private static EntityManager em; @Resource private UserTransaction utx; @EJB UserHandling uh; RoleHandling rh; public User getUser(int userId) { User userObject = em.find(User.class, userId); return userObject; }}在JSP文件中,可以通过查找InitialContext获得Session Bean Controller类:
<% InitialContext ic = new InitialContext(); UserHandling uh = (UserHandling) ic.lookup("java:app/" + application.getContextPath() + "/UserHandling");%>


