序列化netty';这是完整的httprequest
我的Java项目中运行着一个netty服务器,正在侦听请求。Netty将请求在内部转换为序列化netty';这是完整的httprequest,netty,Netty,我的Java项目中运行着一个netty服务器,正在侦听请求。Netty将请求在内部转换为FullHttpRequest类型,然后再将其交给处理程序。现在在我的处理程序中,我正在尝试序列化,因为我必须将它推送到rabbitmq。但看起来它是不可序列化的: due java.io.NotSerializableException: io.netty.handler.codec.http.DefaultFullHttpRequest at org.apache.camel.impl.conve
FullHttpRequest
类型,然后再将其交给处理程序。现在在我的处理程序中,我正在尝试序列化,因为我必须将它推送到rabbitmq。但看起来它是不可序列化的:
due java.io.NotSerializableException: io.netty.handler.codec.http.DefaultFullHttpRequest
at org.apache.camel.impl.converter.BaseTypeConverterRegistry.createTypeConversionException(BaseTypeConverterRegistry.java:566)
at org.apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:174)
at org.apache.camel.impl.MessageSupport.getMandatoryBody(MessageSupport.java:99)
... 31 more
Caused by: org.apache.commons.lang3.SerializationException: java.io.NotSerializableException: io.netty.handler.codec.http.DefaultFullHttpRequest
at org.apache.commons.lang3.SerializationUtils.serialize(SerializationUtils.java:139)
at org.apache.commons.lang3.SerializationUtils.serialize(SerializationUtils.java:161)
at com.company.myproject.util.RequestToByteArrayConverter.convertTo(RequestToByteArrayConverter.java:28)
at org.apache.camel.impl.converter.BaseTypeConverterRegistry.doConvertTo(BaseTypeConverterRegistry.java:276)
at org.apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:165)
... 32 more
有两种方法可以解决这个问题
- 扩展FullHttpRequest/Response以实现可序列化。这是非常忙碌的,因为您可能会为相当多的类编写读/写解析
- 创建您自己的FullHttpRequest/Response的影子类,这些影子类从影子类复制有意义的位,并可序列化。然后编写自己的适配器
我个人采用影子法。我已经按照你在第2点中的建议做了。无论如何,谢谢:)