CMP调试记

开始调试时间:愚人节12:00
结束调试时间:愚人节后第三天10:46
调试环境:JDK1.4.2
Jboss 3.2.6
Oracle 9i
出错信息:
顺利启动Oracle和Jboss,部署Jar包非常成功,客户端调用后Jboss抛出如下异常:
21:40:58,301 ERROR [LogInterceptor] TransactionRolledbackException in method: pu
blic abstract java.lang.Integer dbaccess.CountCMP.getIncrement() throws java.rmi
.RemoteException, causedBy:java.sql.SQLException: ORA-00936: 缺少表达式

调试过程:手法种种,均遭失败,身心受损

黎明曙光:1.查询Oracle文档关于ORA-00936的信息,得到如下解释:
ORA-00936: Cause: A required part of a clause or expression has been omitted. For example, a SELECT statement may have been entered without a list of columns or expressions or with an incomplete expression. This message is also issued in cases where a reserved word is misused, as in SELECT TABLE.
2.在jboss的日志中查找到如下的关于SQL语句的信息
2005-04-03 10:18:18,194 DEBUG [org.jboss.ejb.plugins.cmp.jdbc.JDBCLoadEntityCommand.CountCMP] Executing SQL: SELECT Increment FROM COUNT WHERE (Name=?)
3.把"SELECT Increment FROM COUNT WHERE (Name=?)"语句在Oracle SQlplus中执行同样得到如下结果:ORA-00936: 缺少表达式

解决方法: 怀疑Icrement是Oracle的保留字,把它改为MyIncrement,并在jbosscmp-jdbc.xml中做相应修改,打包部署重新启动Jboss服务器。

怀着再次遭受失败的心理准备又一次启动客户端程序,接下来见到了三天来第一次Jboss未抛异常的神奇画面,内心狂爽无比,一口气连续执行了20遍......
这次Bug调试感受颇深,肺腑之言碰到bug一定要寻根究底,抓住一切可以利用的信息,以免像我一样浪费大量的时间和精力。不过,个人感觉调试成功后的成就感和调试时间成正比:)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值