搜索

3.3. 构建扩展和项目工件

download PDF

OpenShift 镜像的 JBoss EAP 使用各种构件扩展 OpenShift 中的数据库支持。这些工件通过不同的机制包含在构建的镜像中:

构建扩展过程
重要

现在,弃用了对将红帽提供的内部数据源驱动程序与 JBoss EAP 搭配使用的支持。红帽建议您将数据库供应商获取的 JDBC 驱动程序用于 JBoss EAP 应用。

JBoss EAP for OpenShift 镜像不再提供以下内部数据源:

  • MySQL
  • PostgreSQL

有关安装驱动程序的更多信息,请参阅模块、驱动程序和通用部署

有关使用 JBoss EAP 配置 JDBC 驱动程序的更多信息,请参阅 JBoss EAP 配置指南中的 JDBC 驱动程序

请注意,如果您想将其添加到置备的服务器中,您也可以创建自定义层来安装这些驱动程序和数据源。

3.3.1. S2I 工件

S2I 工件包括模块、驱动程序和其他通用部署,它们提供了部署所需的必要配置基础架构。此配置在 S2I 过程中构建至镜像中,因此在运行时仅需要配置数据源和相关资源适配器。

如需有关如何指示 S2I 流程利用自定义 Maven 工件存储库镜像的其他指导,请参阅 Artifact Repository Mirrors

3.3.1.1. 模块、驱动程序和通用部署

以下几个选项可用于将这些 S2I 构件包含在用于 OpenShift 镜像的 JBoss EAP 中:

  1. 将工件包含在应用源部署目录中。构建期间下载工件并注入到镜像中。这类似于在用于 OpenShift 镜像的 JBoss EAP 上部署应用。
  2. 包含 CUSTOM_INSTALL_DIRECTORIES 环境变量,这是在 S2I 过程中用于安装和配置镜像工件的目录列表。在 S2I 中包括此信息有两种方法:

    • 指定的 安装目录中的 install.sh 脚本。安装脚本在 S2I 过程中执行,并以强制方式运行。

      install.sh 脚本示例

      #!/bin/bash
      
      injected_dir=$1
      source /usr/local/s2i/install-common.sh
      install_deployments ${injected_dir}/injected-deployments.war
      install_modules ${injected_dir}/modules
      configure_drivers ${injected_dir}/drivers.env

      install.sh 脚本负责使用 install-common.sh 提供的 API 来自定义基础镜像。install-common.sh 包含 install.sh 脚本用于安装和配置模块、驱动程序和通用部署的功能。

      install-common.sh 中包含的功能:

      • install_modules
      • configure_drivers
      • install_deployments

        模块

        模块是用于类加载和依赖关系管理的逻辑类分组。模块在应用服务器的 EAP_HOME/modules/ 目录中定义。每个模块都作为子目录存在,如 EAP_HOME/modules/org/。每个模块目录随后包含一个插槽子目录,默认为 main,它包含 module.xml 配置文件以及任何所需的 JAR 文件。

        有关为 MySQL 和 PostgreSQL JDBC 驱动程序配置 module.xml 文件的更多信息,请参阅 JBoss EAP 配置指南中的数据源配置示例

        PostgreSQL Datasource 的 module.xml 文件示例

        <?xml version="1.0" encoding="UTF-8"?>
        <module xmlns="urn:jboss:module:1.0" name="org.postgresql">
        <resources>
        <resource-root path="postgresql-jdbc.jar"/>
        </resources>
        <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        </dependencies>
        </module>

        MySQL Connect/J 8 数据源的 module.xml 文件示例

        <?xml version="1.0" encoding="UTF-8"?>
        <module xmlns="urn:jboss:module:1.0" name="com.mysql">
        <resources>
        <resource-root path="mysql-connector-java-8.0.Z.jar" />
        </resources>
        <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        </dependencies>
        </module>

        注意

        mysql-connector-java-8.0.Z.jar 中的 ".Z " 指示下载的 JAR 文件的版本。可以重命名文件,但名称必须与 module.xml 文件中的名称匹配。

        install .sh 中的 install _modules 功能将对应的 JAR 文件复制到 JBoss EAP 中的模块目录中,以及 module.xml

        驱动程序

        驱动程序作为模块安装。该驱动程序随后由 configure_drivers 功能在 install.sh 中配置,其配置属性 在运行时工件 环境文件中定义。

        添加数据源驱动程序

        MySQL 和 PostgreSQL 数据源不再作为预配置的内部数据源提供。您仍可将这些驱动程序安装为模块;请参阅模块、驱动程序和通用部署中的描述。您可以从数据库供应商为 JBoss EAP 应用获取这些 JDBC 驱动程序。

        要安装的每个数据源创建一个 driver.env 文件。

        MySQL Datasource 的 Driver.env 文件示例

        #DRIVER
        DRIVERS=MYSQL
        MYSQL_DRIVER_NAME=mysql
        MYSQL_DRIVER_MODULE=org.mysql
        MYSQL_DRIVER_CLASS=com.mysql.cj.jdbc.Driver
        MYSQL_XA_DATASOURCE_CLASS=com.mysql.jdbc.jdbc2.optional.MysqlXADataSource

        PostgreSQL Datasource 的 driver.env 文件示例

        #DRIVER
        DRIVERS=POSTGRES
        POSTGRES_DRIVER_NAME=postgresql
        POSTGRES_DRIVER_MODULE=org.postgresql
        POSTGRES_DRIVER_CLASS=org.postgresql.Driver
        POSTGRES_XA_DATASOURCE_CLASS=org.postgresql.xa.PGXADataSource

        有关下载各种驱动程序的位置(如 MySQL 或 PostgreSQL)的详情,请参阅《配置指南》中的 JDBC 驱动程序下载位置

通用部署

可以使用 install -common.sh 中的 API 提供的 install_deployments 功能,从注入的镜像部署 JAR、WAR、RAR 或 EAR 等可部署存档文件。

  • 如果已声明 CUSTOM_INSTALL_DIRECTORIES 环境变量,但没有在自定义安装目录中找到 install.sh 脚本,则以下工件目录将复制到构建镜像中的对应目的地:

    • modules/* 复制到 $JBOSS_HOME/modules/system/layers/openshift
    • configuration/* 复制到 $JBOSS_HOME/standalone/configuration
    • Deployment/* 复制到 $JBOSS_HOME/standalone/deployments

    install.sh 替代方案相比,这是一种基本的配置方法,并且要求构件进行适当的结构。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.