我有一个 MySQL 数据库,其中包含许多数据库,每个数据库都以特定的客户命名。
每个客户部署一个 webapp。webapp 的名称决定了底层数据库的名称。当 webapp 启动时,我有一个修改过的 Spring PropertyPlaceholderConfigurer 来获取 ServletContext(如果可以)并确定名称。然后我在我的数据源设置中取消引用它。工作精美。完全相同的代码可以部署给所有客户,他们可以毫无问题地找到他们的数据库(也是用于定位 MySQL 主机的 DNS 名称)。
我想切换到 GlassFish 或 JBoss AS 6,并且仍然使用直接的 JEE6 API/注释做同样的事情。
有没有办法做到这一点?我不担心安全性——数据集足够大,足以证明它们自己的机器和 web 应用程序的合理性,并且由于数据库模型与代码相关联,它们需要保持同步。由于并非每个客户都需要手头任务的最新代码,因此他们以不同的速度进行修订。
我喜欢 JEE6 的便利性,它整合了 Spring 曾经拥有的很多东西,然后还有一些,但我讨厌不得不处理应用程序服务器及其白痴,但将 Spring 拼凑在一起也不好玩。