我想将超级租户部署的网络服务分享给其他租户。据我所知,如果他们使用http:// localhost:8280 / services / echo?wsdl url,每个人都可以访问超级管理服务。但我不想只是访问超级租户应用程序,我也希望看到正确的租户请求数。我是否必须将相同的应用程序部署到每个租户并使用正确的URL(http:// localhost .com:8280 / services / t / tenantname / echo?wsdl)调用服务来收集请求计数?
还有其他办法吗?例如,也许我可以将头变量放到我正在显示的请求中,哪个租户正在调用应用程序等,并且通过这种方法,我不必将我的服务部署到其他租户。
答案 0 :(得分:0)
您可以使用类似
的代码int tenantId = MultitenantUtils.getTenantId(this.getConfigContext());
获取当前租户的租户ID,并将其发送到消息本身或标头中。然后,您可以通过计算租户ID来记录在服务器端访问的租户。
This将帮助您获取租户ID。
答案 1 :(得分:0)
一种可能性是在每个租户部署应用程序。然后你会得到一个单独的URL。 或者,您可以让您的服务多租户意识到。为此,您需要确保服务安全。登录服务时,我们可以使用用户名确定租户。例如,foo用户应该是超级租户用户,而foo@bar.com应该属于bar.com租户。在这种情况下,碳框架,进行此身份验证并将租户详细信息设置为碳上下文。您可以在服务级别访问它。例如。 CarbonContext.getCurrentContext()。getTenantID()或Maninda提到的方法。
答案 2 :(得分:0)
org.wso2.carbon.tomcat.ext.internal.Utils类有一个名为getTenantDomain的函数。
我已更改此方法以从标题中查找租户域,因此它的工作方式就像魅力一样:)
我认为WSO2也会考虑自定义此方法。