2011-12-24 77 views
1

我正在使用標準的ObjectDecoder來自netty framework的ObjectEncoder反序列化netty中的各種對象

  1. 是它僅通過一個具體的ObjectDecoder例如,ObjectDecoder安全各種類型的序列化,反序列化對象?

  2. 爲什麼默認的ObjectDecoder構造函數是否被描述?

  3. 構造函數的合適版本已獲得ClassReslover作爲參數。 是否ClassResolver構造意味着只有一種類型的對象可以被DE /受這些具體序列化(ObjectDecoderObjectEncoder)對象和脫/串行化另一個我必須切換這些(ObjectDecoderObjectDecoder中的對象ChannelPipeline

我寫的服務器應該對各種類型的請求做出響應,我想用這種方式實現。

可能是一個帶有TYPE_REQUEST字段的標準消息類會更好嗎?

回答

1

通過只有一個具體的ObjectDecoder,ObjectDecoder實例序列化,反序列化各種類型的對象是否安全?

是的。 ObjectDecoder通常不具有狀態(除了類加載器,它可能不會改變) - 當您調用decode()時,它會創建其他任何需要的東西。類加載器也是可選的 - 你可以傳遞null,並且當你去解碼時它會使用任何類加載器(在我的情況下是默認的)。

爲什麼默認的ObjectDecoder構造函數是被描述的?

我對此不確定。我使用的是Netty 3.2.4,不推薦使用。版本信息是: * @version $ Rev:2279 $,$ Date:2010-05-13 23:13:07 +0900(Thu,13 May 2010)$

如果您使用的是較新版本,看看javadoc,它應該告訴你。

適當版本的構造函數已將ClassReslover作爲參數。 ClassResolver構造函數是否意味着只有一種類型的 對象可以被這些具體(ObjectDecoder, ObjectEncoder)對象取代/序列化並解除/序列化另一個我必須在ChannelPipeline中切換 這些(ObjectDecoder,ObjectDecoder)對象?

根本不是。 ClassLoader參數是如果你有一些需要的自定義類加載器,因爲默認的類是不夠的。只要在另一端使用適當的ObjectEncoder,就可以用一個ObjectDecoder序列化或反序列化任何東西。

+0

謝謝大家。 netty-3.2.7 javadoc中沒有任何關於爲什麼默認的ObjectDecoder構造函數具有描述性,但它不再重要。 – 2011-12-26 16:34:37