4.3. 构建扩展和项目工件
OpenShift 镜像的 JBoss EAP 使用各种构件扩展 OpenShift 中的数据库支持。这些工件通过不同的机制包含在构建的镜像中:
- S2I 工件,这些工件在 S2I 过程中注入到镜像中。
- 通过 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 工件的几个选项:
- 将工件包含在应用源部署目录中。构建期间下载工件并注入到镜像中。这类似于在用于 OpenShift 镜像的 JBoss EAP 上部署应用。
包含
CUSTOM_INSTALL_DIRECTORIES
环境变量,这是在 S2I 过程中用于安装和配置镜像工件的目录列表。在 S2I 中包括此信息有两种方法:指定的
安装目录中的 install.sh
脚本。安装脚本在 S2I 过程中执行,并以强制方式运行。install.sh
脚本示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow MySQL Connect/J 8 数据源的
module.xml
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意mysql-connector-java-8.0.Z.jar 中的 ".Z
" 指示下载的JAR
文件的版本。可以重命名文件,但名称必须与module.xml
文件中的名称匹配。install
功能将对应的 JAR 文件复制到 JBoss EAP 中的模块目录中,以及.sh 中的 install
_modulesmodule.xml
。驱动程序
驱动程序作为模块安装。该驱动程序随后由
configure_drivers
功能在install.sh
中配置,其配置属性 在运行时工件 环境文件中定义。添加数据源驱动程序
MySQL 和 PostgreSQL 数据源不再作为预配置的内部数据源提供。您仍可将这些驱动程序安装为模块;请参阅模块、驱动程序和通用部署中的描述。您可以从数据库供应商为 JBoss EAP 应用获取这些 JDBC 驱动程序。
为
要安装的每个数据源创建一个 driver.env
文件。MySQL Datasource
的 Driver.env
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow PostgreSQL Datasource
的 driver.env
文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关下载各种驱动程序的位置(如 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 复制链接链接已复制到粘贴板!
数据源有两种类型:
- 内部数据源.这些数据源在 OpenShift 上运行,但默认情况下无法通过 Red Hat Registry 或 OpenShift 存储库中提供。这些数据源的配置由添加到 OpenShift Secret 的环境文件提供。
- 外部数据源.这些数据源不在 OpenShift 上运行。外部数据源的配置由添加到 OpenShift Secret 的环境文件提供。
有关创建和配置 OpenShift Secret 的更多信息,请参阅 Secret。
您可以在目录中创建数据源环境文件,如源项目的配置目录。以下示例显示了数据源环境文件的内容:
示例:数据源环境文件
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” }
{
“Name”: “ENV_FILES”,
“Value”: “/etc/extensions/datasources1.env,/etc/extensions/datasources2.env”
}
4.3.2.2. 资源适配器 复制链接链接已复制到粘贴板!
资源适配器配置由添加到 OpenShift Secret 的环境文件提供。
属性 | 描述 |
---|---|
PREFIX_ID | 服务器配置文件中指定的资源适配器标识符。 |
前缀_ARCHIVE | 资源适配器存档。 |
PREFIX_MODULE_SLOT |
插槽子目录,其中包含 |
PREFIX_MODULE_ID | JBoss 模块 ID,可以从中加载对象工厂 Java 类。 |
前缀 _CONNECTION_CLASS | 受管连接工厂或 admin 对象的完全限定类名称。 |
PREFIX_CONNECTION_JNDI | 连接工厂的 JNDI 名称。 |
PREFIX_PROPERTY_ParentDirectory | 存储数据文件的目录。 |
PREFIX_PROPERTY_AllowParentPaths |
将 |
PREFIX_POOL_MAX_SIZE | 池的最大连接数。不会在每个子池中创建更多连接。 |
PREFIX_POOL_MIN_SIZE | 池的最小连接数。 |
PREFIX_POOL_PREFILL | 指定是否应预先填充池。更改此值需要重新启动服务器。 |
前缀 _POOL_FLUSH_STRATEGY |
出现错误时,应如何清空池。有效值为:Fa |
RESOURCE_ADAPTERS
属性是一个以逗号分隔的资源适配器属性前缀列表。然后,这些前缀会附加到该资源适配器的所有属性中。然后,可将多个资源适配器包含在单个环境文件中。在以下示例中,MYRA
用作资源适配器的前缀。另外,每个资源适配器也可以在单独的环境文件中提供。
示例:资源适配器环境文件
资源适配器环境文件添加到项目命名空间的 OpenShift Secret 中。然后,模板中使用 ENV_FILES environment
属性调用这些环境文件,其值是完全限定环境文件的逗号分隔列表,如下所示:
{ "Name": "ENV_FILES", "Value": "/etc/extensions/resourceadapter1.env,/etc/extensions/resourceadapter2.env" }
{
"Name": "ENV_FILES",
"Value": "/etc/extensions/resourceadapter1.env,/etc/extensions/resourceadapter2.env"
}