Thanks Michael for your response. I would agree on your approach and we will explore the implementation that way.
I thought I read somewhere that Mina supports Synchronized communications as well. I think it was at the serverside portal. I guess when Trustin said that, he probably meant that the synchronization could be met over a combination of a session.join() and closing a session in receiving a response from server. Thanks again for your reply. Michael Link wrote: > > Hi Pat, > > here a little explanation of the MINA mechanisms. When you close a > client-side connection the underlying socket connection is closed, too. > Therefore you will also lose all the session data that is stored on the > server. So it isn't the right way to close and re-open the session to > implement a request/reponse protocol. > > Basically MINA is asynchronous so the outgoing and incoming bytes are > independent in their socket stream. To implement request/response you must > do this by yourself. For my project I implemented such a simple protocol. > After the request is written to the session the calling thread enters a > wait-Loop based on a synchronized request object and the request object is > put into a hashmap where the key is a sequence number. After a response > arrives the sequence id is read from the response and the originating > request is looked up from the hashmap. Then the waiting thread is woken up > with requestObj.notify(). Quite simple in the whole but it works fine and > you can easily support parallel requests from different threads. > > Regards, > > Michael > > > Pat Chang - 1973 wrote: >> >> Dear Maarten, >> >> Firstly, thanks for your response. I hope you dont mind my basic >> questions. >> >> In our application we are sending a sequence of files one after the other >> often through a sequence of session.write() operations. Completion of one >> write() operation will then invoke the next operation to send the next >> sequence. So this has to be synchronous so that we identify the closure >> of the last write() before sending the next one. >> >> Now, yes, you are right, at the client thread is blocked until the >> session is closed. This works. >> >> But my doubts / questions are: >> >> Question 1: Does closing of session mean closing of actual connection >> pipe from client to server? So when I sent the next sequence, do I have >> to reconnect? If yes, then this may not be the optimal way of sending >> data, as we would need to reconnect every time we send the next set of >> sequences. >> >> Question 2: I use session at the server to store additional data such as >> user who has logged in and all the files that were transfered in the >> past. When we close the session at the client, and reconnect, will all >> this data saved in the server session be lost? >> >> A few "simple" code snippets on various aspects of Mina Wiki would help >> the new "learning" developers like us in quickly learning to use this >> great library. >> >> Thanks again in advance, >> Pat >> >> >> Maarten Bosteels-4 wrote: >>> >>> Hello Pat, >>> >>> On 9/4/07, Pat Chang - 1973 <[EMAIL PROTECTED]> wrote: >>>> >>>> >>>> Can someone please answer my simple question. Would be much >>>> appreciated. >>>> >>>> >>>> Pat Chang - 1973 wrote: >>>> > >>>> > Hi, >>>> > >>>> > We want to implement synchronous communication. >>>> > >>>> > After session.write(ProtocolObj); and session.join();, the thread >>>> waits >>>> > until session is closed. >>> >>> >>> I guess you session.write(obj).join() since IoSession itself has no >>> join() >>> method ? >>> The thread will wait until the message is written, not until session is >>> closed. >>> >>>> >>>> > I would prefer the session to be open, because on the server side, I >>>> am >>>> > maintaining the data in the server session to accept further data. >>>> > Secondly, I think it may not be the optimal way to close and open >>>> > connections everytime either. >>> >>> >>> session stays open after writing to it, until you close it (unless >>> remote >>> peer closes it) >>> >>> Maarten >>> >>>> >>>> > Is there a way to achieve synchronized communication which does not >>>> > involve reconnecting for every request so that we can reuse the data >>>> saved >>>> > int he server session as well? >>>> > >>>> > Regards >>> >>> >>> >>> >>> >>>> Pat >>>> > >>>> >>>> -- >>>> View this message in context: >>>> http://www.nabble.com/Synchronous-communication-without-dropping-connection-tf4375713s16868.html#a12479878 >>>> Sent from the Apache MINA Support Forum mailing list archive at >>>> Nabble.com >>>> . >>>> >>>> >>> >>> >> >> > > -- View this message in context: http://www.nabble.com/Synchronous-communication-without-dropping-connection-tf4375713s16868.html#a12482542 Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.
