Programmazione CORBA in Java



Похожие документы
Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

Java e CORBA. Introduzione

CORBA. CORBA facilita lo sviluppo di sistemi distribuiti fornendo

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247

Test di unità con JUnit4

Definizione di classi con array di oggetti

Java Remote Method Invocation

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

CORBA & DCOM. Gianpaolo Cugola cugola@elet.polimi.it La Object Management Architecture

Prova d Esame Compito B

Main System Monitor Keyboard

JNDI. Massimo Merro Programmazione di Rete 214 / 229

Comunicazione fra oggetti distribuiti

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

Gestire le sessioni con le Servlet

UML Diagrammi delle classi. UML Diagramma classi 1

Prova d Esame Compito A

Servlet e JDBC. Servlet e Web Server. Servlet e Web Server. Servlet e Web Server. Richieste. Servlet. Servlet:

Realizzazione di una classe con un associazione

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Spring WS Sviluppare WebService in Java

Santoro Umberto Roberto. Corba e Java

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a giugno 2013

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Inizializzazione, Assegnamento e Distruzione di Classi

appunti delle lezioni Architetture client/server: applicazioni client

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Parola chiave extends

Architettura MVC-2: i JavaBeans

Politecnico di Milano. Ingegneria del Software a.a. 2006/07. Appello del 14 settembre 2007 Cognome Nome Matricola

Gestione delle Eccezioni

Compito Scritto di Ingegneria del Software. 10 gennaio Parte teorica, punti 14. Tempo a disposizione: 1 ora

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

1 JSPDynPage, componenti portale e Java Server Pages

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

13. Chain of Responsibility

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Outline CORBA. CORBA Object Management Group (OMG). CORBA. CORBA L'Architettura OMA: Object Management Architecture. CORBA

Corso Linguaggi di programmazione II - Unina Esercitazione (prova intercorso)

Grafico della parabola

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Esercizio 6 Realizzare una classe astratta per le Figure piane e due sottoclassi, la sottoclasse Quadrato e la sottoclasse Rettangolo.

Concetti Base Eccezioni Eccezioni e Metodi Gerarchia di Eccezioni. Java: Eccezioni. Damiano Macedonio

Esercizi della lezione 5 di Java

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni server

Introduzione a Classi e Oggetti

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

1 EJB e Portal Component Object

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Esempio: il conto bancario

Socket & RMI Ingegneria del Software - San Pietro

Controllo degli accessi

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

1 Applicazione J2EE sul SAP WAS con SAP NWDS

SAPIENZA Università di Roma, Facoltà di Ingegneria

esercizi Esercizi / problemi

Programmazione di sistemi distribuiti

CORBA ( Common Object Request Broker Architecture ) Le specifiche più conosciute sono UML e CORBA

Java Virtual Machine

Programmazione distribuita

Esercitazioni aggiuntive Martedì Laboratorio L-12

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

Esercizio: gestione di un conto corrente

RMI. Java RMI RMI. G. Prencipe

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

GESTIONE DEI PROCESSI

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile

Remote Method Invocation (RMI)

PRACTICAL DEVELOPMENT OF A WEB SERVICE

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

sayhello public private protected return public class Greeter { public String sayhello() { String message = Hello, World! ; return message; } }

DESIGN PATTERN CREAZIONALI INGEGNERIA DEL SOFTWARE INTRODUZIONE SINGLETON. Scopo dei design pattern creazionali

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Programmazione Java Avanzata Concetti su Java

Ingegneria del Software

Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione

Транскрипт:

Programmazione CORBA in Java Ing. Andrea Santoro http://www.dis.uniroma1.it/~santoroa santoro@dis.uniroma1.it (codice preparato dall ing. Alessandro Termini)

Overview Naming Service Motivazioni Name Service in ORB della Sun Esempio completo Conto bancario 2

Name Service Associa stringhe (nomi) ad object reference I client identificano i server semplicemente dal loro nome Indipendente dalla locazione del servizio Struttura a grafo = Naming Context = Oggetto = Object Reference Naming Context iniziale 3

ORB della Sun : Name Service tnameserv Parte sulla porta 900 Per cambiare porta tnameserv ORBInitialPort <porta> client e server con naming java client [-ORBInitialPort <porta>] 4

Name Service: l interfaccia NamingContextExt Lato server import org.omg.cosnaming.*; NamingContextExt nc = NamingContextExtHelper.narrow( orb.resolve_initial_references( NameService )); nc.bind(nc.to_name( HelloServer ),o); Lato client import org.omg.cosnaming.*; NamingContextExt nc = NamingContextExtHelper.narrow( orb.resolve_initial_references( NameService )); HelloServ helloserv = HelloServHelper.narrow( nc.resolve(nc.to_name( HelloServer ))); 5

Gestione Naming Context annidati import org.omg.cosnaming.*; org.omg.corba.object o = poa.servant_to_reference( new HelloImpl()); NamingContextExt rootctx = NamingContextExtHelper.narrow( orb.resolve_initial_references( "NameService")); NamingContextExt helloserverctx = rootctx.bind_new_context( rootctx.to_name( helloserverctx )); helloserverctx.bind( helloservctx.to_name( hello_1 ),o); rootctx helloserverctx hello_1 6

L interfaccia NamingContextExt module CosNaming interface NamingContext //... void bind(in Name n, in Object obj) raises (NotFound, CannotProceed, InvalidName, AlreadyBound); Object resolve(in Name n) raises... void bind_context(in Name n, in Object obj) raises... NamingContext bind_new_context(in Name n); NamingContext new_context(); }; }; void unbind(in name n) raises... void rebind(in Name n, Object obj) raises... void destroy(); 7

Sviluppo di applicazione CORBA: Conto Bancario Sviluppare un applicazione CORBA con la quale sia possibile gestire conti bancari; il conto è caratterizzato sicuramente da un numero di identificazione, dal titolare del conto e dal tipo di conto stesso. sul conto bancario devono poter essere eseguite le operazioni di prelievo e deposito; deve poter essere possibile visualizzare il saldo del conto e cambiare il tipo di conto; eventuali situazioni anomale (come prelievi non consentiti) devono essere esplicitamente segnalate. 8

Conto Bancario : IDL module Banca exception AmmontareInvalido }; exception PrelievoInvalido }; struct InfoConto long numeroconto; string titolareconto; string tipoconto; }; interface Conto readonly attribute InfoConto info; void cambiatipoconto(inout string tipo); void deposito(in long amount) raises(ammontareinvalido); long prelievo(in long amount) raises(ammontareinvalido,prelievoinvalido); long saldo(); }; }; 9

Conto Bancario : mapping in Java CORBA Java module Banca package Banca; exception AmmontareInvalido public final class AmmontareInvalido È una eccezione (classe che estende org.omg.corba.userexception) struct InfoConto attribute InfoConto info; readonly attribute public final class InfoConto Classe senza metodi con solo gli attributi definiti nello struct Si mappa in DUE METODI nell oggetto Conto public void info(infoconto var); public InfoConto info(); Si mappa in uno solo dei 2 metodi previsti per il mapping public InfoConto info(); 10

Conto Bancario : interfaccia Java package Banca; public interface ContoOperations Banca.InfoConto info(); void cambiatipoconto( org.omg.corba.stringholder tipo); void deposito(int amount) throws Banca.AmmontareInvalido; int prelievo(int amount) throws Banca.AmmontareInvalido, Banca.PrelievoInvalido; int saldo(); } 11

Conto Bancario : implementazione package Banca; public class ContoImpl extends ContoPOA private int _saldo; private InfoConto _infoconto; public ContoImpl(InfoConto infoconto) _saldo = 0; _infoconto = infoconto; } 12

Conto Bancario : implementazione public void deposito(int amount) throws AmmontareInvalido if (amount>=0) _saldo += amount; else throw new AmmontareInvalido("Ammontare Invalido."); } public int prelievo(int amount) throws AmmontareInvalido, PrelievoInvalido if (amount<0) throw new AmmontareInvalido("Ammontare Invalido."); _saldo -= amount; if (_saldo < 0) _saldo += amount; throw new PrelievoInvalido("Saldo insufficiente."); } return _saldo; } 13

Conto Bancario : implementazione public void cambiatipoconto(org.omg.corba.stringholder tipo) String old = _infoconto.tipoconto; _infoconto.tipoconto = tipo.value; tipo.value = old; } public int saldo() return _saldo; } public InfoConto info() return _infoconto; } 14

Conto Bancario : server ORB orb = ORB.init(args, null); POA poa = POAHelper.narrow( orb.resolve_initial_references("rootpoa")); ContoImpl conto_impl = new ContoImpl(infoConto); org.omg.corba.object o = poa.servant_to_reference(conto_impl); NamingContextExt nc = NamingContextExtHelper.narrow( orb.resolve_initial_references("nameservice")); nc.rebind(nc.to_name(""+infoconto.numeroconto), o); poa.the_poamanager().activate(); System.out.println("server started"); orb.run(); 15

Conto Bancario : client Gestione parametri inout/out org.omg.corba.stringholder nuovotipo = new org.omg.corba.stringholder(new String( )); contobancario.cambiatipoconto(nuovotipo); 16