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

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

Desenvolvimento de Aplicações CORBA

Apresentações semelhantes


Apresentação em tema: "Desenvolvimento de Aplicações CORBA"— 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 ORB CORBA Adotado Java
Java IDL (j2sdk1.4.0)

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

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

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

7 Implementação Lado Servidor Lado Cliente 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.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: IDL
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"

Apresentações semelhantes


Anúncios Google