我正在使用 netty 框架中的标准 ObjectDecoder 和 ObjectEncoder。
仅通过具体 ObjectDecoder、ObjectDecoder 的一个实例序列化、反序列化各种类型的对象是否安全?
为什么默认的ObjectDecoder构造函数被废弃?
构造函数的合适版本已将 ClassReslover 作为参数。 ClassResolver 构造函数是否意味着只有一种类型的对象可以通过这些具体的(ObjectDecoder、ObjectEncoder)对象进行反/序列化,并且要反/序列化另一个类型的对象,我必须在 ChannelPipeline 中切换这些(ObjectDecoder、ObjectDecoder)对象?
我正在编写应该响应各种类型的请求的服务器,我想通过这种方式实现。
可能带有 TYPE_REQUEST 字段的标准消息类会更好吗?
最佳答案
Is it safe to serialized, deserialize objects of various types via only one instance of concrete ObjectDecoder, ObjectDecoder?
是的。 ObjectDecoder 通常没有状态(类加载器除外,它可能不会改变)——当您调用decode() 时,它会创建它需要的任何其他内容。类加载器也是可选的 - 您可以传递 null,当您进行解码时,它将使用上下文中的任何类加载器(在我的例子中是默认的)。
Why the default ObjectDecoder constructor is depracated?
我对此不太确定。我正在使用 Netty 3.2.4,它并未被弃用。版本信息是: * @version $Rev:2279 $,$Date:2010-05-13 23:13:07 +0900(星期四,2010 年 5 月 13 日)$
如果您使用的是更新版本,请查看 javadoc,它应该会告诉您。
Suitable version of constructor has got ClassReslover as a argument. Does ClassResolver constructor imply that only one type of objects can be de/serialized by these concrete (ObjectDecoder, ObjectEncoder) objects and to de/serialize another i have to switch these(ObjectDecoder, ObjectDecoder) Objects in ChannelPipeline?
一点也不。 ClassLoader arg 是指如果您需要一些自定义类加载器,因为默认类加载器不够用。只要您在另一端使用适当的 ObjectEncoder,您就可以使用一个 ObjectDecoder 序列化/反序列化任何内容。
关于java - 在netty中反序列化各种对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8627465/