I have been spending a tremendous amount of time trying to figure out why WebLogic was’nt committing “some of my Tamino transactions”.
We are using Bean-Managed Entities with container-managed transactions.
Our own application is only using one datasource (Tamino v184.108.40.206).
We checked the “Emulate Two-Phase Commit for non-XA Driver” option of the Tx data source in WebLogic, given the fact that Tamino v3 was not XA-compliant.
I was actually in a situation where new EJB calls to our facade (a stateless session beans with “RequiresNew” for container-managed transactions) were getting a Tamino connection from the pool …on which it appeared there was “on some cases” already a transaction running (but never closed nor rolled-back by WebLogic).
Thanks to the “-Dcom.softwareag.LoggingOn=true”, the extensive debugging of the Tamino datasource driver helped me to realize that situation.
Functionnaly, this caused of course a lot of troubles: deadlocks, unexpected immediate “transaction timeout” on a new action, …
After days of investigations, I realized that the operations that were not committing were the ones that were actually calling another EJB (running on another server and developped by the customer: we have no hand on it)!
…and those EJBs (a single stateless session bean) were actually participating to the global transaction initiated in our application (“Requires” mode).
…and in that case no commit neither a rollbackno commit neither a rollback was called at the end of our EJB transaction!!?
For the short term, we worked around that situation by splitting the transaction (“RequiresNew” on the customer’s Sybase-based EJBs).
But for the medium/long term, there is a need to have (even if technically not guaranteed in the case of Tamino v3) global transactions on top of the customer’s EJBs.
- did any of you experience such situations? (or does my explanation of the problems helped you to diagnose yours?)
- technically speaking, I am suspecting a WebLogic but should I suspect the Tamino v3 drivers as well (knowing that commit/rollback is not called according to his detailed log)?
Software AG Belgium, Professional Services Division
You might want to post this question also in the (internal) TaminoTL forum in order to get more feedback from the colleagues involved in similiar projects …
Maybe there is a exception middle in the trace you have not seen yet. This could be
a reason why no commit or rollback was performed. Study also the logfiles of the server.
If you do not see a commit/rollback in the tamino trace it was not performed by the container. That is sure.
There is a global transaction running and the single stateless session bean is participating
in that transaction. Is the transaction commited or rolled back???
4. obviously the emulation of 2PC does not work properly. Ask Weblogic what are the requirements.
to a non-XA complient JDBC driver.