代码之家  ›  专栏  ›  技术社区  ›  mP.

我想从数据库或其他源加载我的OSGI jar文件

  •  2
  • mP.  · 技术社区  · 16 年前

    4 回复  |  直到 16 年前
        1
  •  3
  •   Dieter    16 年前

    鉴于加载机制基本上与URL一起工作,我建议 尝试自定义URL处理程序。从逻辑上讲,您需要在使用此处理程序加载任何捆绑包之前加载并激活它,否则我认为它应该可以工作。

    Glassfish is using this approach to install webapp bundles

        2
  •  2
  •   Pavol Juhos    16 年前

    一个简单的解决方案是创建您自己的引导捆绑包,该捆绑包将从数据库(或其他位置)提供所有其他捆绑包。OSGi允许您从任意位置安装捆绑包 InputStream 因此,将其插入您想要的任何源(例如JDBC)应该相当容易。

    看见 BundleContext.installBundle()

    您不应该寻找一个“回调”,框架将通过它通知您“何时需要加载所需的依赖项”,因为自动依赖项管理(alamaven)不是核心OSGi功能的一部分(尽管可以通过使用类似 OBR

        3
  •  1
  •   SteveD    16 年前

    查看PAX URL项目: http://wiki.ops4j.org/display/paxurl/Documentation

    对于捆绑包版本,您需要一些机制来确定要加载哪些捆绑包(和版本)。您将使用版本信息将捆绑包存储在数据库中,否则如何存储同一捆绑包的不同版本?

        4
  •  0
  •   omerkudat    16 年前

    您总是可以将它们从数据库(或其他)下载到本地位置,然后动态地将它们安装到OSGi框架中。您只需要为框架提供捆绑包的文件系统路径。当然,您必须自己编写所有的粘合代码。另一方面,如果您使用的是EclipseP2,那么由于自动化资源调配,您可能会有更多的灵活性。