質問内容
質問を評価する
(0ポイント)
|
スレッドでDBから値を取得し(iBatis)、CSVを出力しているのですが、複数を同時に実行したら、AutoResultMapクラスのgetResultに対してsyncronizedがかけられて、すべてのスレッドの処理が排他処理となり待ちが発生している状態です(スレッドダンプにより確認)。
sqlmapは以下のように可変のSQLになっています <select id="〜" parametaClass="普通のクラス" resultClass="java.util.HashMap" remapResults="true"> SELECT $可変カラム$ FROM $可変テーブル$ WHERE ITEM_VALUE=#value# </select> 取得するときは、sqlMapClient.queryWithRowHandler("sqlのid", パラメータクラス, this)で取得し、CSVに出力するようにしています(RowHandlerクラスを継承したクラスより呼び出し)。
特に、syncronized処理をしているところはないのですが、AutoResultMapクラスのgetResultでブロックされている状態です。 カラムやテーブルを可変にすることによって、勝手に排他処理がされてしまったりするのでしょうか? それに対する回避方法などもありましたら教えてほしいのですが、よろしいでしょうか? 宜しくお願いします。
|