java - 在netty中反序列化各种对象

标签 java netty

我正在使用 netty 框架中的标准 ObjectDecoderObjectEncoder

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

  2. 为什么默认的ObjectDecoder构造函数被废弃?

  3. 构造函数的合适版本已将 ClassReslover 作为参数。 ClassResolver 构造函数是否意味着只有一种类型的对象可以通过这些具体的(ObjectDecoderObjectEncoder)对象进行反/序列化,并且要反/序列化另一个类型的对象,我必须在 ChannelPipeline 中切换这些(ObjectDecoderObjectDecoder)对象?

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

可能带有 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/

相关文章:

java - 为什么在这种情况下编译器不能限制返回类型

java - Netty 4 中的工作线程

java - netty 4 中的超时事件

java - ArrayList 中对象的 Getter

java - Netty发布后资源仍然泄漏

java - 为下载非常大的文件的 http 服务提供流接口(interface)

java - 无法为 Java 9 中自动生成的模块名称派生模块描述符?

用于运行应用程序的 Java 9 REPL

java - Controller 中缺少参数时如何自动返回405

java - 文本文件操作: Take data from text file and write a new text file with the data taken from the original file