我正在使用供应商API来获取与应用程序数据库的JDBC连接.在应用程序服务器中运行或以独立模式运行时,API可以正常运行.我想在一个事务中运行一系列sql语句.如果它存在,我在JTA事务的上下文中发生它们很好.但是,如果没有,那么我需要使用JDBC事务划分方法. (在参与JTA事务的JDBC连接上调用这些方法会导致sqlException.)
所以我需要能够确定Connection是来自支持JTA的DataSource还是它只是一个直接的JDBC连接.
是否有直接的方法来做出这个决定?
谢谢!
解决方法:
即使它是直接的JDBC,您也可以启用JTA事务.检查autoCommit标志在这方面没有帮助.您可以处于事务中,分发或以其他方式,autoCommit设置为false. autoCommit设置为true会告诉您,您不在分布式事务中,但值为false只表示您不会自动提交…它可能在任何类型的事务中.
我想你将不得不调用UserTransaction.getStatus()并验证它不等于Status.NoTransaction().这将告诉您是否在JTA交易中.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。