TIBCO iProcess Web Services SQLException using Oracle 12c database

TIBCO iProcess Web Services SQLException using Oracle 12c database

book

Article ID: KB0084177

calendar_today

Updated On:

Products Versions
TIBCO iProcess Engine (Oracle) 11.6.0

Description

The following SQLException is reported in the Jetty log file when processing EAI Web Services Steps:

2017-01-11 16:31:12,991 [ERROR] [Thread-30] QueueReader - Unable to process message

com.staffware.integration.jmspooling.library.SWPooledWorkerException: Failed to commit work
    at com.staffware.integration.delayedrelease.library.handler.DelayedReleaseHandler.processMessage(DelayedReleaseHandler.java:359)
    at com.staffware.integration.jmspooling.library.pool.QueueReader.run(QueueReader.java:314)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.sql.SQLException: Could not commit with auto-commit set on
    at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:2356)
    at oracle.jdbc.driver.PhysicalConnection.commit(PhysicalConnection.java:2403)
    at org.apache.commons.dbcp.DelegatingConnection.commit(DelegatingConnection.java:301)
    at org.apache.commons.dbcp.PoolingDriver$PoolGuardConnectionWrapper.commit(PoolingDriver.java:288)
    at com.staffware.integration.delayedrelease.library.handler.DelayedReleaseHandler.processMessage(DelayedReleaseHandler.java:353)
    ... 2 more
2017-01-11 16:31:12,991 [WARN ] [Thread-30] QueueReader - Rolling back transaction


This exception can occur as a result of the default Oracle 12c JDBC driver behavior, which is that:

* Auto-commit mode is enabled by default.

* The JDBC driver throws a SQLException when a commit or rollback operation is performed on a connection that has auto-commit set to "true".

Symptoms of the problem can be unexpected application behavior. For example, a step that initiates an EAI Web Services Call-Out does not complete.

Issue/Introduction

SQLException "Could not commit with auto-commit set on" in Jetty log when using Oracle 12c

Environment

All supported operating systems. Oracle database.

Resolution

Update the Jetty JVM configuration to use the following Oracle connection property:

   autoCommitSpecCompliant=false

For example, if Jetty is installed on a Windows platform and the Jetty.cmd file is used to to start Jetty,

JVM invocation in Jetty.cmd before update:

"%JAVA_BIN%java.exe" %PROXY% %JETTY_HOME% -Xms256m -Xmx1024m -Djavax.management.builder.initial=mx4j.server.MX4JMBeanServerBuilder -jar start.jar etc/jetty-base.xml %JETTY_CONNECTORS% tibco/startup.xml

JVM invocation in Jetty.cmd after update:

"%JAVA_BIN%java.exe" %PROXY% %JETTY_HOME% -Xms256m -Xmx1024m -Doracle.jdbc.autoCommitSpecCompliant=false -Djavax.management.builder.initial=mx4j.server.MX4JMBeanServerBuilder -jar start.jar etc/jetty-base.xml %JETTY_CONNECTORS% tibco/startup.xml