Search code examples
mysqldatabaseconfigurationh2jbpm

How to change database from h2 to MySql in JBPM


I want to change database (h2 to SQL) in JBPM

from

<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>

To

<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>

an the Error is:

16:38:46,711 ERROR [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0055: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: WFLYCTL0085: Failed to parse configuration at [email protected]//org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:143) at [email protected]//org.jboss.as.server.ServerService.boot(ServerService.java:392) at [email protected]//org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:416) at java.base/java.lang.Thread.run(Thread.java:829) Caused by: javax.xml.stream.XMLStreamException: org.codehaus.stax2.typed.TypedXMLStreamException: ParseError at [row,col]:[169,70] Message: Element content can not contain child START_ELEMENT when using Typed Access methods at [email protected]//org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:650) at [email protected]//org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:204) at [email protected]//org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:122) at [email protected]//org.jboss.staxmapper.XMLExtendedStreamReaderImpl.handleAny(XMLExtendedStreamReaderImpl.java:69) at [email protected]//org.jboss.as.server.parsing.StandaloneXml_8.parseServerProfile(StandaloneXml_8.java:589) at [email protected]//org.jboss.as.server.parsing.StandaloneXml_8.readServerElement(StandaloneXml_8.java:224) at [email protected]//org.jboss.as.server.parsing.StandaloneXml_8.readElement(StandaloneXml_8.java:121) at [email protected]//org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:120) at [email protected]//org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:52) at [email protected]//org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:122) at [email protected]//org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:76) at [email protected]//org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:126) ... 3 more Caused by: org.codehaus.stax2.typed.TypedXMLStreamException: ParseError at [row,col]:[169,70] Message: Element content can not contain child START_ELEMENT when using Typed Access methods at org.codehaus.woodstox//com.ctc.wstx.sr.BasicStreamReader._constructTypeException(BasicStreamReader.java:5624) at org.codehaus.woodstox//com.ctc.wstx.sr.BasicStreamReader._constructUnexpectedInTyped(BasicStreamReader.java:5618) at org.codehaus.woodstox//com.ctc.wstx.sr.BasicStreamReader.getElementText(BasicStreamReader.java:737) at [email protected]//org.jboss.staxmapper.XMLExtendedStreamReaderImpl.getElementText(XMLExtendedStreamReaderImpl.java:144) at [email protected]//org.jboss.as.connector.util.AbstractParser.rawElementText(AbstractParser.java:61) at [email protected]//org.jboss.as.connector.subsystems.datasources.DsParser.parseDataSource_4_0(DsParser.java:1960) at [email protected]//org.jboss.as.connector.subsystems.datasources.DsParser.parseDataSources(DsParser.java:229) at [email protected]//org.jboss.as.connector.subsystems.datasources.DsParser.parse(DsParser.java:189) at [email protected]//org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:643)


Solution

  • I think manipulating standalone configuration files directly is not a good idea and is also error-prone.

    There are some scripts to do this, delivered with 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)
    

    reference is here