4.3. 构建扩展和项目 Artifacts
用于 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 镜像。
4.3.1.1. 模块、驱动程序和通用部署
有几个选项可以在 JBoss EAP for OpenShift 镜像中包括这些 S2I 工件:
- 将工件包含在应用程序源部署目录中。工件会在构建期间下载,并注入到镜像中。这与在 JBoss EAP for OpenShift 镜像中部署一个应用程序类似。
包括
CUSTOM_INSTALL_DIRECTORIES环境变量(一个以逗号分隔的目录列表),用于在 S2I 过程中为镜像安装和配置工件。在 S2I 中有两个方法包括以下信息:在提名的安装目录中的
install.sh脚本。安装脚本在 S2I 过程中执行,并使用 impunity 操作。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.envinstall.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/apache/。然后,每个模块目录都会包含一个插槽子目录,默认为 main,其中包含module.xml配置文件和任何所需的 JAR 文件。有关为 MySQL 和 PostgreSQL JDBC 驱动程序配置
module.xml文件的更多信息,请参阅 JBoss EAP 配置指南中的 Datasource 配置示例。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 Datasource 的
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 驱动程序。
为每个要安装的数据源创建一个
drivers.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
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 中的 install_deployments 功能从注入的镜像部署可部署资源,如 JAR、WAR、RAR 或 EARs。
如果已经声明了
CUSTOM_INSTALL_DIRECTORIES环境变量,但没有在自定义安装目录中找到install.sh脚本,则以下工件目录将复制到构建镜像中对应的目的地:-
modules/*复制到$JBOSS_HOME/modules/ -
configuration/*复制到$JBOSS_HOME/standalone/configuration -
deployments/*复制到$JBOSS_HOME/standalone/deployments
这是与
install.sh替代方案相比的基本配置方法,需要正确构建工件。-
4.3.2. 运行时工件
4.3.2.1. datasources
数据源有两种类型:
- 内部数据源.这些数据源在 OpenShift 上运行,但默认情况下无法通过 Red Hat Registry 或 OpenShift 存储库提供。这些数据源的配置由添加到 OpenShift Secret 的环境文件提供。
- 外部数据源.这些数据源不在 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
DB_SERVICE_PREFIX_MAPPING 属性是一个以逗号分隔的数据源属性前缀列表。然后,这些前缀会附加到该数据源的所有属性中。然后,可以将多个数据源包含在一个环境文件中。另外,还可在单独的环境文件中提供各个数据源。
datasources 包含两种类型的属性:连接池相关的属性,以及特定于数据库驱动程序的属性。连接池特定的属性生成与数据源的连接。数据库驱动程序的属性决定数据源的驱动程序,并配置为驱动程序 S2I 工件。
在上例中,DS1 是数据源前缀,CONNECTION_CHECKER 指定用于验证数据库的连接检查器类,而 EXCEPTION_SORTER 指定用来检测致命数据库连接异常分类器类。
datasources 环境文件添加到项目的 OpenShift Secret 中。这些环境文件然后在模板中使用 ENV_FILES 环境属性调用,其值是完全限定环境文件的逗号分隔列表,如下所示。
{
“Name”: “ENV_FILES”,
“Value”: “/etc/extensions/datasources1.env,/etc/extensions/datasources2.env”
}4.3.2.2. 资源适配器
资源适配器的配置由添加到 OpenShift Secret 的环境文件提供。
表 4.2. 资源适配器属性
| 属性 | 描述 |
|---|---|
| PREFIX_ID | 在服务器配置文件中指定的资源适配器标识符。 |
| PREFIX_ARCHIVE | 资源适配器归档。 |
| PREFIX_MODULE_SLOT |
插槽子目录,其中包含 |
| PREFIX_MODULE_ID | 从其中载入对象工厂 Java 类的 JBoss 模块 ID。 |
| PREFIX_CONNECTION_CLASS | 受管连接工厂或 admin 对象的完全限定类名称。 |
| PREFIX_CONNECTION_JNDI | 连接工厂的 JNDI 名称。 |
| PREFIX_PROPERTY_ParentDirectory | 保存数据文件的目录。 |
| PREFIX_PROPERTY_AllowParentPaths |
将 |
| PREFIX_POOL_MAX_SIZE | 池连接的最大数量。每个子池不会创建更多连接。 |
| PREFIX_POOL_MIN_SIZE | 池的最小连接数。 |
| PREFIX_POOL_PREFILL | 指定是否应预先填充池。更改此值需要重启服务器。 |
| PREFIX_POOL_FLUSH_STRATEGY |
在出错时,应该如何清除池。有效值为: |
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
资源适配器环境文件添加到项目命名空间的 OpenShift Secret 中。这些环境文件然后在模板中使用 ENV_FILES 环境属性调用,其值是完全限定环境文件的逗号分隔列表,如下所示。
{
"Name": "ENV_FILES",
"Value": "/etc/extensions/resourceadapter1.env,/etc/extensions/resourceadapter2.env"
}