2012-04-12 12 views
1

Ich möchte eine Reihe von ganzen Zahlen über einen Netty-Kanal streamen. Gerade jetzt, in meinem Code channel.write(Integer.valueOf(val), bekomme ich den Fehler java.lang.IllegalArgumentException: unsupported message type: class java.lang.Integer was ich verstehe, weil ich keine Integer-Encoder/Decoder als Handler in der Pipeline habe. Ist das richtig? Muss ich meinen eigenen Integer-Decoder schreiben oder gibt es einen zur Verfügung? Einige Hinweise zu diesem Thema werden sehr hilfreich sein.Integer-Encoder-Decoder für Netty

Antwort

1

Yup, Ihr Verständnis ist richtig. Ohne eine entsprechende FrameEncoder in Ihrer Pipeline wird Netty seine Hände werfen und sagen, dass es nicht weiß, wie man mit einem Integer umzugehen. Wenn Sie eine Standardkomponente hinzufügen möchten, können Sie eine ObjectEncoder und ObjectDecoder zu Ihrer Pipeline hinzufügen. Andernfalls sollten Sie Ihren eigenen Frame-Encoder und Decoder implementieren.

2

Ja, das ist der Fall ... Sie können es auch einfach in einen ChannelBuffer schreiben und dann den ChannelBuffer in den Channel schreiben.

Etwas wie:

ChannelBuffer buf = ChannelBuffers.buffer(4); 
buf.writeInt(Integer.valueOf(val)); 
channel.write(buf);