有什么方法可以在运行时注入/选择数据源吗?

时间:2010-10-15 03:33:43

标签: annotations jpa-2.0 java-ee-6 cdi

我有一个包含许多数据库的MySQL数据库,每个数据库都以特定客户命名。

每个客户部署一个webapp。 Web应用程序的名称确定基础数据库名称。当webapp启动时,我有一个修改过的Spring PropertyPlaceholderConfigurer来获取ServletContext,如果它可以并确定名称。然后我在我的数据源设置中取消引用它。工作得很漂亮。完全相同的代码可以部署到所有客户,他们发现他们的数据库没有问题(也是DNS名称,以找到MySQL主机)。

我想切换到GlassFish或JBoss AS 6,并且仍然使用直接的JEE6 API /注释做同样的事情。

有办法做到这一点吗?我并不担心安全性 - 数据集足够大以证明自己的机器和Web应用程序是合理的,并且由于数据库模型与代码相关联,因此需要保持同步。由于不是每个客户都需要掌握最新的手头任务代码,因此会以不同的费率进行修改。

我喜欢JEE6的便利性,它巩固了Spring曾经拥有的东西,然后有些但是我讨厌不得不处理应用程序服务器和他们的白痴,但是拼凑起来Spring也不好玩。

1 个答案:

答案 0 :(得分:1)

  

我想切换到GlassFish或JBoss AS 6,并且仍然使用直接的JEE6 API /注释做同样的事情。

我担心这是不可能的。据我所知,使用容器管理的实体管理器,您将无法在运行时配置其基础数据源。