Oh...one other piece of possibly relevant info: FooDao and BarDao are created in two separate JARs, each having their own configuration properties (they point to the same DB, but different schemas. They share the same runtime user information). Thanks, -D
________________________________ From: Dave Rodenbaugh Sent: Tuesday, February 27, 2007 10:05 AM To: 'user-java@ibatis.apache.org' Subject: Transaction issue with 2.2.0 Hello, I have a question about a transaction scenario I'm doing...I see problems when trying to use startTransaction()/commitTransaction()/endTransaction with JDBC data source. I'm using Oracle 9.2 client libraries, and this is with iBATIS-2.2.0. Here's my code pattern--I have two Daos involved--one "Foo" and one "Bar". I'm transacting Foo here. (I've tried transacting both and get the same result, too--so it seems to be relating to the FooDao transaction somehow) DaoManager dm = FooDaoManager.getDaoManager(); try { dm.startTransaction(); op1UsingFooDao(); logger.info("1"); op2UsingFooDao(); logger.info("2"); op3UsingBarDao(); //throws SQLException when the Tx code is off, hangs here when using Tx logger.info("3"); //never gets here... dm.commitTransaction(); } finally { logger.info("Inside finally block"); dm.endTransaction(); } Output with no transaction code (application terminates): 1 2 Inside finally block Output with transaction code present (application hangs): 1 2 I expected that the transaction would roll back when an exception was encountered by triggering the finally code. However, since it hangs, I don't know where or why it hung in op3UsingBarDao()...? What am I doing wrong in this scenario and how should I correctly address this? This scenario is consistent with the documentation, but the docs don't cover multiple DaoManager transactions... Thanks, -Dave