JBPM7更換MySQL數(shù)據(jù)庫

官方文檔太坑了榛搔,完全按照指南來,結(jié)果2個坑东揣,

  1. 沒說把ExampleDS換成jbpmDS践惑。
    2.數(shù)據(jù)庫方言沒換過來。結(jié)果報錯如下:
2017-11-23 10:53:50,606 ERROR [org.kie.server.services.impl.KieServerImpl] (ServerService Thread Pool -- 69) Error when initializing server extension of type jBPM KIE Server extension: java.lang.RuntimeException: Unable to create EntityManagerFactory due to [PersistenceUnit: org.jbpm.domain] Unable to build Hibernate SessionFactory
    at org.kie.server.services.jbpm.JbpmKieServerExtension.build(JbpmKieServerExtension.java:711)
    at org.kie.server.services.jbpm.JbpmKieServerExtension.init(JbpmKieServerExtension.java:194)
.
.
.
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown table 'sequences' in information_schema
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
    at com.mysql.jdbc.Util.getInstance(Util.java:408)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:943)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2483)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2441)
    at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1381)
    at org.jboss.jca.adapters.jdbc.WrappedStatement.executeQuery(WrappedStatement.java:397)
    at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorH2DatabaseImpl.extractMetadata(SequenceInformationExtractorH2DatabaseImpl.java:37)
    at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.initializeSequences(DatabaseInformationImpl.java:65)
    at org.hibernate.tool.schema.extract.internal.DatabaseInformationImpl.<init>(DatabaseInformationImpl.java:59)
    at org.hibernate.tool.schema.internal.Helper.buildDatabaseInformation(Helper.java:130)
    ... 32 more

仔細分析報錯嘶卧,然后分析日志尔觉, 根據(jù)線索發(fā)現(xiàn)使用的還是h2Dialect

at org.jboss.jca.adapters.jdbc.WrappedStatement.executeQuery(WrappedStatement.java:397)
    at org.hibernate.tool.schema.extract.internal.SequenceInformationExtractorH2DatabaseImpl.extractMetadata(SequenceInformationExtractorH2DatabaseImpl.java:37)
。芥吟。侦铜。
2017-11-23 10:53:25,583 INFO  [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 36) WFLYJCA0004: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
2017-11-23 10:53:25,598 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) WFLYJCA0018: Started Driver service with driver-name = h2

里面有:SequenceInformationExtractorH2DatabaseImpl. 還有 service with driver-name = h2
定位問題所在。
然后看了半天官網(wǎng)文檔钟鸵,說的還是 改persistence.xml

db/jbpm-persistence-JPA2.xml :

This is the JPA persistence file that defines the persistence settings used by jBPM for both the process engine information, the logging/BAM information and task service.

In this file, you will have to change the name of the hibernate dialect used for your database.

The original line is:

<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
In the case of a MySQL database, you need to change it to:

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>

...
You need to change the dialect in persistence.xml to the dialect for your database, for example:

<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>

沒辦法钉稍,從ant腳本開始檢查,發(fā)現(xiàn)build.xml里有方言設(shè)置,還給注釋了棺耍。這段代碼有2處贡未,分別對應(yīng)windows、Linux我只需要改win部分的

  <!--arg value="-Dorg.uberfire.nio.git.daemon.port=${org.uberfire.nio.git.daemon.port}" />
      <arg value="-Dorg.uberfire.nio.git.ssh.port=${org.uberfire.nio.git.ssh.port}" />
      <arg value="-Djboss.socket.binding.port-offset=${jboss.port.offset}" />
      <arg value="-Dorg.uberfire.nio.git.dir=${jboss.home}" />
      <arg value="-Dorg.uberfire.metadata.index.dir=${jboss.home}" />
      <arg value="-Dorg.kie.server.persistence.dialect=${org.kie.server.persistence.dialect}" / -->

把dialect設(shè)置拷貝出來:(根目錄下的:build.xml中)蒙袍,改完后:

<property name="jboss.full.path.win" location="${jboss.home}/bin/standalone.bat" />
    <exec executable="${jboss.full.path.win}" spawn="yes" osfamily="windows">
      <env key="JAVA_OPTS" value="-Xms512m -Xmx1024m" />
      <arg value="-b" />
      <arg value="${jboss.bind.address}" />
      <arg value="--server-config=standalone-full.xml" />
      <arg value="-Dorg.kie.demo=false" />
      <arg value="-Dorg.kie.example=false" />
      <arg value="-Dorg.kie.server.id=default-kieserver" />
      <arg value="-Dorg.kie.server.persistence.ds=java:jboss/datasources/jbpmDS" />
      <arg value="-Dorg.kie.server.controller=http://localhost:8080/jbpm-console/rest/controller" />
      <arg value="-Dorg.kie.server.location=http://localhost:8080/kie-server/services/rest/server" />
      <arg value="-Dorg.kie.server.persistence.dialect=${org.kie.server.persistence.dialect}" />
      <!--arg value="-Dorg.uberfire.nio.git.daemon.port=${org.uberfire.nio.git.daemon.port}" />
      <arg value="-Dorg.uberfire.nio.git.ssh.port=${org.uberfire.nio.git.ssh.port}" />
      <arg value="-Djboss.socket.binding.port-offset=${jboss.port.offset}" />
      <arg value="-Dorg.uberfire.nio.git.dir=${jboss.home}" />
      <arg value="-Dorg.uberfire.metadata.index.dir=${jboss.home}" />
      <arg value="-Dorg.kie.server.persistence.dialect=${org.kie.server.persistence.dialect}" / -->
    </exec>

然后修改${org.kie.server.persistence.dialect}的值俊卤,在build.properties文件中找到H2數(shù)據(jù)庫屬性設(shè)置,將H2的注釋掉害幅,MySQL的解除注釋消恍,結(jié)果如下:

# default is H2
#H2.version=1.3.168
#db.name=h2
#db.driver.jar.name=h2-${H2.version}.jar
#db.driver.download.url=http://repo1.maven.org/maven2/com/h2database/h2/${H2.version}/h2-${H2.version}.jar
#other options are:
#mysql
  db.name=mysql
  db.driver.module.prefix=com/mysql
  db.driver.jar.name=mysql-connector-java-5.1.44.jar
  db.driver.download.url=https://repository.jboss.org/nexus/service/local/repositories/central/content/mysql/mysql-connector-java/5.1.18/mysql-connector-java-5.1.18.jar
  org.kie.server.persistence.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

修改為:

#mysql
  db.name=mysql
  db.driver.module.prefix=com/mysql
  db.driver.jar.name=mysql-connector-java-5.1.18.jar
  db.driver.download.url=https://repository.jboss.org/nexus/service/local/repositories/central/content/mysql/mysql-connector-java/5.1.18/mysql-connector-java-5.1.18.jar
  org.kie.server.persistence.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

其他地方如官網(wǎng)所述,主要包括:
1以现、修改db\jbpm-persistence-JPA2.xml

<property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
In the case of a MySQL database, you need to change it to:

改為

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>

2狠怨、 修改standalone-full-wildfly-{version}.xml :里面的DataSource

<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/datasources/jbpmDS" pool-name="H2DS" enabled="true" use-java-context="true" use-ccm="true">
                    <connection-url>jdbc:h2:tcp://localhost/~/jbpm-db;MVCC=TRUE</connection-url>
                    <driver>h2</driver>
                    <security>
                        <user-name>sa</user-name>
                    </security>
                </datasource>
                <drivers>
                    <driver name="h2" module="com.h2database.h2">
                        <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>

改成MySQL,${passwordforyourdatabase}替換成你密碼约啊,數(shù)據(jù)庫用戶root推薦換成jbpm:

<datasources>
                <datasource jta="true" jndi-name="java:jboss/datasources/jbpmDS" pool-name="MySQLDS" enabled="true" use-java-context="true" use-ccm="true">
                    <connection-url>jdbc:mysql://localhost:3306/jbpm</connection-url>
                    <driver>mysql</driver>
                    <security>
                        <user-name>root</user-name>
                        <password>${passwordforyourdatabase}</password>
                    </security>
                </datasource>
                <drivers>
                    <driver name="mysql" module="com.mysql">
                        <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class>
                    </driver>
                </drivers>
            </datasources>

把數(shù)據(jù)源ExampleDS改成jbpmDS

<default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" jms-connection-factory="java:jboss/DefaultJMSConnectionFactory" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>

改成如下:

  <default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/jbpmDS" jms-connection-factory="java:jboss/DefaultJMSConnectionFactory" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>

3、修改db/mysql_module.xml ,把里面的jar文件名改成正確的名字取董。這個名可以去build.properties中查找棍苹。

<module xmlns="urn:jboss:module:1.0" name="com.mysql">
   <resources>
     <resource-root path="mysql-connector-java.jar"/>
   </resources>

改成

<module xmlns="urn:jboss:module:1.0" name="com.mysql">
   <resources>
     <resource-root path="mysql-connector-java-5.1.18.jar"/>
   </resources>

名稱參考:根目錄下的build.properties中數(shù)據(jù)庫驅(qū)動屬性設(shè)置db.driver.jar.name

#mysql
  db.name=mysql
  db.driver.module.prefix=com/mysql
  db.driver.jar.name=mysql-connector-java-5.1.18.jar
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市茵汰,隨后出現(xiàn)的幾起案子枢里,更是在濱河造成了極大的恐慌,老刑警劉巖蹂午,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栏豺,死亡現(xiàn)場離奇詭異,居然都是意外死亡豆胸,警方通過查閱死者的電腦和手機奥洼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晚胡,“玉大人灵奖,你說我怎么就攤上這事」琅蹋” “怎么了瓷患?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長遣妥。 經(jīng)常有香客問我擅编,道長,這世上最難降的妖魔是什么箫踩? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任爱态,我火速辦了婚禮,結(jié)果婚禮上境钟,老公的妹妹穿的比我還像新娘锦担。我一直安慰自己,他們只是感情好吱韭,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布吆豹。 她就那樣靜靜地躺著,像睡著了一般理盆。 火紅的嫁衣襯著肌膚如雪痘煤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天猿规,我揣著相機與錄音衷快,去河邊找鬼。 笑死姨俩,一個胖子當(dāng)著我的面吹牛蘸拔,可吹牛的內(nèi)容都是我干的师郑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼调窍,長吁一口氣:“原來是場噩夢啊……” “哼宝冕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起邓萨,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤地梨,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缔恳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宝剖,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年歉甚,在試婚紗的時候發(fā)現(xiàn)自己被綠了万细。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡纸泄,死狀恐怖赖钞,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情聘裁,我是刑警寧澤仁烹,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站咧虎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏计呈。R本人自食惡果不足惜砰诵,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捌显。 院中可真熱鬧茁彭,春花似錦、人聲如沸扶歪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽善镰。三九已至妹萨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間炫欺,已是汗流浹背乎完。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留品洛,地道東北人树姨。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓摩桶,卻偏偏與公主長得像,于是被迫代替她去往敵國和親帽揪。 傳聞我的和親對象是個殘疾皇子硝清,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容