私は今日、理由を実際に尋ねることなく、何年もの間この要件を盲目的に守ってきたことに気づきました。今日、私は最初から作成したモデルオブジェクトでNotSerializableExceptionに遭遇し、十分であることに気づきました。
これは負荷分散サーバー間のセッションレプリケーションが原因であると言われましたが、Serializableを実装していない他のオブジェクトをセッションスコープで見たことがあります。これが本当の理由ですか?
私は今日、理由を実際に尋ねることなく、何年もの間この要件を盲目的に守ってきたことに気づきました。今日、私は最初から作成したモデルオブジェクトでNotSerializableExceptionに遭遇し、十分であることに気づきました。
これは負荷分散サーバー間のセッションレプリケーションが原因であると言われましたが、Serializableを実装していない他のオブジェクトをセッションスコープで見たことがあります。これが本当の理由ですか?
なぜなら、ワイヤーを介して転送されるためには、ワイヤーに配置できるフォームにシリアル化できる必要があるからです。
バイナリ、またはxml、Json、またはsimillarのように
詳細はここにあります...シリアル化できないドメインオブジェクトは必要ですか?
それが本当の理由です。実際に問題になるかどうかは、Webサーバーまたはアプリケーションサーバーが実際にオブジェクトをシリアル化するかどうかに完全に依存します(または、オブジェクトがシリアル化可能であることを検証しますが、現実的には、実際にシリアル化するしかありません)。
ほとんどのアプリケーションサーバーには、(少なくとも)厳密ではないという選択肢があります。実際に状態を共有する負荷分散サーバーを使用しない場合は、問題なく表示されている可能性があります。
コンセプトは、消化のために飲み込む前に固形食品を噛む必要があるのはなぜかという質問に似ていると思います。しかしもちろん、違いは、消化された善はとにかく逆シリアル化することができないということです。
コンピューターのプラットフォーム/システムがそれぞれの形式でデータを表すため、XDRエンコードを実行するSun RPC(現在はONC RPCと呼ばれています)を使用したことを覚えています。たとえば、ビッグエンディアンとスモールエンディアン。
ただし、JVMは、マシンに関係なくビッグエンディアンであるため、エンディアンが理由になることはありません。
コンピュータメモリのデータ構造にはポインタがあり、オブジェクトのすべての要素が連続したメモリブロックに配置されていない可能性があります。ただし、オブジェクトthro i / oを別のシステムに渡す場合、そのオブジェクトのメモリ分散を渡すことはできません。
動的に変化するシステムメモリの配置を複製したくない、または複製したくないため、オブジェクトはデータベースに格納する前にシリアル化する必要があります。
ネットワーク上のデータ表現レイヤーはすべてビットストリームベースです。したがって、あるシステムから別のシステムにデータを渡したい場合は、メモリに表示されているディメンションデータを、ネットワークを介してバイト単位でストリーミングできるデータに変換する必要があります。実際には、少しずつ、そしてそれはしばしば圧縮とセキュリティ暗号化に行きます。圧縮および暗号化ルーチンはoo-structure-blindであり、ビットストリームが想定されています。ネットワークスイッチはoo-structure-blindです。ネットワーク伝送はビットさえ見ません。ビットは、多くの場合アナログ正弦波である伝送信号にエンコードされてから変調されます。これらのプロセスは、oo構造化データの多次元/階層スキーマでは機能しません。
オブジェクトレベルの難読化と暗号化を実行できると思いますが、それでも、最初に文字ストリームに変換することで、システムがそれらをビットストリームに変換できるようにする必要があります。
マーシャリングとは、羊飼いが羊の群れを持っていて、問題のある海域に架かる単一の羊の橋を介して羊飼いをマーシャリングすることです。したがって、マーシャラーは、参照が書き込まれたシリアルスキーマにオブジェクトをマーシャリングする必要があります。これにより、情報羊の群れが橋の反対側から出現したときに、共役デマーシャラーによってオブジェクトを階層スキーマに再構築できます。 。私たちの場合、私たちの羊は単なる橋ではなく、狭くて不安定な曲がりくねった地滑りでマーシャリングされています。各ターンのネットワーク伝送装置は、マーシャルされた羊のコピーを保存して、羊は峡谷に落ちました。