Я обновляюсь с Netty 4.1.36.Final до 4.1.37.Final.Мне известно, что я работаю с нестабильными API-интерфейсами HTTP / 2 и что изменения и устаревания с микро-версии на микро-версию являются частыми и разрешенными.У меня нет проблем с этим.
Javadoc для Http2MultiplexCodec
теперь читает, частично:
Устаревший
используйте Http2FrameCodecBuilder
вместе с Http2MultiplexHandler
.
Поэтому я решил исправить это в своей кодовой базе.
Мой предыдущий рецепт в сценарии обновления выглядел примерно так(myHandler
может обрабатывать сообщения типов HttpRequest
, HttpContent
и HTTP / 2, т. Е. Счастливы есть сообщения HTTP и HTTP / 2):
final HttpServerUpgradeHandler httpServerUpgradeHandler =
new HttpServerUpgradeHandler(httpServerCodec,
protocol -> AsciiString.contentEquals(Http2CodecUtil.HTTP_UPGRADE_PROTOCOL_NAME, protocol) ?
new Http2ServerUpgradeCodec(Http2MultiplexCodecBuilder.forServer(myHandler).build()) :
null,
maxIncomingContentLength);
final CleartextHttp2ServerUpgradeHandler cleartextHttp2ServerUpgradeHandler =
new CleartextHttp2ServerUpgradeHandler(httpServerCodec,
httpServerUpgradeHandler,
myHandler);
По какой-то причине явозникают проблемы с пониманием того, каким должен быть правильный рецепт замены.
В настоящее время у меня есть:
final HttpServerUpgradeHandler httpServerUpgradeHandler =
new HttpServerUpgradeHandler(httpServerCodec,
protocolName -> {
final UpgradeCodec returnValue;
if (AsciiString.contentEquals(Http2CodecUtil.HTTP_UPGRADE_PROTOCOL_NAME, protocolName)) {
final Http2FrameCodec http2FrameCodec = Http2FrameCodecBuilder.forServer().build();
returnValue = new Http2ServerUpgradeCodec(http2FrameCodec, myHandler);
} else {
returnValue = null;
}
return returnValue;
},
maxIncomingContentLength);
final CleartextHttp2ServerUpgradeHandler cleartextHttp2ServerUpgradeHandler =
new CleartextHttp2ServerUpgradeHandler(httpServerCodec,
httpServerUpgradeHandler,
myHandler);
channelPipeline.addLast(cleartextHttp2ServerUpgradeHandler);
Я вижу, что обновление происходит, но myHandler
, похоже, не
Я знаю, что где-то здесь мне нужно также включить Http2MultiplexHandler
, но я, честно говоря, не уверен, где на земле его добавить.Я что-то упускаю из виду?
(вставка Http2MultiplexHandler
в соответствии с инструкциями Netty вики приводит к NullPointerException
в коде Netty.)