免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1648 | 回复: 0
打印 上一主题 下一主题

初次使用无状态sessionbean的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-02 08:59 |只看该作者 |倒序浏览
无状态sessionbean的方法test()中,两次从Datasource取连接,
     如果前一连接在取得之后,什么也不做便关闭,则后一连接的AutoCommit()值为true;
     如果前一连接有做查询的话,为什么后一连接的AutoCommit值会为false??
     (注:此sessionbean的事务设置为容器管理)

     如果将此方法放到普通的javabean里来实现,则方法中取得的两次连接的AutoCommit()值均为true,

     请问这是为什么??

     测试代码如下:

测试一:
public void test() throws SQLException, Exception {
System.out.println("test1");
Context ictx1 = new InitialContext();
DataSource ds1 = (DataSource) ictx1.lookup("JNDI/SIDB");
Connection conn1=ds1.getConnection();
System.out.println("conn1.getAutoCommit()="+conn1.getAutoCommit());
conn1.close();

Context ictx2 = new InitialContext();
DataSource ds2 = (DataSource) ictx2.lookup("JNDI/SIDB");
Connection conn2=ds2.getConnection();
System.out.println("conn2.getAutoCommit()="+conn2.getAutoCommit());
conn2.close();
}

运行结果:
[07-2-1 11:00:48:969 CST] 462c89fd SystemOut     O test1
[07-2-1 10:58:53:203 CST]  896c9e5 SystemOut     O conn1.getAutoCommit()=true
[07-2-1 10:58:53:219 CST]  896c9e5 SystemOut     O conn2.getAutoCommit()=true

测试二:
public void test() throws SQLException, Exception {
System.out.println("test2");
Context ictx1 = new InitialContext();
DataSource ds1 = (DataSource) ictx1.lookup("JNDI/SIDB");
Connection conn1=ds1.getConnection();
System.out.println("conn1.getAutoCommit()="+conn1.getAutoCommit());

PreparedStatement pstmt=conn1.prepareStatement("select * from sysuser");
ResultSet rs=pstmt.executeQuery();

rs.close();
pstmt.close();
conn1.close();

Context ictx2 = new InitialContext();
DataSource ds2 = (DataSource) ictx2.lookup("JNDI/SIDB");
Connection conn2=ds2.getConnection();
System.out.println("conn2.getAutoCommit()="+conn2.getAutoCommit());
conn2.close();
}
运行结果:

[07-2-1 11:00:48:969 CST] 462c89fd SystemOut     O test2
[07-2-1 11:00:48:969 CST] 462c89fd SystemOut     O conn1.getAutoCommit()=true
[07-2-1 11:00:48:984 CST] 462c89fd SystemOut     O conn2.getAutoCommit()=false(****区别之处****)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP