Usando RMI, escrever classes Java que implementam o cliente e o servidor de um serviço bancário

0 respostas
jggoa

Usando RMI, escrever classes Java que implementam o cliente e o servidor de um serviço bancário com suporte a pelo menos dois tipos de requisição (deposito/saque). Lembrando que é necessário controlar o acesso aos dados compartilhados pelos diversos clientes. Não é necessário adotar pool de threads, mas o servidor desse ser multithread.

Bem, tenho este código, gostaria de saber como seria a classe cliente, se alguém puder ajudar eu agradeceria muito.

public class Main {

    /*
     * Servidor
     */
    public static void main(String[] args) {
        
        Executor ex = Executors.newCachedThreadPool();

        ServerSocket socketServer;
        Socket            so = null;
        DataInputStream   in = null;
        DataOutputStream out = null;
        Trans tra;

        try{
        socketServer = new ServerSocket(444);System.out.println("Socket Pronto");
        so = socketServer.accept();          System.out.println("Socket Aceito");
        tra = new Trans(so);
        ex.execute(tra);
           } catch(Exception exa){exa.printStackTrace();}


}}
 
------------------------------------------------------------------

public class Trans implements Runnable {
    String op;
    static Double saldo = 0.0;
    static Object mon = new Object();
    Socket so;
    // 1 Crédito     2 Débito

    public Trans(Socket so){
    this.so = so;
    }

    public String ExecutaOperacao(String op){
        
        
        synchronized(mon){
        System.out.println("Entrei na função");
        switch(op.charAt(0)){
        case '1':
                saldo += Double.parseDouble(op.substring(1));   //credito
                return saldo.toString();
        case '2':
                saldo -= Double.parseDouble(op.substring(1));   //debito
                return saldo.toString();
            default: System.out.println("Default");
        
        return "0";
            }
    }
    
    }

    public void run(){
        DataInputStream in   = null;
        DataOutputStream out = null;
        String receive;
        
        if(so == null)return; //sem conexao
        
        while(true){
        System.out.println("Entrei no while");
        try{
        in      = new DataInputStream (so.getInputStream());
        out     = new DataOutputStream(so.getOutputStream());
        receive =  in.readUTF();System.out.println("Li "+receive);
        if(Integer.parseInt(receive) == 0){System.out.println("Fim do prorgama");break;}
        out.writeUTF(ExecutaOperacao(receive));
        receive = null;
        
        
        } catch(Exception ex1){ex1.printStackTrace();}
        
        }
      //in.close();
      //out.close();

    }
    }
Criado 7 de abril de 2013
Respostas 0
Participantes 1