1 / 29

Desenvolvimento de Aplicações CORBA

Desenvolvimento de Aplicações CORBA. A Aplicação. Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar o valor da operação; Um Cliente envia pedidos para as duas operações do servidor;. Software Usado. Linguagem de Programação Java

juana
Download Presentation

Desenvolvimento de Aplicações CORBA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Desenvolvimento de Aplicações CORBA

  2. A Aplicação • Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar o valor da operação; • Um Cliente envia pedidos para as duas operações do servidor;

  3. Software Usado • Linguagem de Programação • Java • ORB CORBA Adotado • Java IDL (j2sdk1.4.0)

  4. Herdar (extends) Visão Geral do Processo (Lado Servidor I) Interface: Itf Teste.idl Implementação de Métodos Compilador idl -> java ItfHelper (Java) stub (Java) skeleton ItfPOA (Java)

  5. Executar Instancia Registra POA Servidor de Nomes Visão Geral do Processo (Lado Servidor II) Código Server Server Implementação de Métodos Servant ORB CORBA

  6. Executar Servidor de Nomes Localiza Servant Visão Geral do Processo (Lado Cliente) Código Cliente Cliente ORB CORBA

  7. Implementação • Lado Servidor • CalcDL.idl (Arquivo IDL) • CalculadoraImpl.java (Implementação da Interface) • Servidor.java (Classe servidora) • Lado Cliente • Cliente.java (Classe Cliente)

  8. Passos de Criação da Aplicação • Passo 1 – Criar IDL • Passo 2 – Compilar IDL • Passo 3 – Implementar Interface • Passo 4 – Implementar Servidor • Passo 5 – Implementar Cliente • Passo 6 – Executar Aplicação

  9. Observações (1/2) • # logar no prompt do DOS • set path=p:\jdk1.4.0\bin\;%path% • set classpath=.;%classpath% • idlj -fall CalcIDL.idl • javac Servidor.java • javac Cliente.java • start tnameserv -ORBInitialPort 1700 • start java Servidor -ORBInitialPort 1700

  10. Observações (2/2) • # em outro prompt do DOS • set path=p:\jdk1.3\bin\;%path% • set classpath=.;%classpath% • java Cliente -ORBInitialHost localhost -ORBInitialPort 1700

  11. Passo 1 - Criar IDL (CalcIDL.idl) module Matematica{ exception DivisaoPorZero{ float arg1; float arg2; }; interface Calculadora{ float soma (in float arg1, in float arg2); float divisao (in float arg1, in float arg2) raises (DivisaoPorZero); }; };

  12. Passo 2 – Compilar IDL • Compilando a Interface % idlj -fall CalcIDL.idl • Obs: por default apenas stubs clientes são gerados. A opção –fall garante a geração de skeletons também;

  13. Passo 2 – Compilar IDL • Arquivos gerados pelo compilador IDL: • CalculadoraPOA.java • Skeleton Baseado no POA • _CalculadoraStub.java • Stub Cliente • Calculadora.java • Versão Java da Interface IDL • CalculadoraHelper.java • Operações auxiliares (ex.: narrow())

  14. Passo 2 – Compilar IDL • Arquivos gerados pelo compilador IDL: • CalculadoraHolder.java • Objeto que trata das funções e leitura e envio de mensagens; • CalculadoraOperations.java • Esboço para implementação das operações definidas em IDL • DivisaoPorZeroHelper.java • Operações auxiliares das exceções • DivisaoPorZeroHolder.java • Empacotamente e desempacotamento de dados nas exceções;

  15. Passo 3 - Implementar Interface import Matematica.*; public class CalculadoraImpl extends CalculadoraPOA{ public float soma(float arg1, float arg2){ System.out.println(“Soma = "+arg1+" + "+arg2); return arg1 + arg2; } public float divisao(float arg1, float arg2) throws DivisaoPorZero{ System.out.println("Divisao="+arg1+"/"+arg2); if (arg2 == 0)throw new DivisaoPorZero(arg1,arg2); return arg1 / arg2;} }

  16. Passo 4 - Implementar o Servidor (I) import Matematica.*; import org.omg.CosNaming.*; import org.omg.CORBA.*; import org.omg.PortableServer.*; public class Servidor{ public static void main(String args[]){ try{ ORB orb = ORB.init(args, null);

  17. Passo 4 - Implementar o Servidor (II) org.omg.CORBA.Object objPoa = orb.resolve_initial_references("RootPOA"); POA rootPOA = POAHelper.narrow(objPoa); org.omg.CORBA.Object obj = orb.resolve_initial_references("NameService"); NamingContext naming = NamingContextHelper.narrow(obj);

  18. Passo 4 - Implementar o Servidor (III) CalculadoraImpl calc = new CalculadoraImpl(); org.omg.CORBA.Object objRef = rootPOA.servant_to_reference(calc); NameComponent[] name = {new NameComponent("Calculadora”,"Exemplo")}; naming.rebind(name,objRef);

  19. Passo 4 - Implementar o Servidor (IV) rootPOA.the_POAManager().activate(); System.out.println(“O Servidor esta Pronto ..."); orb.run(); }catch (Exception ex){ System.out.println("Erro"); ex.printStackTrace();} } }

  20. Passo 4 - Implementar o Servidor • Compilação do Servidor % javac Servidor.java

  21. Passo 5 - Implementar o Cliente (I) import Matematica.*; import org.omg.CosNaming.*; import org.omg.CORBA.*; import org.omg.PortableServer.*; public class Cliente{ public static void main(String args[]){ try { ORB orb = ORB.init(args,null);

  22. Passo 5 - Implementar o Cliente (II) org.omg.CORBA.Object obj = orb.resolve_initial_references("NameService"); NamingContext naming = NamingContextHelper.narrow(obj); NameComponent[] name = {new NameComponent("Calculadora“,"Exemplo“)}; org.omg.CORBA.ObjectobjRef = naming.resolve(name);

  23. Passo 5 - Implementar o Cliente (III) Calculadora calc = CalculadoraHelper.narrow(objRef); try{ System.out.println("5 + 3 ="+ calc.soma(5,3)); System.out.println("5 / 0 ="+calc.divisao(5,0)); }catch (DivisaoPorZero ex){ System.out.println("Divisao Por Zero"); System.out.println("A Diviao foi "+ex.arg1+" / “+ex.arg2); }

  24. Passo 5 - Implementar o Cliente (IV) }catch (Exception e){ System.out.println("ERROR : " + e) ; e.printStackTrace(System.out); } } }

  25. Passo 5 - Implementar o Cliente • Compilação do Cliente % javac Cliente.java

  26. Passo 6 – Executar Aplicação • Inicializar o Servidor de Nomes % tnameserv • Inicializar o Servidor % java Servidor [-ORBInitialHost Host] • Inicializar o Cliente % java Cliente [-ORBInitialHost Host]

  27. Passo 6 – Executar Aplicação • Resultado % 5 + 3 = 8.0 % Divisao Por Zero % A Divisao foi 5.0 / 0.0

  28. Fim

  29. Exercício Proposto • Equipes de até 3 pessoas • Classe Conta: • getSaldo, setSaldo, getNumero, setNumero • IDL • Implementação do serviço • Cliente • Servidor • Enviar por e-mail para rcthiago@gmail.com Até a próxima aula da disciplina (quinta-feira, 04/08/2005)

More Related