A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

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

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

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

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 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; Passo 2 – Compilar IDL

13 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()) Passo 2 – Compilar IDL

14 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.Object objRef = 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 % = 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 para Até a próxima aula da disciplina (quinta-feira, 04/08/2005)


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google