繁体   English   中英

在运行时创建参数化持久性单元+ JTA数据源(取决于上下文)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM