【问题标题】:Switch to SQL Sever database for jBPM 7 with Spring Boot使用 Spring Boot 切换到 jBPM 7 的 SQL Server 数据库
【发布时间】:2020-03-11 02:38:59
【问题描述】:

我从https://start.jbpm.org/ 创建了一个应用程序,它可以与 H2 一起正常工作。

现在我想切换到 SQL Sever。它在启动过程中出现以下错误

Caused by: java.lang.RuntimeException: Could not commit session or rollback
    at org.jbpm.services.task.persistence.TaskTransactionInterceptor.rollbackTransaction(TaskTransactionInterceptor.java:123) ~[jbpm-human-task-jpa-7.30.0.Final.jar:7.30.0.Final]
    at org.jbpm.services.task.persistence.TaskTransactionInterceptor.execute(TaskTransactionInterceptor.java:108) ~[jbpm-human-task-jpa-7.30.0.Final.jar:7.30.0.Final]
    at org.jbpm.services.task.persistence.TaskTransactionInterceptor.execute(TaskTransactionInterceptor.java:49) ~[jbpm-human-task-jpa-7.30.0.Final.jar:7.30.0.Final]
    at org.drools.core.command.impl.AbstractInterceptor.executeNext(AbstractInterceptor.java:39) ~[drools-core-7.30.0.Final.jar:7.30.0.Final]
    at org.drools.persistence.jta.TransactionLockInterceptor.execute(TransactionLockInterceptor.java:73) ~[drools-persistence-api-7.30.0.Final.jar:7.30.0.Final]

这是我的 application.properties:

spring.datasource.url=jdbc:sqlserver://10.111.88.10:3341;DatabaseName=JBPM_7
spring.datasource.username=lo2
spring.datasource.password=ta
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
spring.jpa.hibernate.ddl-auto=none
spring.jta.narayana.transaction-manager-id=1

【问题讨论】:

    标签: jbpm jta


    【解决方案1】:

    我认为您的问题在于 JTA,而不是让 SQL Server 运行。

    要先使用 SQL Server,您需要安装 SQL Server 驱动程序。这可从 Microsoft 获得。目前,他们将多个驱动程序打包在一个存档中,因此您需要安装正确的驱动程序。

    其次,您需要更改数据源(或创建新数据源)以使用 SQL Server。

    第三,您需要更改 Hibernate 配置。

    从上面看来,您的 SQL Server 使用 Hibernate 运行,但 JTA 事务存在问题。配置文件包括用于将 JTA 用于容器管理事务的 JNDI。为简单起见,我在 JTA 和 JDBC 下使用用户管理的事务:

    try {
      txn = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction");
      txn.begin();
    ...
      txn.commit();
            } catch (Exception e) {
                try {
                    txn.rollback();
    ...
    
    The lookup changes for container-managed transaction.  I am adding a JTA tag so people can expand on my answer.
    

    【讨论】:

      猜你喜欢
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 2021-09-07
      • 2021-11-17
      相关资源
      最近更新 更多