与 OSGi 捆绑软件高速缓存交互

捆绑软件高速缓存是单元范围存储器(或服务器范围存储器,对于单服务器系统),用于存储 OSGi 应用程序所引用的捆绑软件以及从内部和外部存储库下载的捆绑软件。 您可以使用管理控制台或 OSGi BundleCacheManager MBean 的方法与捆绑软件高速缓存进行交互。

有关此任务

您可以获取捆绑软件高速缓存中的最新捆绑软件列表、检查是否已成功下载所有捆绑软件以及请求再次下载一个或多个捆绑软件。 对于给定的捆绑软件,您可以查看捆绑软件大小、下载状态以及使用该捆绑软件的资产和组合单元的列表。 还可以查看和刷新主管该捆绑软件的存储库 URL。

通过使用管理控制台与 OSGi 捆绑软件高速缓存交互和通过使用 MBean 接口与该高速缓存交互的主要差别如下:
  • 您可以使用 " 捆绑软件高速缓存 [集合] " 面板来更改表中的排序顺序,并按 (例如) 捆绑软件名称或捆绑软件状态进行过滤。
  • 可以使用 MBean 接口从高速缓存中除去捆绑软件。

OSGi BundleCacheManager MBean 接口的方法记录在生成的 API 文档的 其他应用程序编程接口 (API)v 部分中。

将 MBean 方法与 wsadmin 脚本编制客户机AdminControl 对象 配合使用。 例如:
objNameString = AdminControl.completeObjectName('WebSphere:type=BundleCacheManager,*')
print AdminControl.invoke(objNameString, 'areAllDownloadsComplete')

您可能要为其与捆绑软件高速缓存交互的某些公共任务如下:

过程

  • 询问捆绑软件的状态。
    可以使用 MBean 接口来完成以下任务:
    • 检查特定捆绑软件的状态。
    • 列示已完成的下载。
    • 列示未成功的下载。
    同样,所有捆绑软件的状态都显示在 捆绑软件高速缓存 [集合] 面板上。 这是下列其中一个状态:
    未知
    此捆绑软件不在捆绑软件高速缓存中,不存在下载此捆绑软件的请求。
    已请求下载
    已发出请求以下载捆绑软件,但下载尚未开始。
    正在下载
    正在下载捆绑软件。
    已下载
    已完成捆绑软件下载。
    失败
    下载捆绑软件已失败。
    未保存
    如果您导入了资产并且尚未将更改保存到主配置,那么捆绑软件处于未保存状态。
    在保存更改后才会下载该捆绑软件。
  • 在将企业捆绑软件归档 (EBA) 资产添加到业务级应用程序之前,检查所有捆绑软件下载是否都已完成。

    如果所有捆绑软件下载都已完成,那么每个捆绑软件的状态在 " 捆绑软件高速缓存 [集合] " 面板上显示为 已下载

    可以使用脚本编制将 EBA 文件作为资产导入,然后将该 EBA 资产添加到业务级应用程序。 然而,在下载完所有捆绑软件之前,无法将该资产添加到应用程序。 因此,您可以选择编写脚本来调用 areAllDownloadsComplete 方法,然后在将 EBA 资产添加到业务级应用程序之前,等待到该方法确认已下载所有捆绑软件。

  • 解析未成功的捆绑软件下载。

    如果未下载某个捆绑软件,请完成下列步骤:

    1. 确定原因(例如,不正确的存储库地址或网络故障)。

      捆绑软件的 捆绑软件高速缓存 [设置] 表单 显示存储库地址,并包含用于刷新此地址的按钮。 如果移动了某个捆绑软件(例如,从内部捆绑软件存储库移至外部存储库),那么这将很有用。 如果捆绑软件状态为 失败,那么将显示 捆绑软件下载异常 窗格。 此窗格包含跟踪信息,以帮助您了解捆绑软件下载失败的原因。

    2. 再次下载捆绑软件。
      使用下列任一方法:
      • 使用 resetBundleDownload 方法以使该捆绑软件可供再次下载,然后使用 downloadBundles 方法重试下载。
      • 在 " 捆绑软件高速缓存 [集合] " 面板上,选择一个或多个捆绑软件,然后单击 再次下载捆绑软件
  • 从高速缓存中除去某个捆绑软件。
    只能够通过使用 MBean 接口来完成此操作;请完成以下步骤:
    1. 卸载使用该捆绑软件的应用程序。
    2. 使用 removeBundleFromCache 方法从捆绑软件高速缓存中移除该捆绑软件。
    3. 重新安装应用程序。
    如果您想要反复添加或移除 OSGi 扩展,而不删除组合单元,那么可以使用 OSGi BundleCacheManager MBean 接口和 removeBundleFromCache 方法。 此外,可以删除组合单元,然后将组合单元添加到业务级应用程序。
    注: 删除扩展的组合单元时,将自动删除该扩展的捆绑软件高速缓存条目。 如果您不从业务级应用程序中删除组合单元,那么不会自动删除捆绑软件高速缓存条目。