Objetos distribuídos. Roteiro. Java IDL



Documentos relacionados
Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve

Desenvolvimento de Aplicações Java/CORBA

Sistemas Distribuídos. Ricardo Ribeiro dos Santos

SISTEMAS DISTRIBUÍDOS

Object Brokers. Tecnologias de Middleware 2004/2005 André Santos

! "# $ $ % & % ' & ( )

RMI RMI-IIOP Java IDL (CORBA) Helder da Rocha

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha

Invocação de Métodos Remotos

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Sistemas Distribuídos

Sistemas Distribuídos

Sistemas distribuídos e Middleware

APÊNDICE A EXEMPLO DE APLICAÇÃO

Invocação de Métodos Remotos RMI (Remote Method Invocation)

UNIVERSIDADE. Sistemas Distribuídos

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

CURSO DE PROGRAMAÇÃO EM JAVA

Aplicações e Arquitetura CORBA. Edvar Oliveira edvar@ufpa.br

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

INE Sistemas Distribuídos

Objetos Distribuídos em Java

Desenvolvendo uma aplicação CORBA utilizando Java

Objetos Distribuídos. Nazareno Andrade

Uma Introdução ao CORBA

Adriano Reine Bueno Rafael Barros Silva

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

insfcanceof new public switch transient while byte continue extends for int null

Middleware de Aplicações Paralelas/Distribuídas

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Sistemas Paralelos e Distribuídos /2004 Curso: Matemática /Informática Sistemas Distribuídos /2004 Curso: Ensino da Informática

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

COMUNICAÇÃO INTER-PROCESSOS JAVA RMI e RPC. Prof. Cesar Augusto Tacla

Sistemas Distribuídos Métodos de Invocação Remota II. Prof. MSc. Hugo Souza

Java 2 Standard Edition Como criar classes e objetos

15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado

Bacharelado em Ciência e Tecnologia BC Processamento da Informação Teoria Arquivos Prof. Edson Pinheiro Pimentel edson.pimentel@ufabc.edu.

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

1 a. Sumário. 1. Conceitos Básicos a. Invocação remota (RPC/RMI) b. Semântica de invocação remota c. Invocação remota de métodos (RMI)

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

Um pouco do Java. Prof. Eduardo

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) C# Remote V0 1

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008.

Objetivos: Entender o funcionamento dos programas Java via linha de comando

Enterprise Java Beans

Invocação Remota MC704

Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto:

Introdução a Java. Hélder Nunes

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Prática em Laboratório N.01 Criando um Serviço Web via Console

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

THREADS EM JAVA. George Gomes Cabral

UNIVERSIDADE. Sistemas Distribuídos

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Programação online em Java

Programação Concorrente em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

Web Services. José Mocito. Web Services. Tecnologias de Middleware 2004/2005. Universidade de Lisboa. 11 de Novembro, 2004

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

Projeto de Software Orientado a Objeto

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

RMI/JNDI - Fundamentos

Módulo 07 Características Avançadas de Classes

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

Sistemas Distribuídos

Exercícios de Revisão Java Básico

Invocação de Métodos em Objectos Remotos

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

Orientação a Objetos com Java

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

Mecanismos de Comunicação. Sockets em java (

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Java. Marcio de Carvalho Victorino

Aula 04 Operadores e Entrada de Dados. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

UNIVERSIDADE. Sistemas Distribuídos

Comunicação entre Processos. Comunicação entre Processos. Comunicação entre Processos. Comunicação entre Processos. Comunicação entre Processos

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar

Sintaxe Básica de Java Parte 1

Java RMI - Remote Method Invocation. Programação com Objetos Distribuídos (C. Geyer) Java-RMI 1

Transcrição:

Objetos distribuídos Java IDL Roteiro Java IDL Definindo a interface IDL Compilando a interface IDL Criando o servidor Criando o cliente Rodando a aplicação Rodando a aplicação em duas máquinas Java IDL 2

Java IDL Implementação da arquitetura CORBA Aderente às especificações OMG CORBA 2.3.1 Mapeamento IDL para Java Ferramentas Compilador IDL para Java Compilador Java para IDL Página http://java.sun.com/j2se/1.5.0/docs/guide/idl/ Java IDL 3 Definindo a interface IDL Crie o arquivo Hello.idl module HelloApp { interface Hello { string sayhello(); oneway void shutdown(); ; ; Java IDL 4

Compilando a interface IDL Mapeando Hello.idl para Java 1. Verifique se o diretorio jdk/bin está no seu PATH 2. Abra o Prompt do DOS 3. Vá para o diretório onde está o arquivo Hello.idl 4. Compile o arquivo IDL idlj -fall Hello.idl Java IDL 5 Compilando a interface IDL Foi criado o diretório HelloApp contendo 6 arquivos Hello.java Esta interface contém a versão Java da interface IDL HelloOperations.java Esta interface contém os métodos da interface Java _HelloStub.java HelloPOA.java HelloHelper.java Esta classe provê funções auxiliares Método narrow() faz o cast de referência a objeto CORBA para o tipo certo Responsável por ler e escrever dados em streams CORBA HelloHolder.java Usada quando os parâmetros são out ou inout Java IDL 6

Criando o servidor // Stub e skeleton import HelloApp.*; // Serviço de nomes import org.omg.cosnaming.*; // Exceções do serviço de nomes import org.omg.cosnaming.namingcontextpackage.*; // Necessário em aplicações CORBA import org.omg.corba.*; // Portable Server Inheritance Model import org.omg.portableserver.*; import org.omg.portableserver.poa; // Para iniciar o ORB import java.util.properties; Java IDL 7 Criando o servidor class HelloImpl extends HelloPOA { private ORB orb; public void setorb(orb orb_val) { orb = orb_val; public String sayhello() { return "\nhello world!!\n"; method public void shutdown() { orb.shutdown(false); Java IDL 8

Criando o servidor Declara a classe public class HelloServer { // o método main() vai aqui Define o main() public static void main(string args[]) { // o bloco try-catch vai aqui Trata exceções try{ // o resto do código de Hello Server vai aqui catch(exception e) { System.err.println("ERROR: " + e); e.printstacktrace(system.out); Java IDL 9 Criando o servidor Cria e inicia um objeto ORB ORB orb = ORB.init(args, null); Obtém uma referência a RootPOA e ativa POAManager POA rootpoa = POAHelper.narrow(orb.resolve_initial_referen ces("rootpoa")); rootpoa.the_poamanager().activate(); Java IDL 10

Criando o servidor Inicia objeto servant HelloImpl helloimpl = new HelloImpl(); Define ORB para chamar ORB.shutdown() helloimpl.setorb(orb); Obtém referência associada ao servant org.omg.corba.object ref = rootpoa.servant_to_reference(helloimpl); Hello href = HelloHelper.narrow(ref); Java IDL 11 Criando o servidor Obtém contexto de nome inicial org.omg.corba.object objref = orb.resolve_initial_references("nameservice"); NamingContextExt ncref = NamingContextExtHelper.narrow(objRef); Registra o servant String name = "Hello"; NameComponent path[] = ncref.to_name( name ); ncref.rebind(path, href); Aguarda requisições orb.run(); Java IDL 12

Criando o cliente // Stub e skeleton import HelloApp.*; // Serviço de nomes import org.omg.cosnaming.*; // Exceções do serviço de nomes import org.omg.cosnaming.namingcontextpackage.*; // Necessário em aplicações CORBA import org.omg.corba.*; Java IDL 13 Criando o cliente Declara a classe cliente public class HelloClient { // o método main() vai aqui Define o método main() public static void main(string args[]) { // o bloco try-catch vai aqui Trata exceções try{ // adicione o resto do código do cliente aqui catch(exception e) { System.out.println("ERROR : " + e); e.printstacktrace(system.out); Java IDL 14

Criando o cliente Cria e inicia um objeto ORB ORB orb = ORB.init(args, null); Obtém contexto de nome inicial org.omg.corba.object objref = orb.resolve_initial_references("nameservi ce"); NamingContextExt ncref = NamingContextExtHelper.narrow(objRef); Java IDL 15 Criando o cliente Resolve o nome e obtém a referência ao objeto String name = "Hello"; helloimpl = HelloHelper.narrow(ncRef.resolvestr(name)); System.out.println("Obtained a handle on server object: " + helloimpl); Invoca operação sayhello() System.out.println(helloImpl.sayHello()); Invoca operação shutdown() helloimpl.shutdown(); Java IDL 16

Compilando Para compilar o servidor, no diretório Hello faça: javac HelloServer.java HelloApp/*.java E para compilar o cliente faça: javac HelloClient.java HelloApp/*.java Java IDL 17 Rodando a aplicação Inicie o orbd start orbd -ORBInitialPort 1050 -ORBInitialHost localhost Inicie o servidor start java HelloServer -ORBInitialPort 1050 -ORBInitialHost localhost Execute a aplicação cliente java HelloClient -ORBInitialPort 1050 -ORBInitialHost localhost O cliente imprime Hello world!! Java IDL 18

Rodando a aplicação em duas máquinas Na máquina do servidor Inicie o orbd start orbd -ORBInitialPort 1050 -ORBInitialHost maquina_servidor Inicie o servidor start java HelloServer -ORBInitialPort 1050 Na máquina do cliente Execute a aplicação cliente java HelloClient -ORBInitialPort 1050 ORBInitialHost maquina_servidor Java IDL 19