We are getting an intermitant error when we run a service that calls 2 other services, each one with a different DB call with a different JDBC connection to the same datasource, Oracle. The error is:
[ART.117.4036] Adapter Runtime (Adapter Service): Unable to commit transaction. Transaction state:Transaction is active .
The first DB call is using a NO_TRANSACTION connection. The second is using a LOCAL_TRANSACTION connection. The LOCAL_TRANSACTION is surrounded by a startTransaction and commitTransaction service.
The problem appears to occur when the parent service is running more than 1 simultaneous thread. Any ideas on what is causing this?
I believe webMethods technical support has a better answer for this.
When we got the same error the we used pub.art.transaction.startTransaction,commitTransaction and onerror RollbackTransaction.It is recommended to use these services before and after any JDBC adapter services if we are using services for multiple databases .But one important thing is to make sure to use rollbacktransaction,other wise it will corrupt all other JDBC connections.And only way to resolve this to either clear all JDBC connections or recycle the IS.Hope this helps.
Please check this thread link,look in the Chris Lynch comments,it might help you too,I too seen the same error in our development and realised after seeing this thread,
Note that without explicit transaction setting, each service, including all subsequently called services, is in fact a transaction. In each transaction you can only call a single JDBC resource. By using explicit transactions (from the ART) you can chop up the ‘service’ transaction into smaller bits and use adapter services from different JDBC resources.