2010-01-07 63 views
1

我試圖開始使用MINA,並且所有示例似乎都有數據寫入會話,而不是使用可以反覆寫入相同類型數據的方法。如何通過MINA正確發送數據?

我試圖利用org.apache.mina.filter.codec.demux.MessageEncoder/MessageDecoderencode/decode消息,這將讓我總是在一箇中心位置執行任務,而不是在代碼中內嵌做的,喜歡做的例子。

比方說,我有一個ProtocolCodecFactory(延伸DemuxingProtocolCodecFactory)具有LoginRequestEncoder(實現MessageEncoder<LoginRequest>,並通過工廠的addMessageEncoder方法加入)。這是否意味着,而不是直接調用session.write()與用戶名/密碼數據,我應該做這樣的事情?

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

我不會撒謊...... MINA好像它應該簡化了網絡的過程,我相信它會在我上有一個手柄,但我徹底糊塗權現在。

回答

2

事實證明,您可以簡單地通過IoSession.write()發送請求。這裏是一個簡單的例子,基於我原來的問題:

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