Netty 在getPipeline()方法中配置处理程序的正确方法

Netty 在getPipeline()方法中配置处理程序的正确方法,netty,Netty,有人能建议在getPipeline()方法中配置处理程序的最佳/正确方法吗。 当客户端向服务器发送消息时,它由自定义对象组成,其中包含服务器所需的数据。 我已按如下所示配置了处理程序: public ChannelPipeline getPipeline() throws Exception { ChannelPipeline pipeline = pipeline(); SSLEngine engine = SecureSslContextFactory.getServerContext()

有人能建议在getPipeline()方法中配置处理程序的最佳/正确方法吗。 当客户端向服务器发送消息时,它由自定义对象组成,其中包含服务器所需的数据。 我已按如下所示配置了处理程序:

public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline pipeline = pipeline();

SSLEngine engine = SecureSslContextFactory.getServerContext().createSSLEngine();
engine.setUseClientMode(false);

pipeline.addLast("ssl", new SslHandler(engine));

pipeline.addLast("decoder", new ObjectDecoder());
pipeline.addLast("encoder", new ObjectEncoder());

pipeline.addLast("pipelineExecutor", new ExecutionHandler(pipelineExecutor));

// and then business logic.
pipeline.addLast("handler", new SecureServerHandler());

return pipeline;
}
当我使用Netty 3.2.7 Final进行编译时,我得到以下警告:

警告(78,33):org.jboss.netty.handler.codec.serialization.ObjectDecoder()中的ObjectDecoder()已被弃用

当客户端发送消息时,我收到以下运行时错误:

警告:来自下游的意外异常。
java.io.InvalidClassException:无法读取类描述符
位于java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1567)
位于java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
位于java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
在java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
位于java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
位于org.jboss.netty.handler.codec.serialization.ObjectDecoder.decode(ObjectDecoder.java:129)
位于org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:282)
位于org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:216)
在org.jboss.netty.channel.Channels.fireMessageReceived上(Channels.java:302)
在org.jboss.netty.handler.codec.frame.FrameDecoder.UnfolandFireMessageReceived(FrameDecoder.java:321)
位于org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:299)
位于org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:216)
在org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:274)
在org.jboss.netty.channel.Channels.fireMessageReceived上(Channels.java:261)
位于org.jboss.netty.channel.socket.nio.niower.read(niower.java:351)
位于org.jboss.netty.channel.socket.nio.niower.processSelectedKeys(niower.java:282)
位于org.jboss.netty.channel.socket.nio.niower.run(niower.java:202)
位于java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
运行(Thread.java:619)


您的问题可能与以下问题相同:

尝试将ObjectDecoder实例化为新的ObjectDecoder(classResolver.weakCacheConCurrentResolver(null))以消除警告

如果类未加载,请尝试指定类加载器。看


希望这有帮助。

我在代码中看到了它,但在API(javadocs)中没有看到它。。。这到底意味着什么?