我正在使用来自netty框架的标准 ObjectDecoder 和 ObjectEncoder 。
通过一个具体的 ObjectDecoder , ObjectDecoder 的实例序列化,反序列化各种类型的对象是否安全?
为什么默认 ObjectDecoder 构造函数被删除了?
合适的构造函数版本已将 ClassReslover 作为参数。 ClassResolver 构造函数是否意味着这些具体( ObjectDecoder , ObjectEncoder )对象只能对一种类型的对象进行反序列化/去序列化另外我必须在 ChannelPipeline 中切换这些( ObjectDecoder , ObjectDecoder )对象吗?
我正在编写服务器,它应该响应各种类型的请求,我想通过这种方式实现。
可能是一个标准的消息类,TYPE_REQUEST字段会更好吗?
答案 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序列化/反序列化任何内容。