WEB开发网
开发学院软件开发Java 用 OSGi 应用程序开发和工作的最佳实践 阅读

用 OSGi 应用程序开发和工作的最佳实践

 2010-10-09 08:12:40 来源:WEB开发网   
核心提示: 2. 使用 Blueprint 启用基于服务的供应(专用于WebSphere Application Server)使用 Blueprint 开发和使用 OSGi 服务时,Blueprint 定义将被用来确保在应用程序配置到 WebSphere Application Server 时满足服务依

2. 使用 Blueprint 启用基于服务的供应

(专用于WebSphere Application Server)

使用 Blueprint 开发和使用 OSGi 服务时,Blueprint 定义将被用来确保在应用程序配置到 WebSphere Application Server 时满足服务依赖性。

原因如下

一个 OSGi bundle 清单描述了一个 bundle 从另一个 bundle 导入的包以及导出给其他 bundle 使用的包。因此,对于给定一个具体 bundle,为了满足所有包导入(包括传递依赖),决定一组必须的 bundle 很有可能。一个最佳实践是将界面和实现分到不同的 bundle(见 将 API 从实现分离)。另一个最佳实践是使用 OSGi 服务实现依赖(见 共享服务而不是实现))。这两个最佳实践的结果就是配置包依赖项仅满足界面需求,而不能提供实现 bundle。WebSphere Application Server OSGi 应用程序特性通过使用 Blueprint 定义决定一个 bundle 提供和需要的服务来解决这一问题。然后,在应用程序部署期间使用该信息从应用程序归档文件(.eba)或内部 bundle 存储库(一个配置和管理 WebSphere Application Server 管理的 bundle 存储库)提供实现。

示例

图 1. 基于供应示例的服务

用 OSGi 应用程序开发和工作的最佳实践

图 1 显示了一个 API bundle、一个提供服务的实现和一个使用来自实现 bundle 的客户端 bundle。客户端 bundle 和实现 bundle 在 API bundle 上都有一个包依赖项(package dependency),其中含有服务 Java 界面。客户端 bundle 是 OSGi 应用程序(在内容中列出)的一部分,API 和实现 bundle 是共享的,都是来自于内部 bundle 存储库。API bundle 将配置到 WebSphere Application Server 作为包依赖的结果,如果客户端 bundle 和实现 bundle 都是使用 Blueprint 实现的,那么实现 bundle 也将被配置。如果这两个 bundle 中有一个不使用 Blueprint,那么将不配置实现 bundle 。

上一页  1 2 3 4 5 6 7 8  下一页

Tags:OSGi 应用程序 开发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接