Como fazer comunicação cliente/servidor em Java usando Corba
por Anônimo Corba, distribuido, Java, sistema
Para este tutorial é necessario ter a JDK da Sun no seu Windows, Linux, eu fiz um tutorial ensinando como instalar a JDK no linux, que pode ser visto aqui.
Aula do professor Frank Siqueira que pode ser visualizada aqui.
Arquivos utilizados no tutorial :
Servidor.java
Cliente.java
Banco.idl
Auto_AtendimentoImpl.java
Descrição
Essa atividade mostrará como utilizar o CORBA para efetuar a comunicação entre objetos distribuídos.
Roteiro
Especificando a Interface do Servidor
Suponha a interface do servidor de um banco, que deve ser acessado tanto pelo sistema de auto-atendimento pela Internet quanto pelos caixas eletrônicos.
Primeiramente, devemos definir a interface IDL do servidor. Iremos utilizar a seguinte interface:
Banco.idl
Salve a descrição de interface acima no arquivo Banco.idl e a compile com o comando:
idlj -fall Banco.idl
Note que foram gerados diversos arquivos no diretório banco, dentre os quais estão as stubs e skeletons que serão usados pela aplicação e classes que correspondem aos tipos de dados e exceções definidos no arquivo IDL.
Implementando o código do Servidor
Agora devemos implementar o servidor. O arquivo auto_atendimentoImpl.java contém uma implementação limitada dos métodos especificados na interface de auto-atendimento. O arquivo servidor.java contém o código necessário para instanciar o servidor e registrá-lo no serviço de nomes. Salve estes dois arquivos no diretório banco criado pelo compilador IDL.
atendimentoImpl.java
servidor.java
Compile todos os arquivos do servidor com o comando:
javac banco/*.java
Implementando o código do Cliente
O cliente CORBA (arquivo cliente.java) localiza o servidor e faz chamadas aos seus métodos.
cliente.java
Compile o cliente com o comando:
javac cliente.java
Executando a Aplicação no Windows
Primeiramente, inicie o ORB com o comando:
> start orbd
Em seguida, inicie o servidor:
> start java banco.servidor
Finalmente, inicie o cliente com o comando:
> java cliente
Para fazer a comunicação entre máquinas diferentes, indique ao cliente que o ORB estará rodando em outro computador:
> java cliente -ORBInitialHost
Obs.: as restrições de segurança impostas na rede do laboratório não permitem essa forma de comunicação entre máquinas.
Executando a Aplicação no Linux
Primeiramente, inicie o ORB com o comando:
> orbd -ORBInitialPort 2500 &
Em seguida, inicie o servidor em um terminal:
> java banco.servidor -ORBInitialPort 2500
Finalmente, inicie o cliente executando em outro terminal o comando:
> java cliente -ORBInitialPort 2500
Para fazer a comunicação entre máquinas diferentes, indique ao cliente que o ORB estará rodando em outro computador:
> java cliente -ORBInitialHost -ORBInitialPort 2500
 
Espero que ajude,
um forte abraço.
Aula do professor Frank Siqueira que pode ser visualizada aqui.
Arquivos utilizados no tutorial :
Servidor.java
Cliente.java
Banco.idl
Auto_AtendimentoImpl.java
Descrição
Essa atividade mostrará como utilizar o CORBA para efetuar a comunicação entre objetos distribuídos.
Roteiro
Especificando a Interface do Servidor
Suponha a interface do servidor de um banco, que deve ser acessado tanto pelo sistema de auto-atendimento pela Internet quanto pelos caixas eletrônicos.
Primeiramente, devemos definir a interface IDL do servidor. Iremos utilizar a seguinte interface:
Banco.idl
module banco {
  typedef unsigned long conta; 
  typedef double valor; 
  const string nome_banco = "UFSC";
  const string moeda = "R$"; 
  enum aplicacao { poupanca, fundo_acoes, renda_fixa };
  struct transacao { 
    unsigned long data; // Formato: ddmmyyyy
    string<12>    descricao; 
    valor         quantia; 
  };
  typedef sequence  transacoes; 
  exception conta_inval { conta c; };
  exception saldo_insuf { valor saldo; };
  interface auto_atendimento {
    readonly attribute string boas_vindas;
    valor saldo ( in conta c ) 
          raises ( conta_inval );
    void extrato ( in conta c, out transacoes t, out valor saldo ) 
         raises ( conta_inval );  
    void transferencia ( in conta origem, in conta destino, in valor v )
         raises ( conta_inval, saldo_insuf );  
    void investimento ( in conta c, 
         in aplicacao apl, in valor v ) 
         raises ( conta_inval, saldo_insuf ); 
  };
  interface caixa_eletronico: auto_atendimento {
    void saque ( in conta c, in valor v ) 
         raises ( conta_inval, saldo_insuf );
  }; 
};
 Salve a descrição de interface acima no arquivo Banco.idl e a compile com o comando:
idlj -fall Banco.idl
Note que foram gerados diversos arquivos no diretório banco, dentre os quais estão as stubs e skeletons que serão usados pela aplicação e classes que correspondem aos tipos de dados e exceções definidos no arquivo IDL.
Implementando o código do Servidor
Agora devemos implementar o servidor. O arquivo auto_atendimentoImpl.java contém uma implementação limitada dos métodos especificados na interface de auto-atendimento. O arquivo servidor.java contém o código necessário para instanciar o servidor e registrá-lo no serviço de nomes. Salve estes dois arquivos no diretório banco criado pelo compilador IDL.
atendimentoImpl.java
package banco;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;
class auto_atendimentoImpl extends auto_atendimentoPOA
{  
  public String boas_vindas () { return "Bem-vindo ao banco " + banco.nome_banco.value; };
  public double saldo (int c) throws banco.conta_inval { return 0.0; }
  public void extrato (int c, banco.transacoesHolder t, org.omg.CORBA.DoubleHolder saldo) throws banco.conta_inval {}
  public void transferencia (int origem, int destino, double v) throws banco.conta_inval, banco.saldo_insuf {}
  public void investimento (int c, banco.aplicacao apl, double v) throws banco.conta_inval, banco.saldo_insuf {}
}
servidor.java
package banco;
import org.omg.CosNaming.*;
import org.omg.CORBA.*;
import org.omg.PortableServer.*;
import java.io.*;
public class servidor
{
  public static void main(String args[]) {
    try{
      // Cria e inicializa o ORB
      ORB orb = ORB.init(args, null);
      // Cria a implementação e registra no ORB
      auto_atendimentoImpl impl = new auto_atendimentoImpl();
      // Ativa o POA
      POA rootpoa = POAHelper.narrow(
        orb.resolve_initial_references("RootPOA"));
      rootpoa.the_POAManager().activate();
      // Pega a referência do servidor
      org.omg.CORBA.Object ref = 
        rootpoa.servant_to_reference(impl);
      auto_atendimento href = auto_atendimentoHelper.narrow(ref);
   
      // Obtém uma referência para o servidor de nomes
      org.omg.CORBA.Object objRef = 
        orb.resolve_initial_references("NameService");
      NamingContextExt ncRef = 
        NamingContextExtHelper.narrow(objRef);
      // Registra o servidor no servico de nomes
      String name = "AutoAtendimento";
      NameComponent path[] = ncRef.to_name( name );
      ncRef.rebind(path, href);
      System.out.println("Servidor aguardando requisicoes ....");
      // Aguarda chamadas dos clientes
      orb.run();
    } catch (Exception e) {
        System.err.println("ERRO: " + e);
        e.printStackTrace(System.out);
    }
    System.out.println("Encerrando o Servidor.");
  }
}
Compile todos os arquivos do servidor com o comando:
javac banco/*.java
Implementando o código do Cliente
O cliente CORBA (arquivo cliente.java) localiza o servidor e faz chamadas aos seus métodos.
cliente.java
import banco.*;
import org.omg.CORBA.*;
import org.omg.CosNaming.*;
import org.omg.CosNaming.NamingContextPackage.*;
public class cliente {
  public static void main(String args[]) {
    try {
      // Cria e inicializa o ORB
      ORB orb = ORB.init(args, null);
      // Obtem referencia para o servico de nomes
      org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
      NamingContextExt ncRef = 
        NamingContextExtHelper.narrow(objRef);
 
      // Obtem referencia para o servidor
      String name = "AutoAtendimento";
      auto_atendimento server = auto_atendimentoHelper.narrow(ncRef.resolve_str(name));
      // Imprime mensagem de boas-vindas
      System.out.println(server.boas_vindas());
      // Obtem o numero da conta
      System.out.print("Entre o numero da sua conta: ");
      java.io.BufferedReader reader = new java.io.BufferedReader(new java.io.InputStreamReader(System.in));
      String conta = reader.readLine();
      // Imprime o saldo atual
      System.out.println("Seu saldo eh de R$" + server.saldo(Integer.parseInt(conta)));
    } catch (Exception e) {
        System.out.println("ERROR : " + e) ;
        e.printStackTrace(System.out);
    }
  }
}
Compile o cliente com o comando:
javac cliente.java
Executando a Aplicação no Windows
Primeiramente, inicie o ORB com o comando:
> start orbd
Em seguida, inicie o servidor:
> start java banco.servidor
Finalmente, inicie o cliente com o comando:
> java cliente
Para fazer a comunicação entre máquinas diferentes, indique ao cliente que o ORB estará rodando em outro computador:
> java cliente -ORBInitialHost
Obs.: as restrições de segurança impostas na rede do laboratório não permitem essa forma de comunicação entre máquinas.
Executando a Aplicação no Linux
Primeiramente, inicie o ORB com o comando:
> orbd -ORBInitialPort 2500 &
Em seguida, inicie o servidor em um terminal:
> java banco.servidor -ORBInitialPort 2500
Finalmente, inicie o cliente executando em outro terminal o comando:
> java cliente -ORBInitialPort 2500
Para fazer a comunicação entre máquinas diferentes, indique ao cliente que o ORB estará rodando em outro computador:
> java cliente -ORBInitialHost
Espero que ajude,
um forte abraço.
Quem sou eu
Blog Archive
- 
        ▼ 
      
2010
(118)
- 
        ▼ 
      
novembro
(15)
- 50 Free Apps We're Most Thankful For
- Como fazer um cliente em Java e um servidor em C++
- Google tem 2076 vagas de emprego para 2010
- Como fazer comunicação cliente/servidor em Java u...
- Como fazer comunicação cliente/servidor em Java u...
- Maioria dos brasileiros prefere trabalho Home Office
- Como instalar e utilizar o omniOrb no Ubuntu
- Show ao vivo com um holograma no Japão, demais!
- Configurando para receber emails no Evolution
- Video Tutorial : Como carregar as próximas páginas...
- Vídeo Tutorial:Controle seu firefox pelo mouse
- Google Instant Preview–Veja sites em sua busca no ...
- Kinect–A nova aposta da Microsoft
- Rakesh Vaidyanathan, presidente do BRICs Institute
- GameTrailers–Saiba tudo sobre os games
 
 
- 
        ▼ 
      
novembro
(15)


 
19 de setembro de 2016 às 13:16
In case you are looking into making money from your visitors by running popup ads - you should embed one of the most reputable networks: Clickadu.