なぜ転送オブジェクトは、Serializableを実装する必要がありますか?
-
20-09-2019 - |
質問
私は盲目的にちょうど今まで本当になぜ求めず年間、この要件に従っていることを今日実現しました。今日は、十分である私がゼロから作成されたモデルオブジェクトを持つNotSerializableException渡って走ったと私は十分に実現します。
私は、これが原因で負荷分散されたサーバー間でのセッション・レプリケーションのだっ語ったが、私はSerializableを実装していないセッションスコープで他のオブジェクトを見てきました知っていました。これが本当の理由ですか?
解決
これは本当の理由です。 Webサーバやアプリケーションサーバは、実際にオブジェクトをシリアル化(またはそれが直列化可能であるが、現実的にそれを行うための唯一の方法は、実際にそれをシリアル化するためであることを確認)するかどうか、それは実際に実際には問題になる場合は、完全に依存します。
ほとんどのアプリケーションサーバーは、それについて厳格なものではないの(少なくとも)オプションがあります。あなたが実際に状態を共有し、負荷分散サーバーを使用しない場合は、問題なくそれを見ているかもしれません。
他のヒント
ために、彼らはワイヤ上に置くことができる形式にserialisableする必要が電線を介して転送されるのでます。
バイナリ、またはXML、JSON、またはsimillar枚
詳細はこちらあります... 任意のドメインオブジェクトは、直列化可能べきではありません?の
私は、コンセプトが求められているに似ていると思います なぜ固形食品は、消化のために飲み込まれる前にダウン噛んする必要があります。 しかし、もちろん、違いは消化の良いが、とにかく、デシリアライズにすることができないということです。
私はXDR符号化を行う日RPC(最近はONCのRPCと呼ばれる)を使用して覚えています なぜなら、コンピュータ・プラットフォーム/システムは、それぞれの形でそのデータを表します。例えば、 小さなエンディアン対ビッグエンディアンます。
しかし、JVMに関係なく、機械のビッグエンディアンなので、エンディアンが理由ではありません。
コンピュータメモリ内のデータ構造は、ポインタと連続したメモリブロックに座っていないことがあり、オブジェクトのすべての要素を有しています。あなたは私のthroオブジェクトを渡すときしかし、/別のシステムにO、あなたはそのオブジェクトのメモリ配分を渡すことはできません。
オブジェクトは、そうしないと、システムメモリの動的に変化する配列を複製したいことができないため、データベースに格納される前にシリアル化する必要があります。
ネットワーク上の我々のデータ表現層全てのビットストリームベースです。あなたが別のシステムからのデータを渡したいときしたがって、あなたはバイトでネットワークバイトのthroストリーミングすることができるものにメモリに代表される三次元データを変換する必要があります。実際には、少しずつ、そしてこれは、多くの場合、圧縮やセキュリティ暗号化のthro行きます。圧縮と暗号化ルーチンは、OO-構造盲目であり、ビットストリームが推定されます。ネットワークスイッチは、OO-構造ブラインドです。ネットワーク伝送は、偶数ビットは表示されません。ビットは、多くの場合、アナログ正弦波であり、次いで、変調された送信信号に符号化されます。これらのプロセスは、OO構造化データの多次元/階層スキーマでは動作しません。
私はあなたがオブジェクトレベルの難読化と暗号化を行うことができると思い、まだあなたはまだシステムが最初のストリームをcharにそれらを変換することによって、ビットストリームにそれらを変換できるようにする必要があります。
羊飼いは羊の群れを持っており、荒れた海の上にシングル羊橋のthroそれらをマーシャリングするときマーシャリングがあります。したがって、マーシャラーはマーシャルにあり、情報の羊の群れがブリッジのもう一方の端から出たときに、私たちは共役demarshallerによって、その階層スキーマに戻ってそれらを再構築することができるように、中に書かれた参照を持つシリアルスキーマへの私たちのオブジェクト。私たちのケースでは、私たちの羊は、彼らがケースでのいずれかをコピーを再送信することが可能であることを確認するためにちょうど橋のthroが、狭いと不安定巻線と各ターンでのネットワーク伝送装置は、整列化羊のコピーを格納地滑りthroの整列化されていません羊は、渓谷のthro下落している。