異なるTomcat間でセッションに格納されたオブジェクトを共有できると言うことは、それらのオブジェクトが複製可能であることを意味します。そのため、セッションに格納するオブジェクトはSerializableインターフェイスをインプリメントしておく必要があります。つまりセッションの同期化とはオブジェクトの直列化を利用してセッション内のオブジェクトを送受信し、コピーしあうことと言えます。
クラスタリング下のTomcatではSession#setAttributeでセッションに格納したオブジェクトをSession#getAttributeで取り出したとしても、そのオブジェクトの同一性は保証されません。
request.getSession().setAttribute("shareData", data);
data2 = request.getSession().getAttribute("shareData");
if (data == data2) { // ここがtrueになるとは限らない
System.out.println("same object");
}
またSessionオブジェクト自体の同一性も保証されません。
Copyright (C)2005-2009 Miura Computer Limited. ALL RIGHTS RESERVED.