Since your client uses the blocked socket, it is blocked at
'br.readLine()'.
That is, client doesn't end until server feeds data to it.
On Fri, Jul 25, 2008 at 7:25 PM, Zlatko Josic <[EMAIL PROTECTED]>
wrote:
> 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.
> >>
> >
> >
>