Serializable は、分散環境でセッションの属性のマーカー インターフェイスとして使用されます。
SRV.7.7.2 分散環境 (JSR-154)
配布可能とマークされたアプリケーション内では、セッションの一部であるすべてのリクエストは、一度に 1 つの Java 仮想マシン (「JVM」) によって処理される必要があります。コンテナーは、setAttribute または putValue メソッドを適切に使用して、HttpSession クラスのインスタンスに配置されたすべてのオブジェクトを処理できる必要があります。これらの条件を満たすために、次の制限が課されます。
- コンテナーは、Serializable インターフェイスを実装するオブジェクトを受け入れる必要があります。
- セッションの移行は、コンテナー固有の機能によって処理されます。
分散サーブレット コンテナは、オブジェクトを格納するセッションの移行に必要なメカニズムをコンテナがサポートできないオブジェクトに対して IllegalArgumentException をスローする必要があります。
分散サーブレット コンテナは、 Serializable を実装するオブジェクトの移行に必要なメカニズムをサポートする必要があり
ます。
(...)
コンテナー プロバイダーは、分散システムの任意のアクティブなノードからシステムの別のノードにセッション オブジェクトとそのコンテンツを移動する機能を持つことで、負荷分散やフェールオーバーなどのサービス機能のスケーラビリティと品質を確保できます。分散コンテナがサービス品質機能を提供するためにセッションを永続化または移行する場合、ネイティブ JVM シリアライゼーション メカニズムを使用して HttpSession とその属性をシリアライズすることに制限されません。開発者がセッション属性を実装する場合、コンテナーがセッション属性で readObject および writeObject メソッドを呼び出すことは保証されていませんが、それらの属性の Serializable クロージャーが保持されることは保証されています。