ページの先頭行へ戻る
Interstage Application Server V12.0.0 Java EE 7 設計・構築・運用ガイド
FUJITSU Software

3.1.15 セッションリカバリ機能を利用する場合のWebアプリケーション作成方法

セッションリカバリ機能を使用するためのWebアプリケーションの条件を説明します。

注意

セッションの属性に格納するオブジェクトのサイズが大きくなればなるほど、実行速度が遅くなります。

セッション属性に格納するオブジェクトクラスを変更する方法

セッション属性に格納するオブジェクトクラスを変更する場合、以下の2つの方法があります。

オブジェクトクラスの作成時に、将来の修正に備えておく方法

オブジェクトクラスの作成時に将来属性の変更があることを見越し、かつ修正前に格納した情報を修正後も使用したい場合、以下の対応が必要です。

a) 作成時

オブジェクトクラスの作成時にserialVersionUIDをクラス変数として宣言し、任意の値(long整数)を設定しておきます。

修正前のオブジェクトクラス例

package com.fujitsu.sample;
import java.io.*;

public class Company implements Serializable {

  private String  longName;
  private String  shortName;
  private String  address;
  static final long serialVersionUID = 10203040506070809L;  ........(1)

  public Company(String longName,
                 String shortName,
                 String address) {
              :
              :
  }
}

(1):任意(一意)のlong整数値を設定します。
b) 修正時

オブジェクトクラスを変更(属性追加)します。

修正後のオブジェクトクラス例

package com.fujitsu.sample;
import java.io.*;

public class Company implements Serializable {

  private String  longName;
  private String  shortName;
  private String  address;
  private String  telNumber;                      ........(2)
  static final long serialVersionUID = 10203040506070809L;

  public Company(String longName,
                 String shortName,
                 String address,
                 String telNumber ) {
              :
              :
  }
}

(2):telNumber属性を追加します。

オブジェクトクラスの作成時に、修正に対する備えをしていなかった場合の変更方法

オブジェクトクラスの作成時に修正に対する備えをしていなく、かつ修正前に格納した情報を修正後も使用したい場合、以下の対応を行う必要があります。

a) 作成時

修正前のオブジェクトクラスではserialVersionUIDの対応はされていません。

修正前のオブジェクトクラス例

package com.fujitsu.sample;
import java.io.*;

public class Company implements Serializable {

  private String  longName;
  private String  shortName;
  private String  address;

  public Company(String longName, String shortName, String address) {
              :
              :
  }
}
b) 修正時
  1. 修正前のクラスに対して、serialverコマンドを実行してserialVersionUIDを取得します。

    serialVersionUIDの取得方法

      > serialver com.fujitsu.sample.Company   ←クラス名
        com.fujitsu.sample.Company:    static final long
        serialVersionUID = 7242562793746307240L;  ←serialVersionUIDが通知されます。
      >
  2. 修正後のクラスに取得したserialVersionUIDをクラス変数として設定します。

    修正後のオブジェクトクラス例

    package com.fujitsu.sample;
    import java.io.*;
    
    public class Company implements Serializable {
    
      private String  longName;
      private String  shortName;
      private String  address;
      private String  telNumber;                                  ....(3)
      static final long serialVersionUID = 7242562793746307240L;  ....(4)
    
      public Company(String longName, String shortName, String address, String telNumber ) {
                  :
                  :
      }
    }
    
    (3):telNumber属性を追加します。
    (4):serialverコマンドで取得したsevialVersionUIDをクラス変数として設定します。

補足

オブジェクト直列化の詳細につきましては、Javaの仕様についてのドキュメントを参照してください。