ibatis執行存儲過程 CPU 100%

我的項目是ibatis+struts2+spring,項目在部署測試環境時,發現CUP佔用很快達到100%。根據項目中的開發情況,將問題定位在幾個定時執行的任務上面。一個個排除,最終找到了問題所在。

出問題了的程序在執行中調用了一個存儲過程,該存儲過程有兩個返回參數具體程序如下:

1>ibatis配置文件:
<parameterMap id="backAwardMap" class="java.util.HashMap">
<parameter property="resultValue" mode="OUT" jdbcType="VARCHAR" javaType="java.lang.String"/>
<parameter property="v_errmsg" mode="OUT" jdbcType="VARCHAR" javaType="java.lang.String"/>
</parameterMap>
<procedure id="callBackAward" parameterMap="backAwardMap">
{call pro_lottery_backaward(?,?)}
</procedure>
</sqlMap>

2>dao:
public void executeBackAward(Map map) {
getSqlMapClientTemplate().queryForObject("callBackAward",map);
}

進過對比,發現這個存儲過程的調用有所不同,使用了queryForObject方法,原意是該執行不需要控制事務。不必調用insert或者update方法。將上述調用修改成:
public void executeBackAward(Map map) {
getSqlMapClientTemplate().update("callBackAward",map);
}
部署後,運行一天再也沒有出現CUP被過高佔用的情況。到此問題得到解決。
發佈了25 篇原創文章 · 獲贊 1 · 訪問量 1805
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章