3

テーブルからデータを収集し、データベースを更新している挿入後に別のテーブルに挿入するクォーツスレッドアプリケーションを作成しています
が、上記のエラーが発生したときに、テーブルに2回挿入されたデータの一部を取得しました

注意:
1. Oracle DB を使用します
2. **OJDBC6.jarを使用して接続します**
3.すべてのテーブルは同じスキーマにあります

スタックトレース:

java.sql.SQLException: Connection is closed. 
        at org.apache.commons.dbcp.PoolingDriver$PoolGuardConnectionWrapper.checkOpen(PoolingDriver.java:263) 
        at org.apache.commons.dbcp.PoolingDriver$PoolGuardConnectionWrapper.close(PoolingDriver.java:268) 
        at com.sender.gsm.dao.Dao.closeConnection(Dao.java:38) 
        at com.sender.gsm.dao.OutDataDao.insertData(OutDataDao.java:91) 
        at com.sender.gsm.jobs.DataHandler.execute(DataHandler.java:49) 
        at org.quartz.core.JobRunShell.run(JobRunShell.java:213) 
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)

密着機能は、

public void closeConnection(Connection conn) throws SQLException {
        if (conn != null ) {
            conn.close();
        }
    }
4

1 に答える 1

6

com.sender.gsm.dao.Dao.closeConnection(Dao.java:38) で com.sender.gsm.dao.OutDataDao.insertData(OutDataDao.java:91) で

スタック トレースから、選択後に挿入を実行中に接続を閉じています。新しい接続を作成してみてください。

selectステートメントの後にメソッドを呼び出した可能性がありcloseConnection()ます。そのため、接続が閉じられているクエリを実行しようとすると、実行時に例外がスローされます。

接続プールを使用している場合は、maxIdleおよびmaxActiveパラメータが適切な値に設定されていることを確認してください。

于 2014-08-06T12:24:52.090 に答える