1

我正在尝试更改使用 JPA2 和 EJB3 以支持多租户的 Java EE Web 应用程序。

我想在我的应用程序请求开始之前设置当前租户 ID,这样应用程序本身就不必知道它在多租户环境中使用。

我试图不使用供应商特定功能来允许自己将应用程序部署到本地容器和谷歌 AppEngine。话虽如此,如果我可以从外部使用供应商特定的功能,例如 servlet 过滤器,这将是一个很好的解决方案。

我目前使用 Glassfish 3.1 作为容器,使用 Hibernate 4.0 作为 JPA2 提供程序。

示例代码将不胜感激。

谢谢你,伊多。

4

2 回答 2

1

JPA 没有定义任何特定的多租户支持。因此,如果不使用提供者特定的功能,可能很难实现。

您可以为每个租户拥有相同的表,但使用不同的架构。然后,您可以拥有一个具有相同映射的不同持久性单元,但在附加的 orm.xml 文件中设置不同的默认模式。

有关 Glassfish 通过 EclipseLink 的多租户支持,请参阅,

http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Advanced_JPA_Development/Single-Table_Multi-Tenancy

于 2012-05-23T13:32:30.647 回答
0

我会使用两个数据库进行多租户。这样,维护仍然更简单。您可以将指标存储在线程本地并在运行时检查它以确定要使用的连接。

于 2012-06-24T01:19:27.980 回答