does session that entered idle state can write and read mesasage later?

On Fri, Jul 25, 2008 at 1:17 PM, Zlatko Josic <[EMAIL PROTECTED]>wrote:

> Hi,
>
> tnis is snippet code of client
>
>     for (int i = 0; i < stepNumber; i++) {
>             ClientRequest request = new ClientRequest();
>             request.setParameter("command", "addEVEronet");
>             request.setParameter("Amt", "10");
>             request.setParameter("phoneNumber", "0642361393");
>             request.setParameter("serN", "000001");
>             // slanje zahteva.
>
>             // kreiranje soketa.
>             Socket socket = null;
>             BufferedReader br = null;
>             PrintWriter pw = null;
>             Map<String, Object> result = null;
>             try {
>                 socket = new Socket(host, port);
>                 br = new BufferedReader(new
> InputStreamReader(socket.getInputStream()));
>                 pw = new PrintWriter(socket.getOutputStream());
>                 //citanje trenutnog vremena.
>                 result = readTransformator.transform(br.readLine());
>                 log.info(CollectionsUtil.formatMap(result));
>
>                 String currTime = (String)result.get("currT");
>                 //kriptovana vrednost.
>                 String crypt = Coder.decode(currTime);
>                 request.setParameter("orN", crypt);
>                 pw.println(writeTransformator
>                         .transform(request.getParameters()));
>                 pw.flush();
>                 result = readTransformator.transform(br.readLine());
>                 log.info(CollectionsUtil.formatMap(result));
>             } catch (UnknownHostException e) {
>                 throw new DestinationNotAvailableException(e);
>             } catch (IOException e) {
>                 throw new DestinationNotAvailableException(e);
>             } finally {
>                 //zatvaranje resursa.
>                 SocketUtil.close(socket);
>                 IOUtil.close(br);
>                 IOUtil.close(pw);
>
>             }
>
>             sleepQuetly(3*1000);
>         }// for
>
>
> and this is snippet of server code
>
> public void process(final MobileContext context) {
>         //uzimanje sesije.
>         IoSession session = (IoSession)context.getParameter("ioSession");
>         TransactionDirector transactionDirector =
> (TransactionDirector)context.getParameter("transactionDirector");
>         final DaoFactory daoFactory =
> (DaoFactory)context.getParameter("daoFactory");
>         final Transaction transaction =
> transactionDirector.getTransaction();
>         final Voucher voucher = transaction.getVoucher();
>
>
>         final WriteFuture future =
> session.write(transformator.transform(context.getResponse().getParameters()));
>
>
>
>
>
>         future.addListener(new IoFutureListener<IoFuture>(){
>
>             @Override
>             public void operationComplete(IoFuture ioFuture) {
>                 try{
>                 WriteFuture newfuture = (WriteFuture)future.await();
>                 //WriteFuture future = (WriteFuture)ioFuture;
>
>                 //provera da li je podatak upisan.
>                 if (newfuture.isWritten()){
>
>                     //provera da li j u pitanju offline dopuna.
>                     if (voucher!= null){
>                         VoucherDao dao = daoFactory.getVoucherDao();
>                         //oznacavanje da je voucher iskoriscen.
>                         try {
>                             dao.updateUsed(voucher);
>                         } catch (DaoException e) {
>                             log.error("Nije oznaceno u bazi da je vaucer
> iskoriscen "+voucher.getId(),e);
>                         }
>                     }
>                 }else{
>                     //ako odgovor nije poslat terminalu vraca se vaucer u
> red.
>                     if (voucher != null){
>                         Queue queue = (Queue)context.getParameter("queue");
>                         queue.putVoucher(voucher);
>                     }else{
>                         //TODO register for autostorno.
>                     }
>                     TransactionDao dao = daoFactory.getTransactionDao();
>                     try {
>
> dao.updateDelivered(transaction.getTransactionId(),NOT_DELIVERED);
>                     } catch (DaoException e) {
>                         log.error("Nije oznaceno u bazi da poruka nije
> isporucena klijentu "+transaction.getTransactionId());
>                     }
>
>                     //provera da li je doslo do greske pri slanju odgovora.
>                     Throwable t = future.getException();
>                     if (t != null){
>                         log.error("Greska pri slanju odgovara klijentu za
> transakciju "+transaction.getTransactionId(),t);
>                     }
>                 }
>
>
>             }catch(Throwable e){
>                 log.error("Ovde je problem",e);
>             }
>
>             }
>
>         }
>
>             );
>         session.closeOnFlush();
>
>
> //System.out.println(""+context.getResponse().getParameter(TerminalKeys.ERR));
>         context.endProcessing();
>
>
>     }
>
> On Fri, Jul 25, 2008 at 4:50 AM, Wenrui Guo <[EMAIL PROTECTED]>wrote:
>
>> From my point of view, you had better post your code snippet from your
>> application. For example, the logic of client side.
>>
>> BR
>> anderson
>>
>> -----Original Message-----
>> From: Zlatko Josic [mailto:[EMAIL PROTECTED]
>> Sent: Friday, July 25, 2008 3:36 AM
>> To: [email protected]
>> Subject: problem
>>
>> Hi,
>>
>> I have server based on mina framework adn stupid socket client.
>> Messages sent to server have "\n\r" for end of message  and messages
>> send to client have '\n' for end of message.
>>
>> When I start lot of clients some of clients never ends and server has
>> lotof sessionIdle method calls.
>>
>> what can be problem?
>>
>> Thanks for any help.
>>
>
>

Reply via email to