【问题标题】:How to switch from default H2 DB of jBPM to another Database like MariaDB?如何从 jBPM 的默认 H2 DB 切换到 MariaDB 等另一个数据库?
【发布时间】:2021-08-01 15:36:41
【问题描述】:

我已经在 jBPM 7.53 Final 中使用 .jar 文件安装了 MariaDB 连接器,并在本地配置了 MariaDB 数据库。检查管理控制台,发现数据源和 JDBC 连接器看起来不错(已启用 MariaDBDS),但运行时显示错误“启动服务器期间发生启动错误”。

故障描述:{"WFLYCTL0412: 所需的服务不是 已安装:" => ["jboss.jdbc-driver.mariadb-java-client-2_7_1_jar"],"WFLYCTL0180: 缺少/不可用依赖项的服务” => ["jboss.driver-demander.java:jboss/MariaDBDS 丢失 [jboss.jdbc-driver.mariadb-java-client-2_7_1_jar]","org.wildfly.data-source.MariaDBDS 缺少 [jboss.jdbc-driver.mariadb-java-client-2_7_1_jar]"]}

缺少依赖:jboss.driver-demander.java:jboss/MariaDBDS 是 缺少 [jboss.jdbc-driver.mariadb-java-client-2_7_1_jar] org.wildfly.data-source.MariaDBDS 丢失 [jboss.jdbc-driver.mariadb-java-client-2_7_1_jar]

我已经在 jBPM Standalone.xml 中配置了 MariaDB Java 连接器

<subsystem xmlns="urn:jboss:domain:datasources:5.0">
    <datasources>
        <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
            <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>
            <driver>h2</driver>
            <security>
                <user-name>sa</user-name>
                <password>sa</password>
            </security>
        </datasource>
        <datasource jta="true" jndi-name="java:jboss/MariaDBDS" pool-name="MariaDBDS" enabled="true" use-java-context="true" use-ccm="true">
            <connection-url>jdbc:mariadb://localhost:3306/mysql</connection-url>
            <driver-class>org.mariadb.jdbc.Driver</driver-class>
            <driver>mariadb-java-client-2.7.1.jar</driver>
            <security>
                <user-name>root</user-name>
                <password>admin</password>
            </security>
            <validation>
                <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
                <validate-on-match>true</validate-on-match>
                <background-validation>false</background-validation>
                <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
            </validation>
        </datasource>
        <drivers>
            <driver name="mariadb" module="org.mariadb">
                <xa-datasource-class>org.mariadb.jdbc.MariaDbDataSource</xa-datasource-class>
            </driver>
            <driver name="h2" module="com.h2database.h2">
                <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
            </driver>
        </drivers>
    </datasources>
</subsystem>

我已将 MariaDB Java 连接器复制到 JBPM_HOME/modules/com/mariadb/main/mariadb-java-client-2.7.1.jar 并像这样配置 module.xml:

<module xmlns="urn:jboss:module:1.1" name="org.mariadb">
    <resources>
        <resource-root path="mariadb-java-client-2.7.1.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
    </dependencies>
</module>

另外,在 Business-Central 中对新流程实例出现了这种注意: enter image description here

我在这些步骤中遗漏或更改了什么?知道 jBPM 是否适用于外部数据库吗?

【问题讨论】:

  • 这个错误似乎和jBPM本身没有任何关系,但是那个jboss不能正确的模块,这提示配置错误。

标签: java jdbc jboss mariadb jbpm


【解决方案1】:

@KrenarR 你是否也在系统属性下设置了这些属性?

<property name="org.kie.server.persistence.ds" value="java:jboss/MariaDBDS"/>
<property name="org.kie.server.persistence.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>

您也可以通过 jboss_cli 将驱动程序添加为核心模块:

module add --name=org.mariadb --resources=mariadb-java-client-2.7.1.jar --dependencies=javax.api,javax.transaction.api

还要检查数据源中的这一行:

<driver>mariadb-java-client-2.7.1.jar</driver>

我认为应该只是你定义的驱动名称:

<driver>mariadb</driver>

【讨论】:

    【解决方案2】:

    您可以参考来自 jbpm.org 的文档Switch to another database 了解详细步骤。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 2013-02-16
      • 2014-07-15
      • 2016-05-23
      相关资源
      最近更新 更多