用DriverManager和sqldatasourcee获得Connection的区别在哪

当前位置: >
> 求救..action拿到的reqeust.不传到DataSource层..如何在DataSourc
求救..action拿到的reqeust.不传到DataSource层..如何在DataSourc
octopuss & at
求救..action拿到的reqeust.不传到DataSource层..如何在DataSource能取得session里的东西  现在是这样.用户有4个数据库.但只部署一份程序.所以每个用户访问的时候.我需要跟他们的登陆标识,返回给他们对应的数据库连接.如果从action层 -& BO层(request) -&con(request) .. if else -& return con
-&DAO层这样那我需要改的东西太多太多了..每个BO con都要加参数 那就疯了...上W个都得..所以我就想 在action将 参数封装到session里..然后在con 直接能get到session里的东西..怎么实现呢 大大们!!! 求救啊!!!我也配DWR了..WebContext webContext = WebContextFactory.get(); webContext.getSession() ; webContext.getHttpServletRequest() ; webContext.getHttpServletResponse();这个东西我也在con层用了..但是取不到啊..不是说可以随意取的嘛!!哎!!难过死了!!!大大们有没有什么好的解决办法啊..我的思想就是 根据用户的请求 查看他的所属数据库标识 然后在con层 判断应该返回哪个数据库的连接..我把3个层简单的代码贴一下..大大们...求帮助啊action层  Java code   public class LoginAction extends Action {
public ActionForward perform(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
ActionErrors errors = new ActionErrors();
TlrctlForm tlrctlForm = (TlrctlForm)
/*String className = &app.poozf.util.PoozfConMete&;
this.printFieldsValue(className);*/
TlrctlBO tlrctlBo = new TlrctlBO();
//在数据库查找时只用到了Tlrno,没有用到Passwd,所有在下面要比对查询到的密码是否一致
DownAndTlrct downAndTlrct = tlrctlBo.searchDownAndTlrct(tlrctlForm.getTlrno(), tlrctlForm.getPasswd());
Tlrctl tlrctl = downAndTlrct.getTlrctl(); // 操作员
BO层  Java code  
public DownAndTlrct searchDownAndTlrct(String tlrno, String passwd) {
Connection con =
Connection cons =
DownAndTlrct downAndTlrct = new DownAndTlrct();
con = DataSourceUtils.getConnection(pool);
// 得到综合业务的连接
//cons = DataSourceUtils.getConnection(pool);
TlrctlDAO tlrctlDAO = new TlrctlDAO(con);
/** 操作员* */
downAndTlrct.setTlrctl(tlrctlDAO.findByPrimaryKey(tlrno, cons));
/** modify zl
承德 只有操作员有反洗钱权限的 才查询下拉框* */ //
System.out.println(passwd + &--
--&+ downAndTlrct.getTlrctl().getPasswd());
} catch (Exception e) {
new ThrowDaoExHandler().handle(con, e);
} finally {
DataSourceUtils.closeConnection(con);
//DataSourceUtils.closeConnection(cons);
return downAndT
DataSource层  Java code  
public static Connection getConnection(ConnectionPool connectionpool)throws SQLException{
Connection connection =
connection = DriverManager.getConnection(&proxool.db_itp_fxq&);
if(connection == null)
throw new CannotGetJdbcConnectionException(&error.getConnection&);
// 不让连接自动提交
connection.setAutoCommit(false);
// 解决JDK1.5 连接数据库慢的问题
ProxySelector.setDefault(null);
不传request的话,你连session对象都获取不到,如何去获取里面的值?要么你就在内存里面开辟一个空间,来引用到application中的session。这样你通过这个来获取session对象。当然要记住的是,当session失效的时候要去清理这个空间里面的数据。
odacash & &
& & (0)(0)
按道理 来说,是应该可以取到Session的。还有一个方法 就是conn 提前创建,在Action中就创建。如Hibernate 的OpenSessionViewFilter那样。odan11 & &
& & (0)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
阅读(1353)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'数据源与连接池',
blogAbstract:'数据源(DataSource)即数据来源,调用DataSource.getConnection(),即可获取一个连接,而无需关心连到哪个数据库,用户名/密码是什么.这比DriverManager.getConnection(url, user, password)要先进多了.我们就通过这个DataSource.getConnection()方法来弄清什么是数据源与连接池.
DataSource有两种实现方式
1.直连数据库方式 1.当调用DataSource.getConnection()时,其实它调用的是DriverManager.getConnection(url, user, password)来获取一个Connection,Connection使用完后被close,断开与数据库的连接,我们称这总方式是直连数据库,因为每次都需要重新建立与数据库之间的连接,而并没有把之前的Connection保留供下次使用.',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:3,
publishTime:8,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}DataSource和DriverManager区别及联系
编辑:www.fx114.net
本篇文章主要介绍了"DataSource和DriverManager区别及联系",主要涉及到DataSource和DriverManager区别及联系方面的内容,对于DataSource和DriverManager区别及联系感兴趣的同学可以参考一下。
DataSource和DriverManager区别及联系DataSource跟DriverManager区别及联系
In basic terms, a data source is a facility for storing data. It can be as sophisticated as a complex database for a large corporation or as simple as a file with rows and columns. A data source can reside on a remote server, or it can be on a local desktop machine. Applications access a data source using a connection, and aDataSource object can be thought of as a factory for connections to the particular data source that theDataSource instance represents.两者相同点:Using a DataSource object is the preferred alternative to using the DriverManager for establishing a connection to a data source. They are similar to the extent that the DriverManager class and DataSource interface both have methods for creating a connection, methods for getting and setting a timeout limit for making a connection, and methods for getting and setting a stream for logging.两者不同点:1.Unlike the DriverManager, a DataSource object has properties that identify and describe the data source it represents. Also, a DataSource object works with a JavaTM Naming and Directory InterfaceTM (JNDI) naming service and is created, deployed, and managed separately from the applications that use it. A driver vendor will provide a class that is a basic implementation of the DataSource interface as part of its JDBC 2.0 or 3.0 driver product.2.The second major advantage is that the DataSource facility allows developers to implement a DataSourceclass to take advantage of features like connection pooling and distributed transactions.
在JDBC2.0或JDBC3.0中,所有的数据库驱动程序提供商必须提供一个实现了DataSource接口的类,要使用数据源必须首先在JNDI中注册该数据源对象。
如果在JNDI中注册了数据源对象,将会比起使用DriverManager来具有两个方面的优势:
首先,程序不需要像使用DriverManager一样对加载的数据库驱动程序信息进行硬编码,程序员可以选择先在JNDI中注册这个数据源对象,然后在程序中使用一个逻辑名称来引用它,JNDI会自动根据你给出的名称找到与这个名称绑定的DataSource对象。然后就可以使用这个DataSource对象来建立和具体数据库的连接了。
其次,使用实现了DataSource接口的类所具有的第二个优势体现在连接池和分布式事务上。连接池通过对连接的复用而不是新建一个物理连接来显著地提高程序的效率。从而适用于任务繁忙、负担繁重的企业级分布式事务。
数据库连接池的基本原理
传统的数据库连接方式(指通过DriverManager和基本实现DataSource进行连接)中,一个数据库连接对象均对应一个物理数据库连接,数据库连接的建立以及关闭对系统而言是耗费系统资源的操作,在多层结构的应用程序环境中这种耗费资源的动作对系统的性能影响尤为明显。
在多层结构的应用程序中通过连接池(connection pooling)技术可以使系统的性能明显得到提到,连接池意味着当应用程序需要调用一个数据库连接的时,数据库相关的接口通过返回一个通过重用数据库连接来代替重新创建一个数据库连接。通过这种方式,应用程序可以减少对数据库连接操作,尤其在多层环境中多个客户端可以通过共享少量的物理数据库连接来满足系统需求。通过连接池技术Java应用程序不仅可以提高系统性能同时也为系统提高了可测量性。
数据库连接池是运行在后台的而且应用程序的编码没有任何的影响。此中状况存在的前提是应用程序必须通过DataSource对象(一个实现javax.sql.DataSource接口的实例)的方式代替原有通过DriverManager类来获得数据库连接的方式。一个实现javax.sql.DataSource接口的类可以支持也可以不支持数据库连接池,但是两者获得数据库连接的代码基本是相同的。
一个DataSource对象通常注册在JNDI命名服务上,应用程序可以通过标准的方式获得到注册在JNDI服务上的DataSource对象。 代码如下:Context ctx = new InitialContext();DataSource ds = (DataSource) ctx.lookup("jdbc/openbase");  如果当前DataSource不支持数据库连接池,应用程序将获得一个和物理数据库连接对应的Connection对象。而如果当前的DataSource对象支持数据库连接池,应用程序自动获得重用的数据库连接而不用创建新的数据库连接。重用的数据库连接和新建立连接的数据库连接使用上没有任何不同。应用程序可以通过重用的连接正常的访问数据库,进行访问数据的操作,完成操作后应显式的调用close()关闭数据库连接。  Connection con = ds.getConnection("User", "Pwd");  相关数据库的操作;  con.close();  当关闭数据连接后,当前使用的数据库连接将不会被物理关闭,而是放回到数据库连接池中进行重用。  JDBC3.0规范中数据库连接池框架  JDBC3.0规范中通过提供了一个支持数据库连接池的框架,这个框架仅仅规定了如何支持连接池的实现,而连接池的具体实现JDBC 3.0规范并没有做相关的规定。通过这个框架可以让不同角色的开发人员共同实现数据库连接池。  通过JDBC3.0规范可以知道具体数据库连接池的实现可以分为JDBC Driver级和Application Server级。在JDBC Driver级的实现中任何相关的工作均由特定数据库厂商的JDBC Drvier的开发人员来具体实现,即JDBC Driver既需要提供对数据库连接池的支持同时也必须对数据库连接池进行具体实现。而在Application Server级中数据库连接池的实现中特定数据库厂商的JDBC Driver开发人员和Application Server开发人员来共同实现数据库连接池的实现(但是现在大多数Application Server厂商实现的连接池的机制和规范中提到有差异),其中特定数据库厂商的JDBC Driver提供数据库连接池的支持而特定的Application Server厂商提供数据库连接池的具体实现。  JDBC3.0规范规定了如下的类和接口来支持数据库连接池的实现。  javax.sql.ConnectionEvent  javax.sql.ConnectionPoolDataSource  javax.sql.PooledConnection  javax.sql.ConnectionEventListener  其中除javax.sql.ConnectionEvent是类,其它的均为接口。
  C:\1.jpg  screen.width-333)this.width=screen.width-333;" src="/Develop/ArticleImages/19/19446/CSDN_Dev_Image_48411.jpg"&  JDBC3.0连接池框架的关系图  通过此图可以大概的了解相关接口在一个典型的三层环境中应用程序的位置。  数据库连接池实现层次中,由特定数据库厂商的JDBC Driver开发人员提供连接池支持,而特定Application Server提供连接池实现的情况比较复杂,其它的实现层次均可视为其简化情况的一种。下面将针对这种情况进行说明。  在这个框架主要有两个用户角色存在,它们分别是:  特定数据库厂商的JDBC Driver开发人员,之后将简称为Driver Vendor  特定Application Server中连接池开发人员,之后将简称为Pooling Vendor  C:\2.bmp  screen.width-333)this.width=screen.width-333;" src="/Develop/ArticleImages/19/19446/CSDN_Dev_Image_48413.gif"&  JDBC3.0规范中在上述情况下各个接口和类之间的UML图  下面对几个关键模块进行详细的说明:  Driver Vendor DataSource:  Driver Vendor必须提供一个ConnectionPoolDataSource 接口的具体实现,通过这个接口Pooling Vendor可以得到一个PooledConnection对象,从而使第三方实现的连接池可以使用特定数据库厂商得到JDBC Driver产生的数据库连接。在这里ConnectionPoolDataSource接口扮演的角色可以视为产生PooledConnection 对象的工厂。  Driver Vendor PooledConnection:  Driver Vendor必须提供标准PooledConnection 接口实现的类,这个接口允许Pooling Vendor在JDBC Driver提供连接池支持的基础上实现连接池。一个具体PooledConnection对象代表了一个物理的数据库连接;由PooledConnection对象创建Connection对象仅仅只是一个指向PooledConnetion对象的句柄。在JDBC 3.0连接池实现框架中PooledConnection对象扮演的角色可以视为产生Connection对象的工厂。  Pooling Vendor DataSource:Pooling Vendor必须实现DataSource接口,这个接口是和连接池实现模块进行交互的入口点。ConnectionPoolDataSource根据需要创建PooledConnection对象。  Pooling Vendor Connection Cache:  此模块是Pooling Vendor对连接池的具体实现。JDBC 3.0 规范没有规定在DataSource对象和数据库连接池实现之间的需要实现的接口,所以它们之间的交互由Pooling Vendor自己定义。一般而言,一个数据库连接池的具体实现包含了一个或若干个具体的类,但是在连接池实现模块中必须包含一个类实现标准ConnectionEventListener接口。当一个PooledConnectiond对象被关闭或者出现异常的时候,PooledConnection对象将会向ConnectionEventListener接口发送ConnectionEvent对象,连接池实现模块将会根据返回的ConnectionEvent对象对PooledConnection进行关闭或者重用操作。  ConnectionEvent:  实现连接池时,当应用程序调用Connection.close()试图去关闭数据库连接时,这时需要有一个通告给连接池实现模块,通告对当前的数据库物理连接(PooledConnection 对象)进行重用。为了使连接池实现模块能得到这种"通告",连接池实现模块必须实现ConnectionEventListener接口,而且同时需要注册成为PooledConnection对象的监听者。连接池实现模块通过PooledConnection.addConnectionEventListener()方法注册自己成为一个监听者。  在典型三层环境中具体调用流程:  当应用程序通过调用DataSource.getConnection()得到一个数据库连接。Pooling Vendor实现的DataSource对象在连接池中进行查找看当前是否有有效的PooledConnection对象,如果连接池中有可用的PooledConnection,则进行检查,如果当前的PooledConnection可用则使用。  如果如果连接池中没有可用的PooledConnection对象,或者当前的PooledConnection对象不正确,那么Pooling Vendor调用ConnectionPoolDataSource.getPooledConnection类创建一个新的PooledConnection对象,这时由Driver Vendor实现的ConnectionPoolDataSource将会创建一个满足要求新的PooledConnection对象,并将其返回给连接池实现模块进行管理。  然后,Pooling Vendor会调用PooledConnection.getConnection()获得一个逻辑的Connection对象,这个逻辑的Connection对象将会象正常的Connection对象返回给应用程序。这个逻辑Connection对象实际上是连接池中PooledConnection对象的一个句柄,当连接池有效时,应用程序调用DataSource.getConnection()就会得到这个句柄。简而言之,应用程序此时使用的Connection对象仅仅是其创建者PooledConnection对象的句柄而已。  连接池实现模块调用PooledConnection.addConnectionEventListener()将自己注册成为一个PooledConnection对象的监听者,当数据库连接需要重用或者关闭的时候连接池实现模块可以得到通告。  当应用程序通过调用Connection.close()来关闭数据库连接,这时一个ConnectionEvent对象被创建并被返回到连接池实现模块,连接池实现模块接受到此通告后,将PooledConnection对象返回到池中进行重用。这些过程中其它角色都不能访问PooledConnection.close()方法,能访问这个方法的只有Pooling Vendor,它们使用这个方法对连接池中的对象进行操作,通过PooledConnection.close()方法可以关闭物理数据库连接。
转自:.cn/s/blog_4ebfsj.html
本文标题:
本页链接:java中的JDBC事务和JTA的区别是什么?_百度知道
java中的JDBC事务和JTA的区别是什么?
false),并通知引擎提交或回滚这一打开的事务; ret = xaRes:&#47,我们将陷入分布式事务已经部分提交的情形中。例如: “用 JTA 界定事务; &#47,可以参看下面的文章,&
pstmt.;&#47,先考虑如下几个问题;jdbc_user&quot.UserTransaction 接口中的方法。 上面的例子演示了如何在 Java 中使用 JTA 实现两阶段提交(Two-Phase-Commit)协议.Connection)连接的区别在于;property name=&.//
pstmt.getXAConnection(&数据库更新操作2
* 如果使用的是全局事务(jta事务) & xaDS,那么就需要有一个实现 this,在操作完成后调 用commit()来进行整体提交:SID& xid = new MyXid(100.TMSUCCESS), & protected byte bqual[];Spinal Tap&quot.ibm。 上面描述的情形是一个很好的例子,其中某一参与数据库可能崩溃: public DataSource getDataSource() throws SQLException { SQLServerDataSource xaDS = new com.current_session_context_class&quot。一个 XADataSource 对象就是一个 XAConnection 对象的工厂.setSelectMethod(&quot.close(),出于某种理由,而采用openSession()
创建的session必须手动关闭
conn,更别说分布事务了,就发出命令向数据库提交该事务(第 2 阶段):XA可以参与JTA的事务.executeUpdate(“insert into table …”). XAResource xaRes.,最后告诉事务说到这儿可以提交或回滚了;thread&lt,事务操作缺省是自动提交, new byte[]{0x02})。在这一时间间隔中.TMNOFLAGS); &#47,你必须首先实现一个Xid类用来标识事务(在普通情况下这将由事务管理程序来处理).formatId = formatId,而且不支持自动提交;&#47。 一种解决方案是用一个小型应用程序连接引擎中打开的事务分支.start(xid.xa: Oracle.gtrid = gtrid,您就要负责进行错误处理, 别的都是黑箱操作。 My SQL 连本地都支持不好。现在.createStatement()。JDBC Connection 接口( 以上是hibernate中一些使用.end(xid,操作成功后:
pstmt = conn.begin(); /&#47,根本看不到事务是如果管理的,如果一个事务分支报告了错误; } public byte[] getBranchQualifier() {
xaDS;&#47,下面来说说jdbc与jta的区别; con = xaCon,因为这将使该全局事务处于不一致状态。在使用一个中间层服务器时,那就是如果第 2 阶段中一个事务分支发生故障;jdbc_password&quot。 在使用JTA之前.XAConnection 和 javax、gtrid(全局事务标识符)和bqual(分支修饰词标识符)。但是“两阶段提交协议 简介”小节中提到仍然存在一个问题; xaDS.ibm,你需要创建一个你要使用的数据库的数据源,那么还有一个隐藏的 onmode 标志。 # 在jdbc中,可以通过调用setAutoCommit(false)来禁止自动提交;&jta& / Connection con.XAConnection)和非XA( stmt.datadirect;此时就可以在异常捕获时调用 rollback()进行回滚; public MyXid() { } public MyXid(int formatId。最后分布式事务(Distributed Transaction)结束;&#47,两阶段提交(Two-Phase-Commit)事务的启动与常规的单阶段提交(One-Phase-Commit)事务类似;): * 如果使用的是本地事务(jdbc事务) &lt,IDS 引擎由于断电发生崩溃。 下面的例子说明Xid的实现。现在.; } 当然.transaction: XADataSource xaDS.; int ret,在最终提交该事务之前; 让我们来关注下面的话;/,也是使用应用程序服务器(Application Server)或事务监控器(Transaction Monitor)的理由;).executeUpdate(“alter table …”)、getCurrentSession()与openSession()的区别:thin,应用程序/
} } JDBC 事务的一个缺点是事务的范围局限于一个数据库连接.setServerName(&hibernate。接着:
try { conn = DriverManager.setAutoCommit(false),&quot.executeUpdate()。 假 定下列情形;&property&gt:1521.setDataSourceName(&quot.SQLServerDataSource()。” 要使用JTA事务..sqlserver, SQL Server等大型数据库才支持XA;事务提交
}catch(Exception ex) {
;); } } catch (XAException e) { e。这是非常糟糕的; } public byte[] getGlobalTransactionId() { return gtrid://www,一条对数据库的更新表达式代表一项事务操作;insert into test_table values (100)&quot。 在 DB2 UDB 中; 。您现在该怎么办呢.setString(1://www.close(); return xaDS; xaRes,你只要声明开始事务; ; if (ret == XAResource:
JDBC 事务 JDBC 事务是用 Connection 对象控制的: http.XA_OK) { xaR } 例1 这个例子是用“两步提交协议”来提交一个事务分支? 在重启之后.printStackTrace(),相关数据的一致性.prepareStatement(&quot。 注意;
&#47.executeUpdate(& xaRes = xaCproperty name=&quot: 1;cursor&quot、使用getCurrentSession()需要在 XAConnection xaCon, /developerworks/cn/db2/library/techarticles/dm-0505weber/index。 XA连接(javax.rollback(),而采用openSession()
创建的session则不会 * 采用getCurrentSession()创建的session在commit或rollback时会自动关闭, new byte[]{0x01}.commit(); stmt = con,产生的连接为一个XA连接.getConnection()。之后就可以把多个数据库操作的表达式作为一个事务;);; Xid xid,应用程序成功提交了 DB2 的事务分支;/ public class MyXid implements Xid { protected int formatId,倘若其中一个表达式操作失败.printStackTrace(),允许您结束打开的事务分支。如果发生了; Statement stmt,应用程序要调用 javax,您可以发出 LIST INDOUBT TRANSACTIONS 来获得打开的 XA 事务的有关信息.*; xaDS.printStackTrace().XAResource 接口的 JDBC 驱动程序.prepare(xid),都不会执行到commit();SQLServer&quot, byte bqual[]) { 客 户机对该两阶段提交(Two-Phase-Commit)操作中所涉及的所有数据库执行其修改工作。接着,在应用程序可以通知 IDS 事务分支提交它这一部分之前; } public int getFormatId() { return formatId;username&quot。在该应用程序中,告诉容器我下面的操作要求事务参与了.html两阶段提交(Two-Phase-Commit)协议 首先, DB2在说他们之间的区别之前.merant.setPortNumber(1433); try { xaRes:formatID.current_session_context_class&quot,我们不需要写这些代码;UPDATE MOVIES 。在下一步中。也就是说,就由该服务器负责保持事情正常。一个 JDBC 事务不能跨越多个数据库.cfg。 要用 JTA 进行事务界定.sql,您可以看到在“第 1 阶段”和“第 2 阶段”之间有一个很小的时间间隔? 如果再次查看程序代码.bqual = bqual,示例如下。(onmode -Z xid)。如果客户机从数据库收到一条“okay”,该怎么办呢.com/developerworks/cn/db2/library/techarticles/dm-0505weber/index、操作不成功则回滚
}catch(Exception e) { e.sql,事务通过这个方法把它加入到事务容器中进行 管理;userpwd& protected byte gtrid[], Sybase.& xaC
Connection conn = ds.createStatement(),该事务分支将被引擎所启动的试探性回滚中止; } } 其次.close()。如果应用程序没有准备重新发送“第 2 阶段”的提交.xml文件中加入如下配置; } finally { ); stmt, &):
用XADataSource产生的XAConnection它扩展了一个getXAResource()方法,应用程序通知 DB2 事务分支提交事务。该引擎等待来自应用程序的提示如何做.jdbcx: import javax:在“第 1 阶段”之后;).sql..
DataSource ds = obtainXADataSource(),客户机通知参与的数据库准备提交(第 1 阶段); con,系统将自动调用commit()来提交? * 采用getCurrentSession()创建的session会绑定到当前线程中;server& this,并且将产生响应的异常,设置回滚点
stmt = conn.getXAResource().sql
其他类似问题
jta的相关知识
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 druiddatasource 的文章

 

随机推荐