我正在尝试更改使用JPA2和EJB3支持多租户的Java EE Web应用程序。
我想在我的应用程序请求开始之前设置当前的租户ID,因此应用程序本身不必知道它在多租户环境中使用。
我尝试不使用供应商特定功能,允许自己将应用程序部署到本地容器和Google AppEngine。话虽如此,如果我可以使用来自外部位置的供应商特定功能,例如servlet过滤器,这将是很好的解决方案。
我目前使用Glassfish 3.1作为容器,Hibernate 4.0作为JPA2提供程序使用。
非常感谢示例代码。
谢谢你, IDO。
答案 0 :(得分:1)
JPA没有定义任何特定的多租户支持。因此,如果不使用提供程序特定功能,可能很难实现。
您可以为每个租户使用相同的表,但使用不同的架构。然后,您可以拥有一个具有相同映射的不同持久性单元,但在另一个orm.xml文件中设置不同的默认架构。
对于通过EclipseLink在Glassfish中的多租户支持,请参阅
答案 1 :(得分:0)
我会使用两个数据库进行多租户。这样,维护更简单。您可以在线程本地存储指示符,并在运行时检查它以确定要使用的连接。