Ich benutze netty v4.1.9final und versuche, eine Nachricht vom Client zum Server zu senden. Ich habe versucht Einstellung der Kanal Client Initialisierer mit dem Handler auf, als auf der Clientseite folgt:netty Pipelineauftrag für ausgehende Nachricht
final Bootstrap bootstrap = BootstrapGenerator.generate();
bootstrap.handler(new XmlClientInitializer());
XMLClientInitializer
public class XmlClientInitializer extends ChannelInitializer<SocketChannel> {
@Override
public void initChannel(SocketChannel ch) throws Exception {
final ChannelPipeline pipeline = ch.pipeline();
pipeline.addLast("fileEncoder", new FileEncoder());
pipeline.addLast("handler", new XmlSenderHandler());
}
}
Fileencoder
public class FileEncoder extends MessageToByteEncoder<String> {
XmlSenderHandler
public class XmlSenderHandler extends ChannelOutboundHandlerAdapter {
private static final Logger log = LogManager.getLogger(XmlSenderHandler.class.getName());
private static ChannelHandlerContext ctx;
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) {
log.info("attempting to write messages to server {}", msg.toString());
ctx.write(msg, promise);
}
@Override
@SuppressWarnings("FutureReturnValueIgnored")
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
super.exceptionCaught(ctx, cause);
}
}
Obwohl der FileEncoder zuerst in der Pipeline definiert ist, wird er nach dem XML-Handler aufgerufen (was ich nicht suche). Liegt das daran, dass der FileEncoder MessageToByteEncoder erweitert oder konfiguriere ich den Kanal falsch?
danke - das war es –