I just follow the instruction in the official documtation of using gwt-console :
1. Login as krisv and create an evaluation instance
2. Click the task section --> Personal Tasks to check if the process instance created in the previous step can be assigned to krisv (current account ) . However , " Large Objects may not be used in auto-commit mode" exception occurs . Belows show the details information of this errors:
15:03:00,963 INFO [stdout] (Thread-68) Hibernate: select task0_.id as col_0_0_, task0_.processInstanceId as col_1_0_, names4_.text as col_2_0_, subjects2_.text as col_3_0_, descriptio3_.text as col_4_0_, task0_.status as col_5_0_, task0_.priority as col_6_0_, task0_.skipable as col_7_0_, task0_.actualOwner_id as col_8_0_, user1_.id as col_9_0_, task0_.createdOn as col_10_0_, task0_.activationTime as col_11_0_, task0_.expirationTime as col_12_0_, task0_.processId as col_13_0_, task0_.processSessionId as col_14_0_ from Task task0_ left outer join OrganizationalEntity user1_ on task0_.createdBy_id=user1_.id left outer join I18NText subjects2_ on task0_.id=subjects2_.Task_Subjects_Id left outer join I18NText descriptio3_ on task0_.id=descriptio3_.Task_Descriptions_Id left outer join I18NText names4_ on task0_.id=names4_.Task_Names_Id inner join OrganizationalEntity user5_ on task0_.actualOwner_id=user5_.id where task0_.actualOwner_id=? and (task0_.status in (?)) and (names4_.language=? or (select count(names6_.Task_Names_Id) from I18NText names6_ where task0_.id=names6_.Task_Names_Id)=0) and (subjects2_.language=? or (select count(subjects7_.Task_Subjects_Id) from I18NText subjects7_ where task0_.id=subjects7_.Task_Subjects_Id)=0) and (descriptio3_.language=? or (select count(descriptio8_.Task_Descriptions_Id) from I18NText descriptio8_ where task0_.id=descriptio8_.Task_Descriptions_Id)=0) and (task0_.expirationTime is null)
[11:17:04,031 ERROR [org.jbpm.task.service.TaskServerHandler] (Thread-70) org.hibernate.exception.GenericJDBCException: Large Objects may not be used in auto-commit mode.: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Large Objects may not be used in auto-commit mode.
]
11:17:04,015 ERROR [stderr] (Thread-70) at org.jbpm.task.service.persistence.TaskPersistenceManager.queryTasksWithUserIdStatusAndLanguage(TaskPersistenceManager.java:225)
11:17:04,015 ERROR [stderr] (Thread-70) at org.jbpm.task.service.TaskServiceSession.getTasksOwned(TaskServiceSession.java:653)
11:17:04,015 ERROR [stderr] (Thread-70) at org.jbpm.task.service.TaskServerHandler.messageReceived(TaskServerHandler.java:289)
Google and found that handling the "large object" in postresql is required to be enclosed with a transaction block. As my transaction is managed by the AS , I want to ask how to force the AS to disable the auto-commit transaction ? Do jbpm 5.3.0 Final really works with Postresql 9.1 ? Anyone who have successfully config jbpm 5.3.0 Final with Postresql 9.1 using AS 7.1.X please share the idea .
Here is my configuration :
persistence.xml of the jbpm-human-task-war.war :
<persistence-unit name="org.jbpm.task" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/task</jta-data-source>
<mapping-file>META-INF/Taskorm.xml</mapping-file>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update" />
| <property name="hibernate.connection.autocommit" value="false" /> | |
<property name="hibernate.show_sql" value="true" />
<class>XXXXXXXX</class>
<property name="hibernate.connection.autocommit" value="false" />
<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />
</properties>
</persistence-unit>
datasource setting in the standalone.xml:
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<datasource jta="true" jndi-name="java:jboss/datasources/jbpm5" pool-name="jbpmDS" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://127.0.0.1:5433/jbpm5</connection-url>
<driver>postgresql-9.1</driver>
<security>
<user-name>jbpm5</user-name>
<password>jbpm5</password>
</security>
</datasource>
<datasource jta="true" jndi-name="java:jboss/datasources/task" pool-name="taskDS" enabled="true" use-java-context="true">
<connection-url>jdbc:postgresql://127.0.0.1:5433/task</connection-url>
<driver>postgresql-9.1</driver>
<security>
<user-name>jbpm5</user-name>
<password>jbpm5</password>
</security>
</datasource>
<drivers>
<driver name="postgresql-9.1" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>