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