
[英]How non-jta-datasource working ?is it necessary to provide the persistence unit inside persistence .xml itself?
[英]Create parameterized Persistence Unit + JTA DataSource at Runtime (context dependent)
我正在尝试编写一个获取参数“customerCode”(String)的EJB3无状态会话Bean。 依赖于这个“customerCode”,我想用(动态?)创建的PersistenceUnit创建一个EntityManager(Persistence.createEntityManagerFactory ...)。
我无法在persistence.xml中定义PU,因为它的名称(和基础数据源)必须能够在运行时添加/删除(例如,部署属于特定客户代码的新数据源/持久性单元)。
我可以在persistence.xml中定义PU,因为我事先知道所有的customerCodes,但是如果缺少数据源XML文件,我就无法正确部署我的EAR,因为容器(JBOSS)会查找匹配的数据源。
我能做什么? 提前致谢!
是的,你可以这样做。下面是粗剪。
private static Map<String, EntityManagerFactory> emfMap
= new HashMap<String, EntityManagerFactory>();
private static List<String>customerCodes;
在调用populateEmfMap之前,您需要显式填充此customerCodes列表
public static void populateEmfMap()
{
for (String customerCode : customerCodes)
{
emfMap.put(customerCode,Persistence.createEntityManagerFactory(customerCode));
}
}
您可以通过键从Hasmap中获取它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.