反序列化netty中的各种对象

时间:2011-12-24 23:34:30

标签: java netty

我正在使用来自netty框架的标准 ObjectDecoder ObjectEncoder

  1. 通过一个具体的 ObjectDecoder ObjectDecoder 的实例序列化,反序列化各种类型的对象是否安全?

  2. 为什么默认 ObjectDecoder 构造函数被删除了?

  3. 合适的构造函数版本已将 ClassReslover 作为参数。 ClassResolver 构造函数是否意味着这些具体( ObjectDecoder ObjectEncoder )对象只能对一种类型的对象进行反序列化/去序列化另外我必须在 ChannelPipeline 中切换这些( ObjectDecoder ObjectDecoder )对象吗?

  4. 我正在编写服务器,它应该响应各种类型的请求,我想通过这种方式实现。

    可能是一个标准的消息类,TYPE_REQUEST字段会更好吗?

1 个答案:

答案 0 :(得分:1)

  

通过具体的ObjectDecoder,ObjectDecoder的一个实例序列化,反序列化各种类型的对象是否安全?

是。 ObjectDecoder通常没有状态(除了类加载器,它可能不会改变) - 它会在你调用decode()时创建它需要的任何东西。类加载器也是可选的 - 你可以传递null,当你去解码时,它会使用任何类加载器(在我的情况下是默认的加载器)。

  

为什么默认的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另一个我必须切换   ChannelPipeline中的这些(ObjectDecoder,ObjectDecoder)对象?

完全没有。 ClassLoader arg是你需要一些自定义的类加载器,因为默认的类加载器是不合适的。只要在另一端使用适当的ObjectEncoder,就可以使用一个ObjectDecoder序列化/反序列化任何内容。