有高手能解决这个问题不?

bo_zhb 2004-08-11 05:19:52
小弟用Jsp调用Websphere数据库能成功的进行事物处理,但写到ejb端,同样的的代码,总是报全局事物不能允许操作:conn.setAutoCommit或者conn.commit或者conn.rollback错误,这个问题可把小弟搞死了呀。解决大送分,这里先谢了。
...全文
205 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
pfc001 2004-10-17
  • 打赏
  • 举报
回复
up
iceleighton 2004-10-12
  • 打赏
  • 举报
回复
在会话Bean的方法中更新数据执行commit时,系统日志报DSRA9350E

关键字:DSRA9350E;JDBC 2.0;transaction

产品:WebSphere Application Server(以下简称WAS)
版本:5.0.x,5.1.x
平台:平台无关

问题描述:
在会话Bean的方法中更新数据,代码如下所示:
......
sSQL = "update PFD_TERMINAL_TBL "+
" set CERTFICATION='"+str_cert +"' "+
" where CERTSERIALNO='www'";
conn = getDatabaseConn();
stmt = conn.createStatement();
stmt.executeUpdate(sSQL);
conn.commit();
......

当代码执行到commit时,SystemOut.log中出现如下错误提示:
setTerminalCert 更新数据库错误:java.sql.SQLException: DSRA9350E: Operation Connection.commit is not allowed during a global transaction.

解答:
这个问题是由于开发者不正确的程序代码造成的。
JDBC 2.0的标准中指出,当数据库连接在分布式交易环境中使用的时候,应用程序不能调用以下的3种方法:
Connection.commit
Connection.rollback
Connection.setAutoCommit(true)
这是因为交易管理器(在本例中就是WAS)在分布式交易环境中控制着交易的开始,提交和回滚。应用程序调用以上3个方法中的任意一个都会干扰交易管理器控制交易边界。
因此,只要去掉例子代码中的“conn.commit();” 这一句就可以解决问题了。
ryanhu 2004-10-12
  • 打赏
  • 举报
回复
碰到过这个问题, 实际上本质是SESSION MANAGEMENT的问题.

其中包括从PRESENTATION -> BUSINESS -> DB的TRANSACTION CONFIGRATION的统一...

少后给你LINK...

iceleighton 2004-08-12
  • 打赏
  • 举报
回复
问题描述不清,信息不足。日志?
haifrank 2004-08-11
  • 打赏
  • 举报
回复
我遇到过这个问题,也解决了
不过我不是高手
bo_zhb 2004-08-11
  • 打赏
  • 举报
回复
我发过的问题从来都没有人能解决,再也不上这个论坛了
bo_zhb 2004-08-11
  • 打赏
  • 举报
回复
是不是上面的根本没有高手呀
bo_zhb 2004-08-11
  • 打赏
  • 举报
回复
有高手能解决问题不?

2,633

社区成员

发帖
与我相关
我的任务
社区描述
WebSphere 是 IBM 的软件平台。它包含了编写、运行和监视全天候的工业强度的随需应变 Web 应用程序和跨平台、跨产品解决方案所需要的整个中间件基础设施,如服务器、服务和工具。
社区管理员
  • WebSphere社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧