搜索

36.2. 配置 JDBC Web 服务器数据源

download PDF

Java 数据库连接(JDBC)是一种 API 规范,用于将 Java 编写的程序连接到数据库。数据源是一个对象,它允许 Java 数据库连接(JDBC)客户端(如应用服务器)与数据库建立连接。应用程序在 Java 命名和目录接口(JNDI)树或本地应用程序上下文中查找数据源,并请求数据库连接来检索数据。您必须为 KIE 服务器配置数据源,以确保在服务器和指定数据库之间进行正确的数据交换。

通常,使用 Red Hat Process Automation Manager 的解决方案在单个事务中管理多个资源。用于异步作业、事件和计时器的 JMS,例如:在确保数据原子性和一致性结果时,Red Hat Process Automation Manager 需要数据源中的 XA 驱动程序。如果监听器内存在针对不同架构的事务代码,或者从 jBPM 引擎提供的 hook 派生出来,则还需要一个 XA 驱动程序。

不要使用非 XA 数据源,除非您正面没有参与单一事务的多个资源。

注意

对于生产环境,请指定实际的数据源。不要在生产环境中使用示例数据源。

先决条件

  • Red Hat Process Automation Manager 安装在 Red Hat JBoss Web Server 上。
  • Red Hat Process Automation Manager 7.13.5 Maven Repository (rhpam-7.13.5-maven-repository.zip)和 Red Hat Process Automation Manager 7.13.x Add-Ons (rhpam-7.13.5-add-ons.zip)文件已下载,如 第 34 章 下载 Red Hat Process Automation Manager 安装文件 所述。
  • 您需要配置以下支持的数据库和休眠方法之一:

    • DB2: org.hibernate.dialect.DB2Dialect
    • MSSQL: org.hibernate.SQLServer 2012Dialect
    • MySQL: org.hibernate.dialect.MySQL5InnoDBDialect
    • MariaDB: org.hibernate.dialect.MySQL5InnoDBDialect
    • Oracle: org.hibernate.dialect.Oracle10gDialect
    • PostgreSQL: org.hibernate.dialect.PostgreSQL82Dialect
    • PostgreSQL 加上: org.hibernate.dialect.PostgresPlusPlusDialect
    • Sybase: org.hibernate.dialect.SybaseASE157Dialect

流程

  1. 完成以下步骤以准备数据库:

    1. 在临时目录中提取 rhpam-7.13.5-add-ons.zip,如 TEMP_DIR
    2. 提取 TEMP_DIR/rhpam-7.13.5-migration-tool.zip
    3. 将您的当前目录更改为 TEMP_DIR/rhpam-7.13.5-migration-tool/ddl-scripts 目录。此目录包含多种数据库类型的 DDL 脚本。
    4. 将您的数据库类型的 DDL 脚本导入到您要使用的数据库中,例如:

      psql jbpm < /ddl-scripts/postgresql/postgresql-jbpm-schema.sql
      注意

      如果您与 Spring Boot 结合使用 PostgreSQL 或 Oracle,则必须导入对应的 Spring Boot DDL 脚本,如 /ddl-scripts/oracle/oracle-springboot-jbpm-schema.sql/ddl-scripts/postgresql/postgresql-springboot-jbpm-schema.sql

  2. 提取 rhpam-7.13.5-maven-repository.zip 离线 Maven 存储库文件。
  3. 将以下库从提取的 Maven 存储库复制到 JWS_HOME/tomcat/lib 文件夹,其中 VERSION 是该库的版本:

    org/jboss/spec/javax/transaction/jboss-transaction-api_1.2_spec/{VERSION}/jboss-transaction-api_1.2_spec-{VERSION}.jar
    org/jboss/integration/narayana-tomcat/{VERSION}/narayana-tomcat-{VERSION}.jar
    org/jboss/narayana/jta/narayana-jta/{VERSION}/narayana-jta-{VERSION}.jar
    org/jboss/jboss-transaction-spi/{VERSION}/jboss-transaction-spi-{VERSION}.jar
  4. 将数据库 JDBC 驱动程序复制到 JWS_HOME/tomcat/lib 文件夹。
  5. JWS_HOME/tomcat/conf/context.xml 文件中配置 pooling XA 数据源:

    注意

    以下示例中的一些属性可能不适用于您的数据库服务器。检查 JDBC 驱动程序的文档,以确定要设置哪些属性。

    1. 在没有池功能的情况下配置 XA 数据源。此 XA 数据源用于创建与目标数据库的新连接。在以下示例中,IXA 数据源是 xads,变量在 表 36.1 “XA 数据源变量” 中定义:

      <?xml version="1.0" encoding="UTF-8"?>
      <Context>
      <Resource
      auth="Container"
      databaseName="${datasource.dbName}"
      description="XA Data Source"
      factory="org.apache.tomcat.jdbc.naming.GenericNamingResourcesFactory" loginTimeout="0"
      name="xads"
      uniqueName="xads"
      portNumber="${datasource.port}"
      serverName="${datasource.hostname}"
      testOnBorrow="false"
      type="${datasource.class}"
      url="${datasource.url}"
      URL="${datasource.url}"
      user="${datasource.username}"
      password="${datasource.password}"
      driverType="4"
      schema="${datasource.schema}"
      />
      </Context>
      表 36.1. XA 数据源变量
      变量描述

      <datasource.dbName>

      数据库的名称。

      <datasource.port>

      数据库的端口号。

      <datasource.hostname>

      数据库主机的名称。

      <datasource.class>

      JDBC 驱动程序的 XADataSource 类。

      <datasource.url>

      JDBC 数据库连接 URL。对于某些数据库,URL 属性是 url,其他数据库(如 H2 数据库)是 URL

      <datasource.username>

      数据库连接的用户名。

      <datasource.password>

      数据库连接的密码。

      <datasource.schema>

      数据库架构。

    2. 配置一个池数据源,它依赖于 XA 数据源创建新连接。在本例中,数据源是 poolingXaDs,&lt;datasource.username > 是数据库连接的用户名,&lt ;datasource.password > 是数据库连接的密码:

      <?xml version="1.0" encoding="UTF-8"?>
      <Context>
      <Resource
      name="poolingXaDs"
      uniqueName="poolingXaDs"
      auth="Container"
      description="Pooling XA Data Source" factory="org.jboss.narayana.tomcat.jta.TransactionalDataSourceFactory" testOnBorrow="true"
      transactionManager="TransactionManager" transactionSynchronizationRegistry="TransactionSynchronizationRegistry" type="javax.sql.XADataSource"
      username="${datasource.username}"
      password="${datasource.password}"
      xaDataSource="xads"
      />
      </Context>

      现在,数据源位于 java:comp/env/pool/poolingXaDs JNDI 名称下,并通过 org.kie.server.persistence.ds 系统属性传递给 KIE 服务器,如后续步骤中所述。

      注意

      池数据源配置依赖于之前在 kie-server 应用中的 context.xml 文件中配置的额外资源,特别是 TransactionManagerTransactionSynchronizationRegistry

  6. 配置 KIE 服务器以使用数据源:

    1. 在文本编辑器中打开以下脚本之一:

      注意

      setenv.shsetenv.bat 脚本应已存在。但是,如果没有,请创建它。

      • 对于 Linux 或 Unix:

        JWS_HOME/tomcat/bin/setenv.sh
      • 对于 Windows:

        JWS_HOME/tomcat/bin/setenv.bat
    2. CATALINA_OPS 中添加以下属性,其中 & lt;hibernate.dialect& gt; 是您数据库的 Hibernate 断处:

      CATALINA_OPTS="-Xmx1024m
      -Dorg.jboss.logging.provider=jdk
      -Dorg.kie.server.persistence.ds=java:comp/env/poolingXaDs
      -Dorg.kie.server.persistence.tm=JBossTS
      -Dorg.kie.server.persistence.dialect=${<hibernate.dialect>}"
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.