ページの先頭行へ戻る
HA Database Ready 業務開発ガイド(Open SQL編)
FUJITSU Integrated System

4.2.1 JDBC driverを利用する場合

以下のエラー事象が発生した場合は、データベースの切り替えが発生した可能性があります。この場合、コネクションの再接続を行って、トランザクションを再実行してください。

アプリケーションの記述例
    Statement st;
    Connection conn = DriverManager.getConnection(~);
    …

    try {
        // SQLの実行
        st = conn.createStatement();
        String sql = "~";
        st.executeQuery(sql);

    } catch (SQLException e) {
        if (e.getSQLState().equals("08006") || e.getSQLState().equals("57P01")){
            try {
                conn.close();
            } catch (SQLException e1) {
    
            }

            // 再接続処理へ

        } else {
            throw e; //その他のエラー
        }
    }

注意

データベースの切り替えが完了するまでは、コネクションの接続がエラー終了し、SQLExceptionのgetSQLState()に"08001"のエラーが返却されます。

アプリケーションの記述例

5秒間隔で20回、再接続をリトライする場合。

    int count = 0;
    Connection conn = null;

    …

    do {
        count++;
        try {
            conn = DriverManager.getConnection( ~ );

            //再接続完了

        } catch (SQLException e) {

            if (!e.getSQLState().equals("08001") || count > 20){
                throw e; // 再接続失敗

            }
        }
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e1) {
                throw e;
        }
    } while (true);