4.3. 构建扩展和项目工件


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

重要

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

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

  • MySQL
  • PostgreSQL

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

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

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

4.3.1. S2I Artifacts

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

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

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

对于 OpenShift 镜像,在 JBoss EAP 中包括这些 S2I 工件的几个选项:

  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
      Copy to Clipboard Toggle word wrap

      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>
        Copy to Clipboard Toggle word wrap

        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>
        Copy to Clipboard Toggle word wrap

        注意

        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.cj.jdbc.MysqlXADataSource
        Copy to Clipboard Toggle word wrap

        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
        Copy to Clipboard Toggle word wrap

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

通用部署

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

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

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

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

4.3.2. runtime Artifacts

4.3.2.1. datasources

数据源有两种类型:

  1. 内部数据源.这些数据源在 OpenShift 上运行,但默认情况下无法通过 Red Hat Registry 或 OpenShift 存储库中提供。这些数据源的配置由添加到 OpenShift Secret 的环境文件提供。
  2. 外部数据源.这些数据源不在 OpenShift 上运行。外部数据源的配置由添加到 OpenShift Secret 的环境文件提供。
注意

有关创建和配置 OpenShift Secret 的更多信息,请参阅 Secret

您可以在目录中创建数据源环境文件,如源项目的配置目录。以下示例显示了数据源环境文件的内容:

示例:数据源环境文件

DB_SERVICE_PREFIX_MAPPING=PostgresXA-POSTGRES=DS1
DS1_JNDI=java:jboss/datasources/pgds
DS1_DRIVER=postgresql-42.2.5.jar
DS1_USERNAME=postgres
DS1_PASSWORD=postgres
DS1_MAX_POOL_SIZE=20
DS1_MIN_POOL_SIZE=20
DS1_CONNECTION_CHECKER=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker
DS1_EXCEPTION_SORTER=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter
Copy to Clipboard Toggle word wrap

DB_SERVICE_PREFIX_MAPPING 属性是一个以逗号分隔的数据源属性前缀列表。然后,这些前缀附加到该数据源的所有属性中。然后,可以将多个数据源包含在单个环境文件中。另外,每个数据源也可以在单独的环境文件中提供。

数据源包含两种类型的属性:连接池特定属性和数据库驱动程序特定属性。连接池相关的属性生成与数据源的连接。数据库驱动程序特定属性决定数据源的驱动程序,并配置为驱动程序 S2I 工件。

在上例中,DS1 是数据源前缀,CONNECTION_CHECKER 指定一个用于验证数据库连接的连接检查器类,EXCEPTION_SORTER 指定用于检测严重数据库连接异常的分类器类。

数据源环境文件添加到项目的 OpenShift Secret 中。然后,模板中使用 ENV_FILES environment 属性调用这些环境文件,其值是完全限定环境文件的逗号分隔列表,如下所示:

{
    “Name”: “ENV_FILES”,
    “Value”: “/etc/extensions/datasources1.env,/etc/extensions/datasources2.env”
}
Copy to Clipboard Toggle word wrap

4.3.2.2. 资源适配器

资源适配器配置由添加到 OpenShift Secret 的环境文件提供。

Expand
表 4.2. 资源适配器属性
属性描述

PREFIX_ID

服务器配置文件中指定的资源适配器标识符。

前缀_ARCHIVE

资源适配器存档。

PREFIX_MODULE_SLOT

插槽子目录,其中包含 module.xml 配置文件和任何所需的 JAR 文件。

PREFIX_MODULE_ID

JBoss 模块 ID,可以从中加载对象工厂 Java 类。

前缀 _CONNECTION_CLASS

受管连接工厂或 admin 对象的完全限定类名称。

PREFIX_CONNECTION_JNDI

连接工厂的 JNDI 名称。

PREFIX_PROPERTY_ParentDirectory

存储数据文件的目录。

PREFIX_PROPERTY_AllowParentPaths

AllowParentPaths 设置为 false 以禁止 在路径中。这可以防止请求父目录中不包含的文件。

PREFIX_POOL_MAX_SIZE

池的最大连接数。不会在每个子池中创建更多连接。

PREFIX_POOL_MIN_SIZE

池的最小连接数。

PREFIX_POOL_PREFILL

指定是否应预先填充池。更改此值需要重新启动服务器。

前缀 _POOL_FLUSH_STRATEGY

出现错误时,应如何清空池。有效值为:Fa ilingConnectionOnly (默认)、IdleConnectionsEntirePool

RESOURCE_ADAPTERS 属性是一个以逗号分隔的资源适配器属性前缀列表。然后,这些前缀会附加到该资源适配器的所有属性中。然后,可将多个资源适配器包含在单个环境文件中。在以下示例中,MYRA 用作资源适配器的前缀。另外,每个资源适配器也可以在单独的环境文件中提供。

示例:资源适配器环境文件

#RESOURCE_ADAPTER
RESOURCE_ADAPTERS=MYRA
MYRA_ID=myra
MYRA_ARCHIVE=myra.rar
MYRA_CONNECTION_CLASS=org.javaee7.jca.connector.simple.connector.outbound.MyManagedConnectionFactory
MYRA_CONNECTION_JNDI=java:/eis/MySimpleMFC
Copy to Clipboard Toggle word wrap

资源适配器环境文件添加到项目命名空间的 OpenShift Secret 中。然后,模板中使用 ENV_FILES environment 属性调用这些环境文件,其值是完全限定环境文件的逗号分隔列表,如下所示:

{
    "Name": "ENV_FILES",
    "Value": "/etc/extensions/resourceadapter1.env,/etc/extensions/resourceadapter2.env"
}
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat