根据URL切换租户

2020-08-24 23:03发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我在一个店面中有两个网站,每个在租户中。

customStoreFront:

  • 网站1 =>租户主

  • 网站2 =>租户slave1

我想使用不同的URL访问每个网站,例如:

www.company1 .com和 www.company2.com

每个网站的店面Webroot均相同:/

  customstorefront.webroot =/


  

问题在于,当我请求 www.company2.com 时,我没有一个 cms网站 发现异常,因为我是主租户而不是slave1。

我是否应该使用 DataSourceSwitchingFilter TenantActivationFilter 之类的东西来请求所需的租户?

目前,我有一个类似

的异常
  java.lang.IllegalStateException:####################################  #########################
  给定当前租户是<< company2 >> [1091343644],但返回了与Servlet上下文相关的Web上下文(Root WebApplicationContext-:启动日期[2017年10月17日星期二15:00:58 CEST];父级:hybris Application上下文-master)已附加到 其他房客主人
  ################################################  #############


  

当我尝试更改当前租户时。

对此有任何帮助吗?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我在一个店面中有两个网站,每个在租户中。

customStoreFront:

  • 网站1 =>租户主

  • 网站2 =>租户slave1

我想使用不同的URL访问每个网站,例如:

www.company1 .com和 www.company2.com

每个网站的店面Webroot均相同:/

  customstorefront.webroot =/


  

问题在于,当我请求 www.company2.com 时,我没有一个 cms网站 发现异常,因为我是主租户而不是slave1。

我是否应该使用 DataSourceSwitchingFilter TenantActivationFilter 之类的东西来请求所需的租户?

目前,我有一个类似

的异常
  java.lang.IllegalStateException:####################################  #########################
  给定当前租户是<< company2 >> [1091343644],但返回了与Servlet上下文相关的Web上下文(Root WebApplicationContext-:启动日期[2017年10月17日星期二15:00:58 CEST];父级:hybris Application上下文-master)已附加到 其他房客主人
  ################################################  #############


  

当我尝试更改当前租户时。

对此有任何帮助吗?

付费偷看设置
发送
4条回答
Climb_Ma
1楼 · 2020-08-24 23:51.采纳回答

另一种解决方案是使用Hybris运行两个Docker,其中每个实例均在指定的上下文和租户上设置。

Nginx必须重定向到正确的容器。

然后,我使用多租户而不必指定webroot。

My梦
2楼-- · 2020-08-24 23:47

您好,我也在寻找确切的解决方案。 有人可以分享创建多租户的经验。

到目前为止,我已经尝试使用同一数据库创建具有主租户配置副本的多租户,然后仅进行系统更新。 实际的建议是进行初始化以激活从属租户。

在我的组织中,很长时间以来我们都停止了初始化工作,原因是客户数据丢失。 因此,仅尝试使用系统更新[未激活从属租户]

使用master,junit示例-使用初始化能够看到多租户在/hac和/hac_junit中工作。 有人可以建议吗

谢谢。

Doze时光
3楼-- · 2020-08-24 23:42

TenantActivationFilter是前进的方法,DataSourceSwitchingFilter是一个错误的地方,因为它取决于激活的Tenant。

haha101010
4楼-- · 2020-08-24 23:48

嗨,

我尝试的另一种解决方案是为每个租户添加一个webroot,并使用nginx和proxypass添加该webroot

喜欢:

客户请求: www.company1.com => nginx: www.company1.com/webroot1 => hybris

客户请求: www.company2.com => nginx: www.company2.com/webroot2 => hybris

但是现在我在spring security上遇到了麻烦,因为它使用url中的webroot进行重定向,如果在重定向之前将其删除,则我将无法登录。

所以我的问题是:哪种解决方案似乎是最好的? TenantActivationFilter还是webroot和nginx?

一周热门 更多>