【发布时间】:2021-05-22 05:00:10
【问题描述】:
我有一个使用 JSF 在 Tomcat 8.5 上运行的 Java Web 应用程序。每个租户有多个用户,并有自己的 URL,例如:
example.com/tenant1 example.com/tenant2 ... example.com/tenant100
目前这是通过为每个租户部署一次相同的 WAR 文件来实现的,所以我们有
tenant1.war,tenant2.war,...tenant100.war
每个租户在同一个数据库上都有自己的架构,并且应用程序通过 Tomcat 8.5 中的 JNDI 使用自己的数据库登录名。 它还使用容器管理的安全性来处理用户登录。
到目前为止,这一切正常,但随着更多租户(领域)的添加,启动时间开始滞后 - 每个要部署的 WAR 文件大约需要 3 秒。有没有更有效的方法来解决这个问题,以便我们只使用一个 WAR 文件,但仍然有单独的数据库(或模式)和安全性来隔离租户?
我看到 Spring 有一个方法 here 和 Hibernate multitenancy,但我没有使用 JPA/Hibernate 或 Spring。
目前在 Tomcat 上运行,但如果存在的话,我可以切换到 Wildfly 并使用其他一些 JEE 解决方案。
也赞赏任何更通用的架构方法。
【问题讨论】:
标签: java tomcat jakarta-ee wildfly multi-tenant