【问题标题】:Is there a way to achieve multi-tenancy in OSGI in a similar manner as we did with spring?有没有办法在 OSGI 中以与 spring 类似的方式实现多租户?
【发布时间】:2013-03-05 00:23:18
【问题描述】:

我店里有人想出了一个巧妙的方法来使用 spring 框架实现多租户。他们基本上使用常用服务创建了一个主要的父应用程序上下文,然后为每个新租户创建了一个带有特定于租户 bean 的子上下文。它运行良好,我们可以即时启动新租户。

现在我们对使用 OSGI 有严格的要求,而这种模式正在崩溃。我们尝试了几种不同的方法,要么它们不起作用,要么我们需要关闭 VM 以添加新租户以添加新声明的服务。

【问题讨论】:

    标签: java spring osgi multi-tenant


    【解决方案1】:

    您可以使用 OSGi 蓝图很容易地做到这一点。

    您可能知道 Blueprint 是 Spring Dynamic Modules 的继承者......所以,很明显,Blueprint 上下文和 Spring 上下文之间有很多相似之处。

    以下是 OSGi 蓝图指南:

    http://www.javabeat.net/2011/11/blueprint-and-service-dynamism-in-osgi/

    我建议您创建一个代表您的父 Spring 上下文的“父”捆绑包,然后为每个租户安装一个新捆绑包,该捆绑包使用您的父捆绑包导出的 OSGi 服务。

    由于捆绑包可以随时动态安装和卸载,与单独使用 Spring 相比,您应该能够获得更好的动态。

    祝你好运。

    【讨论】:

      【解决方案2】:

      创建一个父 OSGi 框架,然后为每个租户创建一个单独的 OSGi 框架。使用系统包将共享服务从父框架导出到租户框架。

      【讨论】:

        【解决方案3】:

        很遗憾,没有标准的方法来做到这一点。

        多框架方法(也必须自己实现)的替代方法是引入一个“上下文”对象(如 Spring 应用程序上下文),该对象实现了一个 getService 方法,该方法基于某些租户获取适当的 OSGi 服务特定的过滤器配置。

        我们做了something similar in Gyrex。但同样,它是一个自定义解决方案(不过是开源的),而不是 OSGi 标准。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-11-30
          • 2010-10-11
          • 1970-01-01
          • 2011-10-12
          • 1970-01-01
          • 2018-06-15
          • 2021-05-25
          • 2018-09-13
          相关资源
          最近更新 更多