3.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 驱动程序。
请注意,如果您想将其添加到置备的服务器中,您也可以创建自定义层来安装这些驱动程序和数据源。
3.3.1. S2I 工件
S2I 工件包括模块、驱动程序和其他通用部署,它们提供了部署所需的必要配置基础架构。此配置在 S2I 过程中构建至镜像中,因此在运行时仅需要配置数据源和相关资源适配器。
如需有关如何指示 S2I 流程利用自定义 Maven 工件存储库镜像的其他指导,请参阅 Artifact Repository Mirrors。
3.3.1.1. 模块、驱动程序和通用部署
以下几个选项可用于将这些 S2I 构件包含在用于 OpenShift 镜像的 JBoss EAP 中:
- 将工件包含在应用源部署目录中。构建期间下载工件并注入到镜像中。这类似于在用于 OpenShift 镜像的 JBoss EAP 上部署应用。
包含
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
功能将对应的 JAR 文件复制到 JBoss EAP 中的模块目录中,以及.sh 中的 install
_modulesmodule.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
替代方案相比,这是一种基本的配置方法,并且要求构件进行适当的结构。-