首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使tomcat成为SaaS的多租户

使tomcat成为SaaS的多租户
EN

Stack Overflow用户
提问于 2011-09-30 13:02:37
回答 1查看 1.7K关注 0票数 1

我们的tomcat服务器提供单个war文件,该文件由3个不同的相同数据库为3个租户提供服务。

计划是使用JNDI数据源(3个数据源)并使用抽象工厂来实例化该租户所需的子类。

希望使用容器管理的身份验证。

我们希望使用内置的Java安全注释,如@RolesAllowed等。身份验证是通过HTTP Basic Auth实现的。这对于一个租户(默认配置)非常有效。然而,我想不出一个好的解决方案,tomcat可以根据上下文(https://server/resources/CLIENT1/Blah)识别租户,然后查找适合CLIENT1/2/3等的JNDI。

有什么想法或建议?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-01 02:39:51

通过创建虚拟主机解决

为本地主机localhost2创建了两个虚拟主机

为UserDatabase UserDatabase2创建了两个领域(用于测试的UserDatabase领域)

两个主机都指向相同的文档根目录

通过调用http://localhost/service,使用realm UserDatabase,并调用http://localhost2/service,使用realm UserDatabase2

多亏了Tomcat文档。

代码语言:javascript
运行
复制
  <Service name="Catalina">
            <Host appBase="webapps" autoDeploy="false" name="localhost" unpackWARs="true">
                <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." resolveHosts="false" suffix=".txt"/>
            </Host>
            <Host appBase="webapps" autoDeploy="false" name="localhost2" unpackWARs="true">
                <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase2"/>
            </Host>
        </Engine>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7606137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档