![Page 1: 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](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/2.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/3.jpg)
Software Usado Linguagem de Programação
Java
ORB CORBA Adotado Java IDL (j2sdk1.4.0)
![Page 4: 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](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/4.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/5.jpg)
ORB CORBAORB CORBA
Servidor de Nomes
Servidor de Nomes
Visão Geral do Processo (Lado Servidor II)
ServantServant
Implementação de
Métodos
Instancia
POAPOA
Registra
ServerServerExecutar Código
Server
![Page 6: 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](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/6.jpg)
Visão Geral do Processo (Lado Cliente)
CódigoCliente
Servidor de Nomes
Servidor de Nomes
ORB CORBAORB CORBA
Executar
Localiza Servant
ClienteCliente
![Page 7: 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](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/7.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/8.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/9.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/10.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/11.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/12.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/13.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/14.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/15.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/16.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/17.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/18.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/19.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/20.jpg)
Passo 4 - Implementar o Servidor
Compilação do Servidor
% javac Servidor.java
![Page 21: 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](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/21.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/22.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/23.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/24.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/25.jpg)
Passo 5 - Implementar o Cliente Compilação do Cliente
% javac Cliente.java
![Page 26: 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](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/26.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/27.jpg)
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. A Aplicação Um Servidor oferecendo uma operação de soma e de divisão, onde deve receber dois argumentos reais e retornar](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/28.jpg)
Fim
![Page 29: 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](https://reader031.vdocuments.com.br/reader031/viewer/2022020720/552fc141497959413d8df5c3/html5/thumbnails/29.jpg)
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)