领先一步
VMware 提供培训和认证,以加速您的进步。
了解更多SpringSource Application Platform 的主要优势之一是其能够根据需要配置依赖项。这样做的好处有两个:它确保平台的内存占用尽可能小,并且允许应用程序部署而无需将所有依赖项封装在一个单一的部署单元中,例如 WAR 文件。为了利用这些功能,您需要了解平台的配置存储库,而这篇博文的目的正是提供这些知识。
当平台启动已部署的应用程序时,其捆绑包将安装到 Equinox 中。然后,平台会要求 Equinox 提供所有捆绑包未满足的依赖项列表,并尝试满足这些依赖项。让我们通过一个简单的示例场景来分析此过程
如果平台无法从其存储库中满足依赖项,则会生成一条详细说明无法满足的依赖项的日志消息。有了这些信息,您可以使用 SpringSource Enterprise Bundle Repository 获取所需的内容。我们希望存储库提供尽可能完整的捆绑包集:如果您需要某个依赖项但它不可用,请 告知我们。
如上所述,平台使用在启动期间填充的配置存储库的内存中索引。此外,平台还将在每次部署应用程序时检查其对存储库的视图是否是最新的。当您要安装具有新依赖项的应用程序时,只需将依赖项复制到存储库中的相应位置,然后部署您的应用程序。在部署处理期间,平台将注意到存储库已更新,并将刷新其对存储库的视图。这意味着您无需每次要安装具有新依赖项的应用程序时都花费时间重新启动平台。
在创建配置存储库时平台扫描的位置可以在 config/platform.config 文件中配置。在没有特定配置的情况下使用的默认配置为
"provisioning" : {
"searchPaths": [
"repository/bundles/subsystems/{name}/{bundle}.jar",
"repository/bundles/ext/{bundle}",
"repository/bundles/usr/{bundle}",
"repository/libraries/ext/{library}",
"repository/libraries/usr/{library}"
]
}
平台将任何相对路径解释为相对于其安装根目录,也支持绝对路径。花括号内的搜索路径中的条目只是通配符,例如,子系统搜索路径 repository/bundles/subsystems/{name}/{bundle}.jar 将查找 subsystems 目录的任何直接子目录中以 .jar 结尾的文件。
希望您能看到,在平台之间共享配置存储库的一部分或全部是一个简单的更改。例如,要使平台搜索文件系统根目录中名为 shared-bundles 的目录以及它自己的 subsystems 和 ext 目录,您只需将以下 JSON(JavaScript 对象表示法)代码段添加到 platform.config 文件中即可
"provisioning" : {
"searchPaths": [
"repository/bundles/subsystems/{name}/{bundle}.jar",
"repository/bundles/ext/{bundle}",
"/shared-bundles/{bundle}",
"repository/libraries/ext/{library}",
"repository/libraries/usr/{library}"
]
}
通过使用此配置配置两个或多个平台安装,可以使它们共享 /shared-bundles 中的捆绑包。通过将所有搜索路径配置为指向共享位置,可以轻松地更进一步,因此您根本不需要管理每个平台的配置存储库。
我们还打算通过允许平台配置为在尝试满足依赖项时可选地搜索远程存储库,来结合平台的按需配置和 SpringSource Enterprise Bundle Repository 的强大功能。如果在远程存储库中找到依赖项,平台将自动处理其下载和安装。希望这将使开发人员的生活更加轻松,尤其是在应用程序开发的初始阶段,因为定期会添加新的依赖项。
在我们处理上述增强功能和平台本身时,我们很乐意听到您的建议:请随时评论此博客文章、提交 JIRA 或在我们的 论坛 上发帖。