Как правильно отправлять данные через MINA? - PullRequest
1 голос
/ 08 января 2010

Я пытаюсь начать работу с MINA, и все примеры, похоже, содержат данные, записанные в сеанс, вместо того, чтобы использовать метод, который может записывать один и тот же тип данных снова и снова.

Я пытаюсь использовать сообщения от org.apache.mina.filter.codec.demux.MessageEncoder / MessageDecoder до encode / decode, которые позволят мне всегда выполнять задачу в центральном месте, вместо того, чтобы делать это встроенным в коде, как в примерах.

Допустим, у меня есть ProtocolCodecFactory (который расширяет DemuxingProtocolCodecFactory), который имеет LoginRequestEncoder (который реализует MessageEncoder<LoginRequest>, и был добавлен с помощью фабричного addMessageEncoder метода). Означает ли это, что вместо прямого вызова session.write() с данными имени пользователя / пароля я должен вместо этого сделать что-то подобное?

LoginRequest request = new LoginRequest(username, password);
new ProtocolCodecFactory()
    .getEncoder(session)
    .encode(session, request, someProtocolEncoderOutput);

Я не собираюсь лгать ... Кажется, MINA должна упростить сетевой процесс, и я уверен, что это произойдет, когда я справлюсь с этим, но сейчас я полностью сбит с толку.

1 Ответ

2 голосов
/ 25 января 2010

Оказывается, вы можете просто отправить запрос через IoSession.write () . Вот простой пример, основанный на моем первоначальном вопросе:

LoginRequest request = new LoginRequest(username, password);
session.write(request);
...