我需要一种方法来动态指定EJB中的持久性单元。JPA动态持久性单元名称
简化的例子:
我有使用多个数据库的数据存储的应用程序。 每个数据存储在结构上都是相同的。 根据连接到应用程序的客户端,我需要从 访问特定数据存储的数据。
因此,我想使用相同的EJB,以便业务逻辑不重复,但是只需基于客户端选择正确的持久性单元。
到目前为止,我只直接注入了实体管理器,其中持久化单元名称是硬编码的。 有没有一种方法可以将实体管理器动态注入连接到EJB的所需持久性单元? 另外,可以在运行时动态添加持久性单元吗? 我当前必须在persistence.xml文件中指定持久性单元。 理想情况下,我希望在系统运行时根据需要在服务器jdbc/db1,jdbc/db2等上创建池。然后,将这些添加到中央客户端数据库并将其链接到客户端,这样当客户端连接时,它将检查池的名称,并在调用EJB来获取持久性单元时使用它。
我还是Java EE开发新手。任何帮助将不胜感激。
这几乎是我所需要的,但我仍然需要将每个持久性单元预先定义到SharedEntityManagerFactory中。 我希望能够动态添加它们,以便不需要更改代码,也不需要重新部署。我可以简单地将持久性单元的详细信息保存在主数据库中,并在需要时将其链接到客户端。但是,这比将每个数据存储实现为单独的Web服务要好得多。更少的开销。 Web服务具有能够将URL存储在db中并动态使用它的附加好处。我将不得不提出选择。 – likenoother 2012-04-01 08:31:50