0

我正在尝试编写一个获取参数“customerCode”(字符串)的 EJB3 无状态会话 Bean。依赖于这个“customerCode”,我想用一个(动态?)创建的 PersistenceUnit 创建一个 EntityManager(Persistence.createEntityManagerFactory ...)。

我无法在persistence.xml 中定义PU,因为它的名称(和底层数据源)必须能够在运行时添加/删除(例如部署属于特定客户代码的新数据源/持久性单元)。

我可以在persistence.xml 中定义PU,因为我事先知道所有的customerCode,但是如果缺少数据源XML 文件,我将无法正确部署我的EAR,因为容器(JBOSS)会寻找匹配的数据源。

我能做些什么?提前致谢!

4

1 回答 1

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 中获取它。

于 2011-09-23T07:18:16.213 回答