搜索

12.4.2. 配置外部数据源

download PDF

要使用外部数据源,您可以定义自定义镜像模板,然后使用 Source-to-Image(S2I)构建工具来创建镜像。S2I 是一个框架,将应用程序源代码用作输入,并生成一个运行编译的应用程序的新镜像作为输出。

以下高级别步骤提供进程概述:

  1. 指定镜像模板 JSON 中的 CUSTOM_INSTALL_DIRECTORIES 环境变量。此变量定义 S2I 工件所在的位置,如下例所示:

    {
        "name": "CUSTOM_INSTALL_DIRECTORIES",
        "value": "extensions/*"
    }
  2. 在该目录中创建一个 install.sh 脚本。此脚本为镜像中外部数据源安装模块和驱动程序。

    以下是 install.sh 脚本示例:

    #!/bin/bash
    
    # Import the common functions for
    # installing modules and configuring drivers
    source /usr/local/s2i/install-common.sh
    
    # Directory where this script is located
    injected_dir=$1
    
    # Install the modules for the datasource
    install_modules ${injected_dir}/modules
    
    # Configure the drivers for the datasource
    configure_drivers ${injected_dir}/drivers.properties
  3. 包括一个 模块 子目录,其中包含 module.xml 文件和数据源的驱动程序。生成的镜像使用模块来加载类并定义依赖项。

    例如,您计划将 Derby 用作外部数据源。您需要获取一个驱动,如 derby-10.12.1.1.jar,并将其放置在以下目录中: modules/org/apache/derby/main/

    在同一目录中,您还需要创建一个 module.xml 文件,该文件将驱动程序定义为资源并声明依赖项。

    以下是 module.xml 文件示例:

    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.3" name="org.apache.derby">
     <resources>
       <resource-root path="derby-10.12.1.1.jar"/>
       <resource-root path="derbyclient-10.12.1.1.jar"/>
     </resources>
    
     <dependencies>
       <module name="javax.api"/>
       <module name="javax.transaction.api"/>
     </dependencies>
    </module>
  4. 在 driver .property 环境变量文件中定义驱动程序 配置属性。

    以下是 驱动程序.property 文件示例

    #DRIVERS
    DRIVERS=DERBY
    
    DERBY_DRIVER_NAME=derby
    DERBY_DRIVER_MODULE=org.apache.derby
    DERBY_DRIVER_CLASS=org.apache.derby.jdbc.EmbeddedDriver
    DERBY_XA_DATASOURCE_CLASS=org.apache.derby.jdbc.EmbeddedXADataSource
  5. 在构建和部署镜像后,为数据源指定环境变量。

    以下示例显示了带有 DATASOURCES 环境变量的数据源定义:

    # Set a unique prefix for the datasource
    DATASOURCES=ACCOUNTS_DERBY
    # Specify other environment variables using the prefix
    ACCOUNTS_DERBY_DATABASE=accounts
    ACCOUNTS_DERBY_JNDI=java:/accounts-ds
    ACCOUNTS_DERBY_DRIVER=derby
    ACCOUNTS_DERBY_JTA=true
    ACCOUNTS_DERBY_NONXA=false
    ACCOUNTS_DERBY_USERNAME=${USERNAME}
    ACCOUNTS_DERBY_PASSWORD=${PASSWORD}
    ACCOUNTS_DERBY_XA_CONNECTION_PROPERTY_DatabaseName=/opt/eap/standalone/data/databases/derby/accounts
    # _HOST and _PORT are required but not used
    ACCOUNTS_ORACLE_HOST=dummy
    ACCOUNTS_ORACLE_PORT=1527
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.