2017-01-18 10 views
2

私はfortify Webアプリケーションを使用していますが、addToSession()メソッドには、HttpSession属性として直列化不可能なオブジェクトが格納されているため、アプリケーションの信頼性が損なわれる可能性があります。シリアル化できないオブジェクトをHttpSession属性として保存するのは良いですか?

public class DataGlob { 
    String globName; 
    String globValue; 

    public void addToSession(HttpSession session) { 
    session.setAttribute("glob", this); 
    } 
} 

です。以下のことをお勧めします。

public class DataGlob implements java.io.Serializable { 
    String globName; 
    String globValue; 

    public void addToSession(HttpSession session) { 
    session.setAttribute("glob", this); 
    } 
} 

私には推奨されているコード変更が必要ですか、それとも変更なしで有効ですか?

答えて

1

セッションに格納するすべての属性は直列化可能であることが推奨されます。必須ではありませんが、将来的には有用かもしれません。

フェイルオーバをサポートするために、アプリケーションサーバはセッションデータをディスクに保存したり、ネットワークを介して転送して、クラスタ内の別のノードがセッションのサービスを継続できるようにします。これをサポートするには、セッションに格納されているすべてのデータをシリアライズ可能にする必要があります。

0

HttpSessionコンテンツをシリアル化して、セッションをディスクに保存したり、セッションをクラスタ内の別のノードに転送したりできるようにする必要があります。
したがって、シリアライズの後の問題を避けるために、クラスをシリアライズ可能にする方が良いです。

+1

怠惰なプログラマがシリアル化可能なセッションオブジェクトを維持していないという結果に対処しなければならなかったので、私はこの答えに完全に同意します。ちょうどそれをやって、自分や誰か他の誰かに後で痛みを救う –

関連する問題