Thanks for the reply. How long is long? When should I use IoHandler and when StreamIoHandler? Zohar.
On 3/17/06, Maarten Bosteels <[EMAIL PROTECTED]> wrote: > > Why do you think you need a StreamIoHandler ? > Are the messages relatively short or rather long ? > Is there a big lag between receiving the beginning of a message > and receiving the end of the message ? > > I have never tried StreamIoHandler, I guess to get started it's easier > to just implement a ProtocolDecoder/ProtocolEncoder and let MINA > handle the threading stuff. > > But of course it should be possible to handle your use case with a > StreamIoHandler. > > Maarten > > On 3/17/06, cheng wei <[EMAIL PROTECTED]> wrote: > > hello Zohar Amir, > > (method 1).You have said "The message are built as a PDU wrapping an > XML > > message".you may create an simple example to show where the problem will > > happens,and show its critical part of code here. > > (method 2).With the simple example,you can write same test unit and > log > > message.They will help you to solve some problems.(if you don't know how > to > > write test unit and log message,i have an simple example.If you > need,send > > email to me.) > > > > 2006/3/17, Zohar Amir <[EMAIL PROTECTED]>: > > > > > > Hello list, > > > > > > I've posted here a request for help a few days ago but only got 1 > reply, > > > which did not get me very far. I'll try explaining my problem again, > in > > > the > > > hope of getting some more help. > > > > > > I need to put up a server that handles client requests. Each client > > > connects > > > via TCP to the server and then they exchange messages. The messages > are > > > built as a PDU wrapping an XML message. > > > > > > Looking at the examples I got with MINA, it seems that the best option > is > > > using a StreamIoHandler (decision 1). When doing that I ran into some > > > problems: > > > > > > The processStreamIo method starts a new thread to handle the incoming > > > data. > > > This thread reads the input stream and decodes the incoming messages. > The > > > first problem was stopping this thread when the sessionClosed method > is > > > invoked, because the read methods are blocking. I solved this by > closing > > > the > > > session's InputStream when the sessionClosed method is invoked, thus > > > causing > > > the reading thread to throw an IOException and then terminating the > > > readingloop (decision 2). This seemed to work OK, until I had a client > > > that sent me > > > a single message and then closed the TCP connection quickly (hit and > run). > > > This caused my former mechanism to close the InputStream before the > new > > > thread had a chance to read the message and decode it. > > > > > > OK, I hope all this clear. > > > > > > Can anyone tell me what I did wrong and how I should solve this? > > > > > > Thanks, > > > > > > Zohar. > > > > > > > > > > >
