-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Chris,
Sorry, I had the autocommit true/false values mixed up in my mind. When you say you have "autocommit disabled in mysql config" what do you mean? On 10/13/17 10:17 AM, Chris Cheshire wrote: > </snip> > > As a further test I just took out my explicit rollback in my > DAOFactory close() method, and swapped back to commons dbcp. Added > an update that wasn't explicitly committed, and it correctly did > not get committed when the connection was closed. Swapped back to > tomcat dbcp and repeated, it got committed without an explicit > commit statement. > > I'm really puzzled as to why *I* have to explicitly rollback on > close if autocommit is not enabled, instead of tomcat dbcp handling > that when commons dbcp appears to do it. No connection pool can read your mind. If you begin a transaction (or never start one), you must either commit or rollback. Merely calling close() does not explicitly cause either of those to be called. > If I do > > daoFactory = new MySQLDAOFactoryImpl(getDataSource()); > > // update #1 daoFactory.commit() > > // update #2 daoFactory.close(); > > then update #2 is being committed. I'm curious why you are doing "update #2" without either COMMIT or ROLLBACK. That seems like ... a mistake. - From the Connection.close() javadoc: " It is strongly recommended that an application explicitly commits or rolls back an active transaction prior to calling the close method. If the close method is called and there is an active transaction, the results are implementation-defined. " There *is* an implicit COMMIT executed if the autocommit flag is flipped for any reason, either true->false or false->true. If you have autocommit=false in your <Resource> configuration (which you do), then calling setAutoCommit(false) shouldn't do anything. > If I put in this in the close() method of my DAO Factory > > if (!this.dbConn.getAutoCommit()) { this.dbConn.rollback(); } > > before the close() call, then update #2 is correctly not getting > committed. This is probably the wrong approach: your close() method doesn't know whether it's better to call commit() or rollback(), so it should do neither. - -chris -----BEGIN PGP SIGNATURE----- Comment: GPGTools - http://gpgtools.org Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAlnhKXEACgkQHPApP6U8 pFhZmw/9FN376aEpeGwzLRnpWy0jIo7EezNXeV4G5Jtj1slDeqbFMOYcm/3bdSEt sa+9FwHbe9gKMyeLWp3TJbDZ8F0RI+e2CIYV37XAchrDvpb+f80M+SjzPyuovO6a 9wRtbekKd8mbIfpGTfokjW+pNIJBbAJvZfh0UGFJP+VRX5XoE6MLzw60OnEMlmLP 7IFAdvM0t816Nuh7yJIg63I3eHYB3P7cx01ETEhWyI1oK2LQ50cODfgLoxT3iC+j f8HAyn8wubZSkC3PKJ/oY8TGaLczSt8M/ANAucZ0mw91j7m93OB+3KGwVczGRUiD lodMS9RZBsGmNxxzKcCUCmxydat2PRYJSmP/hRR0nQL7xRPiClAi4KJTWFCdn0hc SNZp8shT9Z5EVBNHJ9z2ippW7K5Xr+U58bYrN+kEmq8jN5UTUcQlDoahwnRbRWV5 CCBX+9P+fd44yWuK5IGkFcuKr68LmZYHarZlL5OTxfretKB7QX9B4o4x6J8PhhFj vnfJPlQCkKkuRyuSGTneLqM+f+CrQq7nquVxUmgUPF2btqNe1d21/g8AN8+FSdKS YgiZ/OstBdoDHVxnfxDJQcwY8IG9qg/didN7oaNAdelulcdIFx8Ob7PEdEmXZlrV o3vs2ntI7dCjfr0vfbvkzqrwXGgEMIPvukggB+DTgRxpYKJfCRM= =/fEQ -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org