dsra9110e oracle statement,static变量 并发情况下 引发的问题思考:

日志报错:

........

com.ibm.commerce.exception.ECSystemException: 处理期间发生以下 SQL 异常:“{0}”。

at com.suning.commerce.promotion.util.SNPromotionValidJDBCHelper.getFreeCouponAvailActs_ByScope(SNPromotionValidJDBCHelper.java:2612)

at com.suning.commerce.promotion.commands.SNFreeCouponDisplayTaskCmdImpl.getActsFromDB(SNFreeCouponDisplayTaskCmdImpl.java:461)

at com.suning.commerce.promotion.commands.SNFreeCouponDisplayTaskCmdImpl.getFreeCouponPromInfo(SNFreeCouponDisplayTaskCmdImpl.java:203)

at com.suning.commerce.promotion.commands.SNFreeCouponDisplayTaskCmdImpl.performExecute(SNFreeCouponDisplayTaskCmdImpl.java:145)

........

Caused by: com.ibm.websphere.ce.cm.ObjectClosedException: DSRA9110E: Connection 已关闭。

at com.ibm.ws.rsadapter.jdbc.WSJdbcWrapper.createClosedException(WSJdbcWrapper.java:110)

原代码定位:

SNFreeCouponDisplayTaskCmd :

0818b9ca8b590ca3270a3433284dd417.png

多处调用了该对象,如:

0818b9ca8b590ca3270a3433284dd417.png

SNPromotionValidJDBCHelper:

0818b9ca8b590ca3270a3433284dd417.png

问题分析:

private static SNPromotionValidJDBCHelper validJDBCHelper = new SNPromotionValidJDBCHelper();

在内存中仅有一份, 最后会执行 close(ResultSet rs, Statement stmt) 方法关闭连接,当并发时,当前一个执行了 close(ResultSet rs, Statement stmt) 方法,则后一个会报以上异常。因此 static变量要慎用!

对static的使用,也请大家给予指点。

0818b9ca8b590ca3270a3433284dd417.png例如:static方法会存在这中风险么????

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值