java - 有没有一种方法可以在 OSGI 中实现 Multi-Tenancy ,就像我们在 Spring 中所做的那样?

标签 java spring osgi multi-tenant

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

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

最佳答案

您可以使用 OSGi Blueprint 轻松完成此操作。

您可能知道 Blueprint 是 Spring 动态模块的后继者...因此,显然 Blueprint 上下文和 Spring 上下文之间有很多相似之处。

这是 OSGi 蓝图指南:

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

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

由于 bundle 可以随时动态安装和卸载,因此您应该能够获得比单独使用 Spring 更好的动态性。

祝你好运。

关于java - 有没有一种方法可以在 OSGI 中实现 Multi-Tenancy ,就像我们在 Spring 中所做的那样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15213652/

相关文章:

java - Java 中的共享集合锁定

java - 如何使用 ClientCache 在所有集群/实例上的 GemFire 中发布

java - Spring Boot 将 'es' 添加到链接

java - Eclipse Equinox,如何配置自动加载插件文件夹中的包

osgi - OSGi框架如何设置Bundle ID?

java - ORM 技术与 JDBC?

java - 数据库中的 URL

spring - 通过 HTTPS 使用 Spring Boot 1.0.0.RC5 和 tomcat 8.0.3 的 Websocket

java - Spring Security 3.2.7 HttpServletRequest.isUserInRole(String) 不会自动添加 "ROLE_"前缀

java - 在 EDT 中使用 OSGi EventAdmin 是否安全?