代码之家  ›  专栏  ›  技术社区  ›  Paul C

有没有办法在OSGI中以与spring类似的方式实现多租户?

  •  2
  • Paul C  · 技术社区  · 13 年前

    我店里有人想出了一个聪明的方法来使用spring框架实现多租户。他们基本上用常用的服务创建了一个主要的父应用程序上下文,然后为每个新租户创建一个带有租户特定bean的子上下文。它运行得很好,我们可以快速地找到新租户。

    现在我们有使用OSGI的硬性要求,而且这个模型正在崩溃。我们已经尝试了几种不同的方法,要么它们不起作用,要么我们需要关闭VM来添加新的租户来添加新声明的服务。

    3 回复  |  直到 13 年前
        1
  •  2
  •   Renato    13 年前

    您可以很容易地使用OSGi蓝图来实现这一点。

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

    以下是OSGi蓝图指南:

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

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

    由于捆绑包可以在任何时候动态安装和卸载,因此您应该能够实现比单独使用Spring更好的动态性。

    祝你好运

        2
  •  2
  •   Neil Bartlett    13 年前

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

        3
  •  1
  •   Gunnar    13 年前

    不幸的是,没有一个标准的方法来做到这一点。

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

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