java – EJB3 DataSource DataSource.getConnection
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – EJB3 DataSource DataSource.getConnection,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2261字,纯文字阅读大概需要4分钟。
内容图文
![java – EJB3 DataSource DataSource.getConnection](/upload/InfoBanner/zyjiaocheng/733/bc8c51420a12467a990a8b6304c0b1b6.jpg)
在CMT J2EE环境(容器管理事务)中,当我JDNI查找DataSource对象并调用DataSource.getConnection时,使用什么事务/连接?
这个连接是(可能是分布式的)交易的一部分吗?每次我为同一个DataSource对象调用它时,getConnection()是否返回相同的Connection?我只知道使用本机SQL语句由同一个EntityManager使用Connections.
这让我感到困惑.据我所知,SessionContext定义了一个每次使用数据源时都使用的事务系统.我有一个问题,在会话bean内部使用DataSource.getConnection(),然后关闭此连接.如果遇到问题,则发出SessionContext.setForRollBack(true).
因此,服务的事务上下文如何与DataSource相关?
如果我们每次使用数据源或者至少查找数据源时都会生成一个新的Connection,那么我就会有一些问题需要理解我已经知道的事情.任何澄清都会很精彩.我知道容器管理的事务和其他系统,但DataSource的实际行为完全超出了我.
解决方法:
在Java EE中,事务是一种不是数据库专用的概念,例如JMS连接会话也可以是容器管理事务的一部分.这个想法是,如果在容器管理的事务边界下运行一个或多个方法,容器将根据需要提交或回滚事务.
在数据库相关的数据源中,有多个层,第一个是由容器维护的连接的托管池,第二个是数据库驱动程序与数据库的实际连接管理,在Java中,Connection是会话的抽象使用数据库而不是物理连接,由驱动程序管理.
有了上述背景,您的问题可以解决,即:
what transaction / connection is used when I JDNI-lookup for a DataSource object and invoke DataSource.getConnection.
在容器管理事务下,虽然它是依赖于实现的,但是与数据库的连接/会话关联,并用事务边界标记.驱动程序可以与数据库共享实际的物理连接,但这对应用程序和容器都是透明的.
Is this connection part of the (potentially distributed) transaction? Does getConnection return the same Connection every time I call it for the same DataSource object?
请参阅上面的内容,Connection与驱动程序打开的数据库底层套接字无关.它在逻辑上是一个单独的会话,如果在事务边界内,相同的会话与从数据源检索的连接相关联,这是如何实现的是容器设计的一部分
I have the problem that inside a session bean a DataSource.getConnection is used and this connection is then closed
在用于连接的池化实现中,Connection.close()没有影响,连接将返回到池(http://commons.apache.org/proper/commons-dbcp/api-1.3/org/apache/commons/dbcp/PoolableConnection.html),此行为对于所有池都类似.因此,虽然不应在容器管理的事务中关闭连接,但是,连接不一定取消它与容器事务边界的关联.同样,不能从CMT中调用commit,setAutoCommit,rollback,因为这将发出相当于实际数据库的以下命令,之后的事务行为将是未定义的.
内容总结
以上是互联网集市为您收集整理的java – EJB3 DataSource DataSource.getConnection全部内容,希望文章能够帮你解决java – EJB3 DataSource DataSource.getConnection所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。