我正在尝试使用 MINA 2.0 RC1 在基于 demux 的客户端应用程序中执行同步写入/读取,但它似乎卡住了。这是我的代码:
public boolean login(final String username, final String password) {
// block inbound messages
session.getConfig().setUseReadOperation(true);
// send the login request
final LoginRequest loginRequest = new LoginRequest(username, password);
final WriteFuture writeFuture = session.write(loginRequest);
writeFuture.awaitUninterruptibly();
if (writeFuture.getException() != null) {
session.getConfig().setUseReadOperation(false);
return false;
}
// retrieve the login response
final ReadFuture readFuture = session.read();
readFuture.awaitUninterruptibly();
if (readFuture.getException() != null) {
session.getConfig().setUseReadOperation(false);
return false;
}
// stop blocking inbound messages
session.getConfig().setUseReadOperation(false);
// determine if the login info provided was valid
final LoginResponse loginResponse = (LoginResponse)readFuture.getMessage();
return loginResponse.getSuccess();
}
我可以在服务器端看到 LoginRequest 对象被检索,并发送了 LoginResponse 消息。在客户端,DemuxingProtocolCodecFactory
接收响应,但在进行一些日志记录后,我可以看到客户端卡在对readFuture.awaitUninterruptibly()
.
我一生都无法根据我自己的代码弄清楚为什么它会卡在这里。我在会话配置上正确地将读取操作设置为 true,这意味着应该阻止消息。但是,当我尝试同步读取响应消息时,消息似乎不再存在。
关于为什么这对我不起作用的任何线索?