Сегодня проведем тонкую грань между разными версиями Netty на примере запуска socket сервера. Ранее мы уже рассматривали запуск сервера на базе Netty 3.5. Сегодня рассмотрим, как этот процесс осуществляется в четвертой ветке Netty.
В качестве отправной точки также, как и ранее будем использовать проект, идущий с исходниками ввиде примера Echo сервера. Стоит сразу сказать, что если в версии 3.5 все исходники делились логически с помощью пакетов, то в новой версии исходники разбиты на модули и все примеры использования Netty находятся в отдельном модуле example
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
Как и в случае с 3ей версией все начинается с ServerBootstrap
- объекта-конфигуратора Netty сервера. Принцип конфигурирования теперь реализован ввиде некого Builder-объекта, где каждый метод-конфигуратор возвращает ссылку на builder до тех пор пока не вызовится метод-строитель. При этом инстанцирование объекта ServerBootstrap
отделено от его конфигурирования, т.к. есть только конструктор по-умолчанию (без параметров). Данный подход является более чистым, чем в третьей версии. Там при создании объекта ServerBootstrap
необходимо задать фабрику каналов, при этом задание PipelineFactory
вынесена в конфигурационный метод. Напомню, что запуск невозможен и без фабрики каналов и без фабрики pipeline'ов
. Таким образом есть некая неразбериха. В новом же подходе все объекты задаются на одном уровне, при этом в методе-строителе произведется проверка на корректность сконфигурированных объектов.