Carregar apresentação
A apresentação está carregando. Por favor, espere
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)
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.