Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド
目次 索引 前ページ次ページ

第2部 Servlet/JSP編> 第9章 セションリカバリ機能

9.7 アプリケーション作成方法

 セションリカバリ機能を使用するための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をクラス変数として設定します。
    -------------------------------------------------------------------------------

◆補足


目次 索引 前ページ次ページ

Copyright 2008 FUJITSU LIMITED