要将EntityManager/EntityManagerFactory/PersistenceContext暴露到JNDI,可以按照以下步骤进行:
java:/comp/env/jdbc/myDataSource
这里的java:/comp/env/jdbc/myDataSource是数据源的JNDI名称。
My DataSource
jdbc/myDataSource
javax.sql.DataSource
Container
这里的jdbc/myDataSource是数据源的引用名称。
import javax.naming.InitialContext;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceContext;
...
// 获取EntityManagerFactory
InitialContext ctx = new InitialContext();
EntityManagerFactory emf = (EntityManagerFactory) ctx.lookup("java:/comp/env/persistence/myPersistenceUnit");
// 获取EntityManager
EntityManager em = emf.createEntityManager();
// 获取PersistenceContext
@PersistenceContext(unitName = "myPersistenceUnit")
private EntityManager em;
这里的java:/comp/env/persistence/myPersistenceUnit是EntityManagerFactory的JNDI名称。
通过以上步骤,就可以将EntityManager/EntityManagerFactory/PersistenceContext暴露到JNDI,并在代码中获取它们。