如何在 JBPM 中将数据库从 h2 更改为 MySql

How to change database from h2 to MySql in JBPM

我想在 JBPM

中更改数据库(h2 到 SQL)

来自

<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>
<xa-datasource jndi-name="java:jboss/datasources/jBPMDS" pool-name="jBPMXADS" enabled="true">
<xa-datasource-property name="URL"> jdbc:h2:file:${jboss.server.data.dir}/jbpm-db;MVCC=TRUE </xa-datasource-property>
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
<driver>h2</driver>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</xa-datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>

<datasources>
                <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:mysql://localhost:3306/jbpm5<connection-url>
                    <!--<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url>-->
                    <driver>mysql</driver>
                    <security>
                        <user-name>root</user-name>
                        <password>password</password>
                    </security>
                </datasource>
                <xa-datasource jndi-name="java:jboss/datasources/jBPMDS" pool-name="jBPMXADS" enabled="true">
                    <xa-datasource-property name="URL">jdbc:mysql://localhost:3306/jbpm5</xa-datasource-property>
                    <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                    <driver>mysql</driver>
                    <security>
                        <user-name>root</user-name>
                        <password>password</password>
                    </security>
                </xa-datasource>
                <drivers>
                    <driver name="mysql" module="com.mysql">
                        <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                    </driver>
                </drivers>

错误是:

16:38:46,711 错误 [org.jboss.as.server](控制器引导线程)​​WFLYSRV0055:引导期间捕获异常:org.jboss.as.controller.persistence.ConfigurationPersistenceException:WFLYCTL0085:无法解析配置 在 org.jboss.as.controller@11.1.1.Final//org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:143) 在 org.jboss.as.server@11.1.1.Final//org.jboss.as.server.ServerService.boot(ServerService.java:392) 在 org.jboss.as.controller@11.1.1.Final//org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:416) 在 java.base/java.lang.Thread.run(Thread.java:829) 由以下原因引起:javax.xml.stream.XMLStreamException: org.codehaus.stax2.typed.TypedXMLStreamException: [row,col] 处的 ParseError:[169,70] 消息:使用类型化访问方法时,元素内容不能包含子 START_ELEMENT 在 org.jboss.as.connector@19.1.0.Final//org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:650) 在 org.jboss.as.connector@19.1.0.Final//org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:204) 在 org.jboss.staxmapper@1.3.0.Final//org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:122) 在 org.jboss.staxmapper@1.3.0.Final//org.jboss.staxmapper.XMLExtendedStreamReaderImpl.handleAny(XMLExtendedStreamReaderImpl.java:69) 在 org.jboss.as.server@11.1.1.Final//org.jboss.as.server.parsing.StandaloneXml_8.parseServerProfile(StandaloneXml_8.java:589) 在 org.jboss.as.server@11.1.1.Final//org.jboss.as.server.parsing.StandaloneXml_8.readServerElement(StandaloneXml_8.java:224) 在 org.jboss.as.server@11.1.1.Final//org.jboss.as.server.parsing.StandaloneXml_8.readElement(StandaloneXml_8.java:121) 在 org.jboss.as.server@11.1.1.Final//org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:120) 在 org.jboss.as.server@11.1.1.Final//org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:52) 在 org.jboss.staxmapper@1.3.0.Final//org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:122) 在 org.jboss.staxmapper@1.3.0.Final//org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:76) 在 org.jboss.as.controller@11.1.1.Final//org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:126) ... 3 更多 由以下原因引起:org.codehaus.stax2.typed.TypedXMLStreamException: [row,col]:[169,70] 处的 ParseError 消息:使用类型化访问方法时,元素内容不能包含子 START_ELEMENT 在 org.codehaus.woodstox//com.ctc.wstx.sr.BasicStreamReader._constructTypeException(BasicStreamReader.java:5624) 在 org.codehaus.woodstox//com.ctc.wstx.sr.BasicStreamReader._constructUnexpectedInTyped(BasicStreamReader.java:5618) 在 org.codehaus.woodstox//com.ctc.wstx.sr.BasicStreamReader.getElementText(BasicStreamReader.java:737) 在 org.jboss.staxmapper@1.3.0.Final//org.jboss.staxmapper.XMLExtendedStreamReaderImpl.getElementText(XMLExtendedStreamReaderImpl.java:144) 在 org.jboss.as.connector@19.1.0.Final//org.jboss.as.connector.util.AbstractParser.rawElementText(AbstractParser.java:61) 在 org.jboss.as.connector@19.1.0.Final//org.jboss.as.connector.subsystems.datasources.DsParser.parseDataSource_4_0(DsParser.java:1960) 在 org.jboss.as.connector@19.1.0.Final//org.jboss.as.connector.subsystems.datasources.DsParser.parseDataSources(DsParser.java:229) 在 org.jboss.as.connector@19.1.0.Final//org.jboss.as.connector.subsystems.datasources.DsParser.parse(DsParser.java:189) 在 org.jboss.as.connector@19.1.0.Final//org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:643)

我认为直接操作独立的配置文件不是一个好主意,而且容易出错。

有一些脚本可以做到这一点,随 jbpm 提供:

To switch to MySQL use the following command when the server is stopped

<JBOSS_HOME>/bin/jboss-cli.sh --file=jbpm-mysql-config.cli      (Unix / Linux)

<JBOSS_HOME>\bin\jboss-cli.bat --file=jbpm-mysql-config.cli     (Windows)

参考是here