desenvolvimento de aplicações corba

29
Desenvolvimento de Aplicações CORBA

Upload: juana

Post on 21-Mar-2016

41 views

Category:

Documents


1 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Desenvolvimento de Aplicações CORBA

Desenvolvimento de Aplicações CORBA

Page 2: 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;

Page 3: Desenvolvimento de Aplicações CORBA

Software Usado Linguagem de Programação

Java

ORB CORBA Adotado Java IDL (j2sdk1.4.0)

Page 4: Desenvolvimento de Aplicações CORBA

Visão Geral do Processo (Lado Servidor I)

Implementação de

Métodos

skeletonItfPOA(Java)

stub(Java)

ItfHelper(Java)

Teste.idlCompilador idl -> java

Herdar (extends)

Interface: Itf

Page 5: Desenvolvimento de Aplicações CORBA

ORB CORBA

Servidor de Nomes

Visão Geral do Processo (Lado Servidor II)

Servant

Implementação de

Métodos

Instancia

POA

Registra

ServerExecutar Código

Server

Page 6: Desenvolvimento de Aplicações CORBA

Visão Geral do Processo (Lado Cliente)CódigoCliente

Servidor de Nomes

ORB CORBA

Executar

Localiza Servant

Cliente

Page 7: Desenvolvimento de Aplicações CORBA

Implementação Lado Servidor

CalcDL.idl (Arquivo IDL) CalculadoraImpl.java (Implementação

da Interface) Servidor.java (Classe servidora)

Lado Cliente Cliente.java (Classe Cliente)

Page 8: Desenvolvimento de Aplicações CORBA

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

Page 9: Desenvolvimento de Aplicações CORBA

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

Page 10: Desenvolvimento de Aplicações CORBA

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

Page 11: Desenvolvimento de Aplicações CORBA

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);};

};

Page 12: Desenvolvimento de Aplicações CORBA

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

Page 13: Desenvolvimento de Aplicações CORBA

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

Page 14: Desenvolvimento de Aplicações CORBA

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;

Page 15: Desenvolvimento de Aplicações CORBA

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; }}

Page 16: Desenvolvimento de Aplicações CORBA

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);

Page 17: Desenvolvimento de Aplicações CORBA

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);

Page 18: Desenvolvimento de Aplicações CORBA

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);

Page 19: Desenvolvimento de Aplicações CORBA

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();}

}}

Page 20: Desenvolvimento de Aplicações CORBA

Passo 4 - Implementar o Servidor Compilação do Servidor

% javac Servidor.java

Page 21: Desenvolvimento de Aplicações CORBA

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);

Page 22: Desenvolvimento de Aplicações CORBA

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);

Page 23: Desenvolvimento de Aplicações CORBA

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); }

Page 24: Desenvolvimento de Aplicações CORBA

Passo 5 - Implementar o Cliente (IV)

}catch (Exception e) { System.out.println("ERROR : " +

e) ; e.printStackTrace(System.out);

} }}

Page 25: Desenvolvimento de Aplicações CORBA

Passo 5 - Implementar o Cliente Compilação do Cliente

% javac Cliente.java

Page 26: Desenvolvimento de Aplicações CORBA

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]

Page 27: Desenvolvimento de Aplicações CORBA

Passo 6 – Executar Aplicação Resultado

% 5 + 3 = 8.0% Divisao Por Zero

% A Divisao foi 5.0 / 0.0

Page 28: Desenvolvimento de Aplicações CORBA

Fim

Page 29: Desenvolvimento de Aplicações CORBA

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 [email protected]é a próxima aula da disciplina (quinta-feira,

04/08/2005)