求教,关于JTA


ctx = new InitialContext();
userTransaction = (UserTransaction) ctx.lookup("java:comp/UserTransaction");
userTransaction.begin();

runDb();//这里插入成功了

someMethod();这里抛出异常

userTransaction.commit();

当捕获到了someMethod()抛出的异常时用了userTransaction.rollback();
但是数据库还是操作成功了。。为什么。一般跟哪些地方有关。

你的数据库需要支持事务机制,如Mysql必须是InnoDB,你的DataSource JNDI容器的配置也必须支持事务。主要从JNDI这个环节查询