1

我想将部署在超级租户中的 Web 服务分享给其他租户。据我所知,如果他们使用 http://localhost:8280/services/echo?wsdl url,每个人都可以访问超级管理员服务。但我不想仅仅访问超级租户应用程序,我还希望看到正确租户的请求计数。我是否必须将相同的应用程序部署到每个租户并使用正确的 url (http://localhost.com:8280/services/t/tenantname/echo?wsdl) 调用服务来收集请求计数?

有没有其他方法可以做到这一点?例如,也许我可以将标头变量放入正在显示的请求中,哪个租户正在调用应用程序等,并且通过这种方法,我不必将我的服务部署到其他租户。

4

3 回答 3

0

您可以使用类似的代码,

int tenantId = MultitenantUtils.getTenantId(this.getConfigContext());

获取当前租户的租户 ID 并将其发送到消息本身或标题中。然后你可以通过统计租户ID来记录服务器端访问的租户。

将帮助您获取租户 ID。

于 2013-01-08T10:25:02.013 回答
0

一种可能性是在每个租户处部署应用程序。然后你会得到一个单独的 URL。否则,您可以让您的服务具有多租户意识。为此,您需要确保服务安全。登录服务时,我们可以使用用户名来确定租户。例如 foo 用户应该是超级租户用户,而 foo@bar.com 应该属于 bar.com 租户。在这种情况下,碳框架执行此身份验证并将租户详细信息设置为碳上下文。您可以在服务级别访问它。例如。CarbonContext.getCurrentContext().getTenantID() 或使用 Maninda 提到的方法。

于 2013-02-19T03:19:41.593 回答
0

org.wso2.carbon.tomcat.ext.internal.Utils 类有一个名为 getTenantDomain 的函数。

我已更改此方法以从标头中查找租户域,因此它的工作原理很吸引人:)

我想WSO2也想定制这个方法。

于 2013-06-11T13:10:30.023 回答