CORBA in MOMIS MOMIS: Mediator envirOnment for Multiple Information Sources.

Slides:



Advertisements
Presentazioni simili
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Advertisements

Programmazione in Java
Architetture dei sistemi distribuiti Prof
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
Web Services.
Java Enterprise Edition (JEE)
MultiSet, Liste Ordinate
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
una interfaccia internet per il sistema Momis
INTEGRAZIONE MULTILINGUA DI PUBBLICA AMMINISTRAZIONE: SIAM
Progetto e realizzazione di un wrapper XML Schema per il sistema MOMIS
Università degli studi di Modena e Reggio Emilia
Il sistema MOMIS Il progetto MOMIS (Mediator EnvirOnment for Multiple Information Sources) consiste nella realizzazione di un sistema intelligente di.
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica – Nuovo Ordinamento Analisi.
UNIVERSITA DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica Progetto e sviluppo di.
Re-engineering del wrapper XML Schema per il sistema MOMIS
Università degli Studi di Modena e Reggio Emilia Facoltà dIngegneria - sede di Modena Corso di Laurea in Ingegneria Informatica Interoperabilità di componenti.
Università degli Studi di Modena e Reggio Emilia
UNIVERSITA DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria – Sede di Modena Corso di Laurea in Ingegneria Informatica MOMIS: servizi di wrapping.
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria di Modena Corso di Laurea in Ingegneria Informatica Integrazione di WordNet Domains.
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
Introduzione ai Web Services. E' un nuovo meccanismo RPC ottimizzato per l'uso in Internet Un qualunque Client su una generica piattaforma deve poter.
Distributed Object Computing
1 Basi di dati e Web Prof. Stefano Paraboschi Prof. Barbara Pernici.
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
Remote file access sulla grid e metodi di interconnesione di rete M. Donatelli, A.Ghiselli e G.Mirabelli Infn-Grid network 24 maggio 2001.
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Uso di openafs Come usare il tool openafs per accedere e gestire i propri files sotto AFS.
Un introduzione a Java Ant per lutilizzo con Swarm Marco Lamieri 13/04/2004.
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
Ingegneria del software I
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Sistemi Operativi GESTIONE DEI PROCESSI.
Introduzione ad ASP.net
1 L!ve T!tle: software per la consultazione degli andamenti dei titoli di borsa online Reti di Calcolatori LS Nuzzi Nicola Mat
Meteo Service Corso di Reti di Calcolatori LS Casarini Stefano matr
Ing. Enrico Lecchini BetaTre S.r.l.
1 Reti di Calcolatori LS Prof. Antonio Corradi Progetto: Giombi Giorgio e Soffritti Luca Presentazione: Giombi Giorgio FotoContest Il primo servizio interamente.
1 w w w. g a t 4. c o m WI GAT WebIngelligence rappresenta una piattaforma funzionale e tecnologica per la creazione e gestione di un datawarehouse che.
Sistemi Informativi sul Web
Ingegneria del software Modulo 3 -Tecniche dimplementazione Unità didattica 2 -EJB Ernesto Damiani Università degli Studi di Milano Lezione 4 – Le transazioni.
I nomi in Java F. Bombi 18 novembre novembre 2003.
Vannucci Roberto (5BM), De Nardin Axel (5AM)
Protocolli e architetture per WIS. Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di.
Java Enterprise Edition
ODMG. L’ODMG L’Object Data Management Group è un consorzio di produttori di ODBMS che ha proposto uno standard per: il modello a oggetti il linguaggio.
FUNZIONI Dichiarazione: Definizione:
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
Laboratorio di Servizi Web - servlet - Ardissono 1 Java Servlet API package javax.servlet: include classi e interfacce di gestione di servlet indipendenti.
Eprogram informatica V anno. ASP.NET Introduzione ASP.NET (Active Server Page) è il linguaggio che, sfruttando la tecnologia.NET, permette di: -scrivere.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Ingegneria del software Modulo 3 -Tecniche d’implementazione Unità didattica 2 -EJB Ernesto Damiani Università degli Studi di Milano Lezione 1 – Introduzione.
Java & JESS Ettore Colombo 10 Gennaio 2007 Ingegneria della Conoscenza e Sistemi Esperti.
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Servizi Internet Claudia Raibulet
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
E Windows SharePoint Services 2.0 Ivan Renesto Document Library how to use Windows SharePoint Services.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Ingegneria del software Modulo 3 -Tecniche d’implementazione Unità didattica 1 -Ingegneria dei componenti Ernesto Damiani Università degli Studi di Milano.
Layered Grid Architecture. Application Fabric “Controlling elements locally”: Access to, & control of, resources Connectivity “Talking to Grid elements”:
Hattrick Stadium Corso di Reti di Calcolatori LS Anno Accademico 2005/2006 Dolif Emilano matr
Eprogram informatica V anno.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
MOMIS WordNet Service level legenda ODB-Tools Global Schema METADATA REPOSITORY Global Schema METADATA REPOSITORY CORBA Object User GUI Data level Global.
ASP – Active Server Pages - 1 -Giuseppe Tandoi ASP – Active Server Pages Tecnologia per lo sviluppo di pagine dinamiche.
Transcript della presentazione:

CORBA in MOMIS MOMIS: Mediator envirOnment for Multiple Information Sources

Perché CORBA in MOMIS CORBA è una tecnologia per l’integrazione e MOMIS allo stato attuale necessita di essere integrato. CORBA è ad oggetti e MOMIS allo stato attuale necessita di essere ri-modellato per ridurne la complessità: esistono metodologie consolidate per la rappresentazione e progettazione di sistemi ad oggetti (OMT o UML) per utilizzare un oggetto è sufficiente conoscerne l’interfaccia pubblica CORBA è uno standard che sta prendendo piede.

L’esempio ODB-Tools

ODB-Tools Visione object interface OdbTools { string translate_Odl_Olcd ( in string odl, out string olcd ); string translate_Odl_Olcd_vf ( in string odl, out string olcd, out string vf ); string validate_Odl ( in string odl, out string fc ); string validate_OdlSS ( out string fc ); string validate_OdlSS_vf ( out string fc, out string vf ); string optimize_Oql ( in string odl, in string oql, out string stdOut ); string optimize_OqlSS ( in string oql ); string optimize_OqlSS_vf ( in string oql, out string vf ); long killServer(); };

Utilizzo di ODB-Tools CORBA Invocazione del Query Optmizer da Java s = myRef.optimize_Oql(stringOdl, stringOql, stringStdOut); Oppure myRef.translate_Odl_Olcdql(stringOdl, stringOlcd); myRef.validate_OdlSS(stringFc); myRef.optimize_OqlSS (stringOql); Dove l’oggetto myRef è il riferimento ad un oggetto CORBA di tipo OdbTools residente su sparc20.dsi.unimo.it che si preoccupa di lanciare i comandi odl_trasl, ocdl-designer e odbqo e gestisce anche i file temporanei necessari alla corretta esecuzione di ODB-Tools.

MOMIS Visione Object Significa isolare per ogni entità metodi d’interfaccia che corrispondono alle funzionalità fornite.

Interfaccia Momis OO interface Wrapper{ string getOdlDescription(); MomisCollection executeQuery(string oql); }; interface MomisFactory{ GlobalSchema newQueryManager( MomisList, GlobalSchema schema); }; interface QueryManager{ MomisCollection executeQuery(string oql); }; Questo è un punto da studiare approfonditamente

Purtroppo CORBA è piuttosto complesso... CORBA: Common ORB Architecture

ORB sta per Object Request Broker ed è un oggetto in grado di gestire le chiamate di metodi tra oggetti registrati presso tale ORB oppure registrati presso altri ORB. La comunicazione tra ORB è standardizzata, si utilizza il IIOP (Internet Inter Orb Protocol) parlare con altri ORB. Vi possono essere diverse implementazioni di ORB. Un OBB deve implementare un numero limitato di servizi. CORBA: Common ORB Architecture (2)

Naming Service Event Service Life Cycle Service Persistent Object Service Transaction Service Concurrency Control Service Relationship Service Externalization Service Query Service Licensing Service Property Service Time Service Security Service Object Trader Service Object Collections Service Servizi CORBA previsti dallo standard

Client e Server devono condividere la medesima interfaccia (IDL) Connessione CORBA ODB-Tools

Nomenclatura oggetti CORBA oggetti client CLIENT:È l’oggetto che utilizza i servizi offerti dagli oggetti CORBA server oggetti server SERVANT:Si tratta della categoria di oggetti in grado di fornire il servizio richiesto. Ad esempio tutte le funzionalità di ODB-Tools sono dichiarate come metodi di un oggetto servant. Normalmente per ogni oggetto client è creato un oggetto servant. FACTORY:Si tratta di un oggetto di riferimento attraverso il quale è possibile creare nuovi oggetti servant. Questo oggetto è visibile tramite il naming service

Nomenclatura oggetti CORBA(2) CLIENT:Qualunque oggetto può essere client di altri oggetti corba. Normalmente l’applicazione attraverso la quale l’utente utilizza il sistema è un tipico esempio di applicazione solo client. FACTORY:Normalmente si tratta di oggetti residenti, di demoni fatti partire una volta e si tratta di punti di rifermento per gli oggetti client. Questo oggetto è visibile tramite il naming service e si tratta di una sorta di punto di accesso al servizio. Oggetti Factory solitamente generano nuovi oggetti servant che sono quelli che forniscono il servizio o sono oggetti di comodo per il trasporto di informazioni (es: liste o resultSet). Per questi ultimi occorre gestire un eventuale Time-out.

Compiti degli oggetti ODB-Tools

OdbToolApplication.idl module OdbToolsApplic { interface OdbTools { string translate_Odl_Olcd ( in string odl, out string olcd );... string optimize_OqlSS_vf ( in string oql, out string vf ); long killServer(); }; interface OdbToolsFactory { OdbTools newServant ( in string description ); }; Interfaccia IDL ODB-Tools

try{ orb = ORB.init( {"-ORBInitialHost”, orbServerName, "-ORBInitialPort"; orbPort}, null); OdbToolsFactory_server myRef = new OdbToolsFactory_server(“odbt”); orb.connect(myRef); org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService"); NamingContext ncRef = NamingContextHelper.narrow(objRef); NameComponent nc = new NameComponent(“odbt”, ""); NameComponent path[] = {nc}; ncRef.rebind(path, myRef); java.lang.Object sync = new java.lang.Object(); synchronized(sync){ while (true) { sync.wait(timeBetweenCeckTimeOut); myRef.checkTimedOut(); } } } Inizializzazione Factory

ORB orb; org.omg.CORBA.Object objRef; NamingContext ncRef; NameComponent nc; OdbToolsFactory factoryObj; OdbTools myRef; String serverName = "odbt"; try{ orb = ORB.init(args, null); objRef = orb.resolve_initial_references("NameService"); ncRef = NamingContextHelper.narrow(objRef); nc = new NameComponent(serverName, ""); NameComponent path[] = {nc}; factoryObj = OdbToolsFactoryHelper.narrow(ncRef.resolve(path)); try { hn = "" + InetAddress.getLocalHost(); } catch(Exception e1) { } myRef = factoryObj.newServant("DemoClient " + hn); … s = myRef.optimize_Oql(stingOdl, stringOql, stdOut);... Inizializzazione Client

public OdbToolsApplic.OdbTools newServant (String description) { OdbTools_server rv; long currentNumber = _servantId++; String filePrefixName = _name + "_" + currentNumber; // // // Creo un nuovo Servant ! logScrivi("Creating new ODB-Tools servant [" + description + "], prefix: [" + filePrefixName + "]"); rv = new OdbTools_server(filePrefixName, this); // // Inserisco il servant nella lista di time-out _timeOutManager.add(rv, timeBeforeTimeOut); // // Collego il servant all'ORB OdbToolsFactory_server.orb.connect(rv); return rv; } Inizializzazione Servant

Proposta di wrapper sorgenti JDBC interface Wrapper { /* Get the description of teh source in ODLi3. */ string getDescription(); /* Executes a Query OQL on the GlobalSchema specified */ MomisResultSet runQuery( in string oql ); };

Proposta MOMIS OO

Operazioni da compiere I compiti da svolgere sono: progettazione interfaccia SchemaBuilder (+interfaccia utente) progettazione interfaccia Sim1 progettazione interfaccia Artemis tuning interfaccia OdbTools (solo se ritenuto utile) progettazione interfaccia QueryManager tuning del Wrapper JDBC progettazione interfaccia WordNet e wrapping in CORBA

Home Page di MOMIS Directory su sparc20 /export/home/httpd/htdocs/Momis/prototipo /export/home/httpd/htdocs/Momis/prototipo/wrappers /export/home/httpd/htdocs/Momis/prototipo/schemaBuilder /export/home/httpd/htdocs/Momis/prototipo/queryManager /export/home/httpd/htdocs/Momis/prototipo/wordnetInteraction File indice: index.html Documentazione Progetto

Directory su sparc20 /export/home/progetti.comuni/Momis/CORBA_Momis /export/home/progetti.comuni/Momis/CORBA_ODBTools ODB-Tools Files: Tools TimeOut_able, TimeOutManager UnixCommand createDoc Makefile (, doc, clean) Directory per lo sviluppo

/export/home/progetti.comuni/Momis/prototype 0setVarsCshInizializza le variabili d’ambiente 0setVarsShInizializza le variabili d’ambiente CORBA_Momis/Direttorio oggetti Momis (GlobalSchema, QM) CORBA_ODBTools/Direttorio interfaccia Odb-Tools CORBA_wrapperJDBC/Modulo wrapper JDBC doc/Documentazione generata con JavaDoc Makefilescript per compilare i sorgenti momis.confFile di configurazione di tutti i moduli MomisApplic.idlInterfaccia per i vari oggetti MOMIS MomisApplic/Prodotto da IdlToJava da MomisApplic.idl setMomisCLASSPATHSistema il classpath per lavorare al sistema MOMIS startMomisScript per far partire/fermare i vari moduli tools/Contiene classi di utilita’ varia trash/Contiene file “inutili” o da cancellare var/Contiene i file di log dei vari moduli Il direttorio di sviluppo

/export/home/progetti.comuni/Momis/prototype/CORBA_wrapperJDBC 0note.txtNote varie sul codice createDocScript per la creazione della documentazione MakefileScript per compilare i sorgenti WMomisResultSet.javaImplementazione di un oggetto MomisResultSet JDBC Wrapper_server.javaImplementazione wrapper JDBC WrapperClient.javaEsempio di client per il wrapper Il direttorio di sviluppo Wrapper java -cp $CLASSPATH Wrapper_server../momis.conf echo 'd x ' | java -cp $CLASSPATH WrapperClient -ORBInitialHost sparc20.dsi.unimo.it -ORBInitialPort 1050 java -cp.;.. Wrapper_server..\momis.conf

JC = javac -classpath $(CLASSPATH) CC = gcc JAVA_HOME = /usr/java all: server client clean: rm -rf doc find. -name "*.class" | xargs rm -f find. -name "*~" | xargs rm -f server: Wrapper_server__compile client: WrapperClient__compile Wrapper_server__compile: $(JC) Wrapper_server.java WrapperClient__compile: $(JC) WrapperClient.java Il Makefile per il Wrapper

Java Api Java Tutorial Java IDL Documentation page (dalla pagina delle API) Introduction to CORBA in Java Object management Group Corba su Sparc20 (specifica completa + services anche se un pò datati) Riferimenti CORBA e Java

Configurazione del forward della posta in sistemi unix. È sufficient utilizzare il file $HOME/.forward vedere Consigli pratici