我正在尝试编写一个获取参数“customerCode”(String)的EJB3无状态会话Bean。 依赖于这个“customerCode”,我想用(动态?)创建的PersistenceUnit创建一个EntityManager(Persistence.createEntityManagerFactory ...)。
我无法在persistence.xml中定义PU,因为它的名称(和基础数据源)必须能够在运行时添加/删除(例如,部署属于特定客户代码的新数据源/持久性单元)
我可以在persistence.xml中定义PU,因为我事先知道所有的customerCodes,但是如果缺少数据源XML文件,我就无法正确部署我的EAR,因为容器(JBOSS)寻找匹配数据源。
我该怎么办? 提前谢谢!
答案 0 :(得分:2)
是的,你可以这样做。下面是粗剪。
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中获取它。