POI が激遅くTomcat が停止した時の改修

レコード数、列数の多いPOIでのエクセル出力は、どうしても遅くなりがちですが、Javaのヒープ上限を超えて、エラーで出力不能となったことがあり、直しました。

[ コードサンプル ]
org.apache.poi.xssf 以下に替えて、org.apache.poi.ss 以下のAPIをインポート


import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.*;
import org.apache.poi.ss.usermodel.WorkbookFactory;

テンプレート読込


  /**
   * テンプレート読込
   *
   * @throws IOException ファイル読込みエラー
   */
  public void readTemplate() throws IOException {

    try {
      InputStream fi = new FileInputStream(new File(exTmplFName));
      this.wb = WorkbookFactory.create(fi);
    }
    catch (Exception e) {
      e.printStackTrace();
    }

  }

エクセルオブジェクト



    private Workbook wb = null;

    Sheet sheet = null;
    Cell cell = null;

    sheet = this.wb.getSheetAt(0);
    Row row = sheet.getRow(1);

MyBatis 大量連続更新時のパフォーマンス向上策

 

 

 

sqlSessionFactory.openSession の引数に ExecutorType.BATCH を入れてます。

[ コードサンプル ]


  /**
   * MyBatisセッションファクトリー
   */
  protected SqlSessionFactory sqlSessionFactory = null;

  /**
   * マルチ選択用ファイル分類一時テーブル削除追加
   */
  protected void delinsFileTmpTable() {

    try (SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH)) {
      // -- ファイル分類一時テーブル更新 -- //
      // 削除 //
      session.delete("delTmpFileList", this);
      // 追加 //
      for (String nmf : this.fileextList) {
        this.nmFile = nmf;
        session.insert("insATmpFileList", this);
      }
      session.commit();
    }
    catch (Exception e) {
      e.printStackTrace();
    }

  }

 

Tomcat 管理ツールは probe 一択

Tomcat9系 でも使えてます。

よく使う機能

1) アプリケーション単位での停止、起動 (Tomcat再起動しなくても一瞬でできる)

2) データソースの確認と接続チェック

3) 接続セッションの確認、切断

4) 配備後のJSPの全コンパイル

5) ヒープメモリ使用量のチェックとガベージコレクションの実行

CentOS7系 6系より便利なところ

基本的に設定ファイルをいじる方式から、コマンドで設定を変更する方式に変わってきてる。

1)  systemd で起動、終了、自動起動、ステータスがわかりやすい。自作サービスも作りやすい

2) firewalld でファイアウォールの設定がやりやすい

3) nmtui, nmcui のネットワーク設定が便利

詳しくはこちらのリク: https://qiita.com/sion_cojp/items/115e1671fcbc8f214aee 

https://liginc.co.jp/343687

 

HttpFox を使い続ける

FireFoxの定番プラグインのHttpFoxを長年使ってましたが、Ver60以降、Quantamになってから、使えなくなったので、WaterFoxをNetBeansのデフォルトブラウザにして使い続けてます。

レスポンスボディ、Postパラメータのチェックとか、JSON, AJaxを使ってると頻繁に行う必要あり、開発ツールに比べ、シンプルで見やすいです。