Interstage Application Server/Interstage Web Server J2EE ユーザーズガイド |
目次 索引 |
第2部 Servlet/JSP編 | > 第9章 セションリカバリ機能 |
セションリカバリ機能を使用するためのWebアプリケーションの条件を説明します。
セションの属性に格納するオブジェクトのサイズが大きくなればなるほど、実行速度が遅くなります。
セション属性に格納するオブジェクトクラスを変更する場合、以下の2つの方法があります。
オブジェクトクラスの作成時に将来属性の変更があることを見越し、かつ修正前に格納した情報を修正後も使用したい場合、以下の対応が必要です。
オブジェクトクラスの作成時に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整数値を設定します。 -------------------------------------------------------------------------------
オブジェクトクラスを変更(属性追加)します。
【修正後のオブジェクトクラス例】 ------------------------------------------------------------------------------- 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属性を追加します。 -------------------------------------------------------------------------------
オブジェクトクラスの作成時に修正に対する備えをしていなく、かつ修正前に格納した情報を修正後も使用したい場合、以下の対応を行う必要があります。
【修正前のオブジェクトクラス例】 修正前のオブジェクトクラスでは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) { : : } } -------------------------------------------------------------------------------
【serialVersionUIDの取得方法】 ------------------------------------------------------------------------------- > serialver com.fujitsu.sample.Company ←クラス名
com.fujitsu.sample.Company: static final long
serialVersionUID = 7242562793746307240L; ←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をクラス変数として設定します。 -------------------------------------------------------------------------------
目次 索引 |