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. > > > > > >
