2011-09-12 14 views
6

可能性の重複:
Why does HttpServlet implement Serializable?なぜjavaのHttpServletがシリアライザブルを実装していますか?

この質問は突然、内部の議論で数日前に上がってきた私たちは、そのための任意の適切な答えを見つけるように見えることはありません。誰かが私を正しい方向に向けることができますか?

質問:

1)なぜJavaのimplements serializableHttpServletのですか?私は同じ理由で論理的な理由がないように見える。

2)私はAPIドキュメントを見てこれを理解しようとしていると今

public abstract class HttpServlet extends GenericServlet 
implements Serializable 

興味深いいくつかのことを発見している間は、どのような関心のあることGenericServletSerializableを拡張することです。そのため、親クラスと子クラスの両方がシリアライズ可能です。それは反パターンではありませんか?

+0

2番目の質問についてのご意見はありますか? –

答えて

7

1)javaのhttpservletがシリアライザブルを実装するのはなぜですか?私は 同じものの論理的な理由を見つけることはありません。

VM間クラスタリングとシリアル化をサポートするために、不動態化など

+0

パッシベーションとは何ですか?この言葉とGoogleが酸化物に関する何かを聞いたことはありません:( –

+1

@ ganguly.sarthakおそらくあなたのグーグルスキルに取り組む必要があります:http://www.google.ie/search?sourceid=chrome&ie=UTF-8&q=passivation+servlet :-) –

+0

しかし、親クラス 'GenericServlet'がSerializableならば、' HttpServlet' Serializableを再度マークするのはなぜですか? – Sid

1

もう一つの理由は、シャットダウン時にTomcatなどのWebコンテナは、いくつかのフックを呼び出すことです。これらのフックは、hdd上のアプリケーション/サーブレットの状態を保持しているため、Webコンテナが再起動されると、アプリケーションは状態を失うことはありません。

+1

サーブレットはスレッドセーフであるか、少なくとも会話状態を持たないものでなければなりません。だから、必要は何ですか? –

+0

@AmirPashazadehサーブレットは、各ユーザーに対して*ロット*の会話状態を持つことができます。これは、「セッション」オブジェクトへの全体のポイントであり、要求/応答サイクル間でその状態を追跡する。サーブレットコンテナが実行されている間、その状態はメモリ内に存在します。コンテナが終了すると、Poof !​​,メモリがクリアされ、セッションの状態は消えます。この解答のアイデアは、サーブレットコンテナが、そのセッション状態をシリアライズを介してストレージに保存して状態データを「脱水」するためのオプション機能を提供するものです。コンテナを再起動すると、セッションは再開され、ユーザは中断したところで作業を続行できます。 –

関連する問題