Desenvolvimento de Aplicações CORBA

Slides:



Advertisements
Apresentações semelhantes
|Introdução a Java para programadores Telis. Jogo de Dados simples O jogo é jogado por dois jogadores. Cada jogador faz sua jogada (lança um dado), e.
Advertisements

Projeto e Implementação de Middleware
Sistemas Distribuídos Resolvendo o Problema da Heterogeneidade
Sistemas distribuídos
Reflexão Marco Antonio Arquiteto de Software Novembro/2007.
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Marco A. S. Reis EJB Acesso Remoto Marco A. S. Reis
Tratamento de Exceções
Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software
RMI - Remote Method Invocation
RMI-IIOP.
Programação Básica em Java
Sistemas Distribuídos CORBA
Invocação de Métodos Remotos RMI
1 Arquitetura CORBA Repositório de Implementação Repositório de Interface cliente programa cliente proxy ORB Core ou invocação dinâmica servidor ORB Core.
Comunicação Entre Objetos Distribuídos
1 Serviços CORBA. Serviços CORBA. Funcionalidades que podem ser utilizadas por objetos distribuídos. Naming Service (Serviço de Nomes) Event and Notification.
Comunicação Inter-Processos
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Classes e objetos P. O. O. Prof. Grace.
Estrutura de Dados em Java
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
CRIANDO OBJETOS EM JAVA
Concorrência em Java Threads em Java.
Introdução a linguagem Python
Threads: Introdução e Implementação
JAVA Linguagem Ambiente de Desenvolvimento
Introdução a Java: Classes, métodos e variáveis Eduardo Figueiredo 24 de Março de 2010 POOAula 05.
Arquitetura CORBA e Objetos Distribuídos
Programação I Aula 2 (Métodos)
Chamada Remota de Procedimentos
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
LPII Professora Lucélia. Pacotes Um pacote em Java é um diretório onde ficam armazenadas uma ou mais classes. Geralmente as classes com a mesma afinidade.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Linguagem II Exceções.
Listas Simplesmente Encadeadas
Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007.
SessionBeans Marco Antonio Arquiteto de Software.
Integrações de Aplicações Empresariais Prof. Paulo Fernando da Silva UNC – Universidade do Contestado Pós-Graduação em Sistemas de Informação Aplicados.
Tratamento de Exceções
Programação Orientada a Objetos - Java
COMUNICAÇÃO.
Java Kickstart, day 2 Semelhanças com linguagem C.
Implementação Orientada a Objetos – Aula 05 Construtores e sobrecarga de métodos Prof. Danielle Martin Universidade de Mogi das Cruzes
Capítulo 6 Exceções.
Funções Matemáticas e de String
Estrutura de Controle em JAVA
Exceções Suzana Fragoso (smpf) Adaptado do material de Guilherme Carvalho (gvc)
Exceções Profa. Patrícia A. Jaques Alterada por Leandro Tonietto abr-15.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
DAS Sistemas Distribuídos para Automação Industrial
M ÉTODOS DA C LASSE S TRING. FUNÇÕES COM STRING Uma string é um tipo texto que corresponde à união de um conjunto de caracteres. Em Java, as strings são.
Objetos Distribuídos para WEB Prof. Paulo Fernando da Silva FURB – Universidade Regional de Blumenau Pós-Graduação em Desenvolvimento WEB.
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Aula Prática 1 Monitoria IP/CC (~if669) (A partir do slide elaborado por Luís Gabriel)
Tecgraf PUC-Rio maio de 2011 SDK Openbus - Java. A API do Openbus Para facilitar o desenvolvimento das aplicações que usam o barramento, provendo ou consumindo.
RMI (Remote Method Invocation) Bruno Edson Plínio Tadeu
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
API Java do SCS Tecgraf PUC-Rio Setembro de 2013.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Socket em Java.
Sistemas Distribuídos Aula 07 – Programação Distribuída (Corba)
Versão 3 – fevereiro/2014 Tecgraf PUC-Rio Fevereiro de 2014 Desenvolvendo uma aplicação CORBA utilizando Java.
RMI Java Remote Method Invocation em Java. Introdução Java Remote Method Invocation (Java RMI) permite desenvolver sistemas distribuídos baseados em Java.
Tecgraf PUC-Rio maio de 2011 Desenvolvendo uma aplicação CORBA utilizando Java.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Transcrição da apresentação:

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 ORB CORBA Adotado Java Java IDL (j2sdk1.4.0)

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)

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

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

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)

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

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

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

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

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;

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

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;

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

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

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

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

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

Passo 4 - Implementar o Servidor Compilação do Servidor % javac Servidor.java

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

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

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

Passo 5 - Implementar o Cliente (IV) }catch (Exception e) { System.out.println("ERROR : " + e) ; e.printStackTrace(System.out); }

Passo 5 - Implementar o Cliente Compilação do Cliente % javac Cliente.java

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]

Passo 6 – Executar Aplicação Resultado % 5 + 3 = 8.0 % Divisao Por Zero % A Divisao foi 5.0 / 0.0

Fim

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 e-mail para rcthiago@gmail.com Até a próxima aula da disciplina (quinta-feira, 04/08/2005)