2011-12-24 8 views
1

私は標準ObjectDecoderObjectEncoderからnettyフレームワークを使用しています。nettyのさまざまなオブジェクトを逆シリアル化します。

  1. がシリアライズさにそれが安全である、ObjectDecoderコンクリートの一つだけ、ObjectDecoderを経由してさまざまなタイプのオブジェクトを逆シリアル化しますか?

  2. なぜデフォルトのObjectDecoderのコンストラクタが欠損しているのですか?

  3. コンストラクタの適切なバージョンは、ClassResloverを引数として取得しています。 はClassResolverコンストラクタは、オブジェクトの1種類のみ(ObjectDecoderは、ObjectEncoder)オブジェクトと私はこれらの(ObjectDecoderObjectDecoderを切り替えて別のものをシリアライズ/デするために、これらのコンクリートによってシリアライズ/デすることができることを意味してい)のオブジェクトChannelPipeline

私は様々なタイプのリクエストに対するレスポンスが必要であり、この方法で実装したいサーバーを書いています。

TYPE_REQUESTフィールドを持つ1つの標準メッセージクラスが良いでしょうか?

答えて

1

具体的なObjectDecoder、ObjectDecoderの1つのインスタンスを介して、さまざまなタイプのオブジェクトをシリアル化してシリアル化するのは安全ですか?

はい。 ObjectDecoderには一般的にstate(クラスローダー以外は変更されません)がありません。これはdecode()を呼び出すときに必要なものを作成します。クラスローダーはオプションでもあります。ヌルを渡すことができ、デコードに行くときにクラスローダー(私の場合はデフォルトのもの)がコンテキスト内にあれば何でも使用します。

なぜデフォルトのObjectDecoderコンストラクタが欠損しているのですか?

これはわかりません。私はNetty 3.2.4を使用しており、推奨されていません。バージョン情報: * @version $ Rev:2279 $、$ Date:2010-05-13 23:13:07 +0900(木曜日、2010年5月13日)$

最新のバージョンを使用している場合javadocを見て、あなたに伝えるべきです。

適切なバージョンのコンストラクタは、引数としてClassResloverを持っています。 ClassResolverコンストラクタは、これらのコンクリート(ObjectDecoder、 ObjectEncoder)オブジェクトでde/serializeでき、別のものをde/serializeするために、 これらの(ObjectDecoder、ObjectDecoder)オブジェクトをChannelPipelineに切り替える必要があることを暗示していますか?

全くありません。 ClassLoader argは、デフォルトのクラスローダーが不十分なために必要なカスタムクラスローダーがあるかどうかです。もう一方の側で適切なObjectEncoderを使用する限り、1つのObjectDecoderで何かをシリアル化/逆シリアル化できます。

+0

ありがとうございました。 3.2.7 javadocには、デフォルトのObjectDecoderコンストラクタがdepracatedされている理由は何もありませんが、もう重要ではありません。 –

関連する問題