首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

为 WebSphere Application Server 开发企业 OSGi 应用程序(3)

为 WebSphere Application Server 开发企业 OSGi 应用程序(3)

开始使用 OSGi 应用程序有几种方法可以开始在 WebSphere Application Server 上部署您的首个 OSGi 应用程序。最常见的方法也许是从您已经熟悉的一个现有 Java EE Web 应用程序开始,或者从 OSGi 应用程序特性中包含的样例应用程序开始。无论采用哪种方式,都需要将 OSGi 应用程序打包为一种可以部署的格式。
与其他任何应用程序一样,OSGi 通过 wsadmin 或 WebSphere Application Server 管理控制台部署,但被打包为一种称为企业 bundle 存档(enterprise bundle archive,EBA)的新型存档。这种存档与 EAR 相似,但它的模块作为 bundle 部署到理想的目标服务器。一个 EBA 代表包含一个或多个应用程序模块的单个独立 OSGi 应用程序,是一个企业 OSGi 应用程序的部署单元。与 EAR 文件类似,一个 EBA 可以包含组成应用程序的所有组成模块或 bundle,相反,也可以只包含从一个已配置的 bundle 知识库定位那些 bundle 需要的元数据。这种元数据采用一个 EBA 级的 APPLICATION.MF 文件形式,该文件描述应用程序的内容以及应用程序是否公开任何外部服务和引用。就像 bundle 清单文件描述 bundle 的模块特征一样,应用程序清单文件描述应用程序的模块特征,以及该应用程序可部署的内容。
清单 2 显示了一个简单 OSGi 应用程序的完整应用程序清单文件。Application-Content 头目描述组成应用程序的主要 bundle,以及应用程序部署时将部署的 bundle。部署应用程序需要一个 “内容列表” 的原因是并非所有这个内容都需要包含在 EBA 中的应用程序清单文件中;这些 bundle 当然可以被打包到存档中,但它们中的全部或部分同样可以通过 WebSphere Application Server 部署流程从一个已配置的 bundle 知识库提供。例如,如果 com.example.common.audit bundle 为一个 IT 组织管理的所有应用程序提供公共审计服务,该 bundle 应该安装到一个公共 bundle 知识库中而不是部署为每个应用程序 EBA 的一部分。
清单 2. 一个 OSGi 应用程序的简单 APPLICATION.MF
1
2
3
4
5
6
7
8
9
10
11
Application-Name: MyApp

Application-SymbolicName: com.example.app

Application-Version: 1.0

Application-Content: com.example.app.web;version=1.0.0,

com.example.app.persistence;version=1.0.0,

com.example.common.audit; version=1.0.0




通过 OSGi 应用程序特性,WebSphere Application Server 提供一个内置 OSGi bundle 知识库,该知识库的内容可以通过 WebSphere Application Server 管理控制台管理,如图 1 所示。WebSphere Application Server 还允许选择使用一些外部 OSGi bundle 知识库,这些知识库通过一个已配置的知识库 URL 访问。
图 1. 管理控制台中的 OSGi bundle 知识库在 OSGi 应用程序部署过程中,WebSphere Application Server 管理控制台为应用程序计算所有包和 OSGi 服务级别依赖项,以便该应用程序能够由 EBA 和已配置的 bundle 知识库一起完整提供。应用程序清单文件本身可以由开发人员创建,也可以由 Rational Application Developer 这样的工具生成。重要的是要理解,应用程序清单文件只需在 Application-Content 中列示主要的应用程序 bundle,而不必列示这些主 bundle 依赖的所有包提供的和服务提供的 bundle。WebSphere Application Server 部署流程解算主 bundle 的所有依赖项,以计算一个短暂关闭的应用程序内容列表,并在解算过程检测到依赖项缺失时阻止应用程序部署。还需要理解的一个重点是,配置按例外管理(by-exception),因此,如果 Application-Content 全部包含在 EBA 中,则应用程序清单文件完全不必要。构成 Application-Content 一部分的每个模块,以及其全部已计算依赖项,部署为一个 OSGi bundle。如果一个不带 OSGi 元数据的 Web 模块包含在 Application-Content 中,那么 WebSphere Application Server 部署流程将在部署过程中自动将这个模块转换为一个 Web 应用程序 bundle(WAB 模块)。按例外配置(configuration-by-exception)以及 WAR 文件的自动检测和转换提供一种最快捷的方法来开始使用 OSGi 应用程序 — 可以将一个只包含 Web 模块的 Java EE EAR 部署为一个 OSGi 应用程序,只需将该存档的文件扩展名 .ear 更改为 .eba。
返回列表