创建 OSGi 应用程序项目

OSGi 应用程序项目 (EBA) 将一组捆绑软件分组在一起。 应用程序可以由不同的 OSGi 捆绑软件类型组成。

开始之前

确保已 设置开发环境
注意: 要开发和构建 OSGi应用程序项目如果您在 Eclipse Marketplace 上使用 CICS Explorer® ,则必须安装 IBM CICS SDK for Enterprise Java™ (Liberty) 和 Liberty Developer Tools (LDT)。 如果要在不构建束的情况下导出束,那么可以将已构建的项目直接添加到 CICS 束的根。 否则,您可能会收到验证或导出失败错误。 请参阅 "对 Liberty JVM 服务器和 Java Web 应用程序进行故障诊断" 中的 CICS Explorer 无法导出捆绑软件

关于此任务

如果您在 CICS Explorer (如以下说明所示)或 IBM Developer for z/OS (IDz) 中使用 IBM CICS SDK for JavaIBM CICS SDK for Enterprise Java (Liberty) ,则可以参考 CICS Explorer 帮助,其中提供了有关如何完成以下每个步骤来开发和打包 OSGi 应用程序的完整详细信息

如果您使用的是构建工具链,例如 GradleApache Maven ,则可以使用Maven Central上由 CICS 提供的工件来定义Java依赖关系。

过程

  1. CICS Explorer 如果您使用 CICS Explorer ,请为您的 Java 开发设置目标平台,为您的 CICS 版本使用 Enterprise Java 和 Liberty 模板。 您可能会收到警告,提示目标是一个比当前 Eclipse 安装版本更新的版本,但您可以忽略此警告信息。
  2. 为应用程序创建 OSGi 捆绑软件项目
    • CICS Explorer 如果使用 CICS Explorer ,目标平台会有效地提供软件包,因此您必须在软件包清单中包含适当的导入语句。 支持网络的 OSGi 捆绑项目相当于一个动态网络项目。 您可以使用支持网络的 OSGi 捆绑项目 ,在 OSGi 应用程序项目 (企业捆绑存档,或 EBA 文件)中部署应用程序。 您可以在 OSGi 应用程序项目中混合支持 Web 的 OSGi 捆绑包项目 (WAB 文件)和不支持 Web 的 OSGi 捆绑包项目。 支持 Web 的 OSGi Bundle 项目通常会实现应用程序的前端,并与包含业务逻辑的非 Web OSGi Bundle 进行交互。
      限制: 在 Java EE 8 和更高版本中不支持 EBA 文件。
    • Gradle 对于 Gradle 用户,使用 BND Gradle 插件创建支持 Gradle 的 OSGi 项目,然后声明对 CICS 提供的工件的依赖关系
    • Maven 对于 Maven 用户,创建 Maven 项目。 在 pom.xml 文件中,指定 <packaging>bundle</packaging> 和以下依赖关系:
      <dependency>
        <groupId>net.wasdev.maven.tools.targets</groupId>
        <artifactId>liberty-target</artifactId>
        <version><your_liberty_version></version>
        <type>pom</type>
        <scope>provided</scope>
      </dependency>

      您可以从 OSGi 捆绑原型(例如 osgi-web31-liberty 原型,然后对其进行修改。 然后声明对 CICS 提供的工件的依赖关系

  3. 开发 Web 应用程序。

    您可以使用 JCICS API 来访问 CICS 服务和 JDBC 以连接到 Db2®IBM CICS SDK for Java 包含使用 JCICS 和 Db2的 Web 组件和 OSGi 捆绑软件的示例。 创建使用 JCICS 将业务与演示逻辑分开的 OSGi 束。 您还可以在 OSGi 捆绑软件中使用语义版本控制来管理对应用程序的业务逻辑的更新。 对于通过 JDBC java.sql.DriverManager 接口使用 Db2 的每个 WAB 或 OSGi 捆绑软件,请在捆绑软件清单中包含 com.ibm.db2.jcc 的 Import-Package 头。 省略此导入将导致错误消息java.sql.SQLException: No suitable driver found for jdbc:default:connection。使用 JDBC javax.sql.DataSource 接口时不需要导入。

  4. 可选: 如果要认证 Web 应用程序的用户,请在 Web 项目中创建 web.xml 文件以包含安全性约束。
    IBM CICS SDK for Java 包含此文件的模板,其中包含 CICS的正确信息。 请参阅 认证用户以运行 CICS Liberty Web 应用程序 以获取更多信息。
  5. 创建引用 OSGi 捆绑软件的 OSGi 应用程序项目
  6. 创建引用 OSGi 应用程序项目的 CICS 束项目。 您还可以为 CICS 资源添加定义和导入。 每个 CICS 束都包含一个标识和版本,因此您可以以精细方式管理更改。
  7. 可选: 如果要将来自 URI 的入站 Web 请求映射到在特定事务下运行,请将 URIMAP 和 TRANSACTION 资源添加到 CICS 束。
    如果未定义这些资源,那么所有工作都在提供的事务(称为 CJSA)下运行。 这些资源作为 CICS中的束的一部分进行动态安装和管理。

结果

您设置了开发环境,创建了 OSGi Web 应用程序,并将其打包以进行部署。

下一步操作

准备好部署应用程序时,将 CICS 束项目导出到 zFS。 这样会构建引用的项目并将其包含在到 zFS 的传输中。 或者,您可以通过将应用程序导出为 EBA 文件并将其部署到正在运行的 Liberty JVM 服务器的 dropins 目录来遵循开发部署模型。 您应该知道,使用 dropins 无法配置安全性和其他服务质量。