Relevanta dokument
Johan.Sall.2535 Thomas.Wahlsten Distribuerade System HT 2002

Introduktion till arv

Laboration 2: Ett kommunikationssystem

Distribuerade system. CORBA eller RMI

Objektorienterad programmering D2

Repetition DK2 Middleware, P2P, Multimediatransport. Stefan Alfredsson 18 Mars 2005

OOP Objekt-orienterad programmering

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Övningar Dag 2 En första klass

%M UQ(LGHUElFN 1. Internetprogrammering 1999, 2D4334-föreläsning10a. Nätverk av datorer. CORBA: vad, varför, hur? Internetprogrammering F 10a

Distribuerad programmering med CORBA Föreläsning CORBA: vad, varför, hur?

OOP Objekt-orienterad programmering

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Classes och Interfaces, Objects och References, Initialization

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Objektorienterad programmering

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Imperativ programmering. Föreläsning 4

Objektorienterad middleware. OO-Middleware. Några centrala begrepp. Komponent vs objekt

OO-Middleware. Objektorienterad middleware

En snabb titt på XML LEKTION 6

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Objektsamlingar i Java

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

OOP Objekt-orienterad programmering

Skriftlig tentamen i kursen TDTS04 Datornät och distribuerade system kl. 8 12

SMD 134 Objektorienterad programmering

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

EnKlass. Instans 3 av EnKlass. Instans 2 av EnKlass

Skizz till en enkel databas

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Hjälpmedel för kompilatorkonstruktion, DVB004

Objektorienterad programmering

EDA095 Nätverksprogrammering

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Föreläsning 1 & 2 INTRODUKTION

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Att använda pekare i. C-kod

Kopiering av objekt i Java

LABORATIONSRAPPORT Säkerhet och Sårbarhet Laboration 1 Brandväggar

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

Objektorienterad programmering

Java, klasser, objekt (Skansholm: Kapitel 2)

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Tentamen OOP

AVCAD 4.0 for MS SQL-SERVER

Handbok Simond. Peter H. Grasch

UMEÅ UNIVERSITET 26 april 2002 Instutionen för datavetenskap. Grafproblem. Laboration 4, Datastrukturer och Algoritmer VT02

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Objektorienterad programmering i Java

Tentamen i Objektorienterad programmering

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Anteckningar 1: Grundläggande saker

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Behörighetssystem. Ska kontrollera att ingen läser, skriver, ändrar och/eller på annat sätt använder data utan rätt att göra det

Hogia Administration AB bedriver kontinuerlig utveckling av programmen och reserverar sig för avvikelse mellan program och handbok.

Enterprise Java Beans Assignment 1

Distribuerade System, HT03

Web Services. Cognitude 1

TDTS04: Ett chattsystem i java baserat på corba

Modeller, Objekt och Klasser

Programmeringsteknik med C och Matlab

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

Föreläsning 10. ADT:er och datastrukturer

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Transport Layer. Transport Layer. F9 Meddelandesändning med UDP EDA095 Nätverksprogrammering. Java och UDP TCP/UDP

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Åtkomst och användarhandledning

Installation av. Vitec Online

Grundläggande programmering med C# 7,5 högskolepoäng

Smartair System. TS1000 Version 4.23

Allmänna anvisningar: Skriv dina svar på svarsblanketten (se nästa sida) Markera och ange alla svar tydligt och entydigt efter instruktionerna.

Arv. Objektorienterad och komponentbaserad programmering

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Polymorfi. Objektorienterad och komponentbaserad programmering

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

PM 01 En jämförelse av två analysmodeller för val av komponentteknik

Tentamen TEN1 HI

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

Programmering A. Johan Eliasson

Objekt, Klasser, Paket m. m.

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Hogia Transaktionsanalys Proffs

Design och underhåll av databaser

DELPROV 1 I DATAVETENSKAP

Namn: (Ifylles av student) Personnummer: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

Innehåll Introduktion... 3 InteractiveScene.config... 3 Scener <scenes>... 3 Typsnitt <fonts>... 3 Övergångar <transitions>...

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Utvärdering av protokollet SOAP

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Transkript:

Förra föreläsningen: Olika nivåer av meddelanden. Från oblockad sändning till. RPC: Parameterpassning, registrering, felhantering, säkerhet, kompilering ONC RPC: XDR, portmapper Brandväggar, dynamisk brandväggskonfigurering, proxies, relays (vad behövs för att köra RPC genom en brandvägg?) Idag: RMI, CORBA 1

Tydlig parallell med Remote Procedure Call Men skillnaden finns där: RMI är objekt-orienterat. RMI bygger på JVM (Java Virtual Machine). Inget speciellt språk för datatypsdeklaration (som XDR). Använder -deklarationer istället. 2

Väldigt förenklat (på gränsen till lögn): Objektorienterat språk. Både kompilerat, och interpreterat. Interpretationen av den kompilerade koden,, sker i en miljö som heter JVM. Bytekoden är plattformsoberoende. Varje klass ligger normalt i en egen.java-fil. Vid kompileringen skapas en.class-fil som innehåller bytekoden. Länkning sker dynamisk och sker via inladdning av.classfiler. 3

Väldigt förenklat (på gränsen till lögn): Datatyperna är antingen primitiva (int, long, boolean, mfl), eller objektstyper (referenstyper). Storleken på de primitiva datatyperna är plattformsoberoende. Endast referenser lagras till objektstyperna. Automatisk minneshantering finns ( ) som rensar objekt utan referenser. Ett språk för Internet. anpassat för IP. Inbyggt stöd för trådar (inkl synkroniseringsmekanismer) 4

- - - - - 5

1. Dataöverföring och parameterpassning. RMI utnyttjar det faktum att JVM och Javas typer är binärkompatibla. Dataöverföringen bygger på att typer är. (java.io.serializable) Det finns tre typer av parameterpassning: Primitiva typer: Call-by-value Objekttyper: Call-by-copy (skiljer sig från Java) Fjärrobjekttyper: Call-by-reference (som Java). Deklararas som interface 6

2. Registrering Portmappern måste startas. I det här fallet: rmiregistry. Den opererar normalt på port 1099. Kommunikationen sker utanför rmiregistry. Servern: Binder ett objekt (av referenstyp) till ett namn (sträng) hos rmiregistry. Exempel: Naming.rebind( rmi://peppar/myserviceobject, object); Klienten hittar objektet med: Nåja, nästan. Naming.lookup( rmi://peppar/myserviceobject ); 7

3. Felhantering The OO way: Exceptions Vanligast: java.rmi.remoteexception. Kan vara exempelvis en ConnectException. Dessa tvingas man att ta hand om. (Bra) Snyggt är att Exception ärver av Throwable, som implementerar Serializable. Vad innebär det? Jo, man kan kasta alla Exceptions, även de egendefinierade. 8

4. Säkerhet Men, man kan byta ut kommunikationslagret mot sin egen SocketFactory. 9

5. Kompilering Vid överföring av referensobjekt (exemplevis det objekt man binder), krävs det att man: 1. Kompilerar interface-deklarationen, som ärver av java.rmi.remote. 2. Kör rmic för att generera stubbe och skelett. 3. Kompilerar implementationsklassen. För de andra typerna (primitiva och objektstyper), behöver man inte gör något särskilt (förutom att ärva java.io.serializable) 10

Två implementationer av den körkortsdatabas vi implementerade mha ONC RPC förra gången. En där vi helt enkelt frågar efter körkortet och får det returnerat (väldigt lika ONC RPC-exemplet) Och en där vi i stället för ett körkort får en referens till ett körkort. Och koden, den hittar ni under: och 2 * 1 0 /. +!-#!,, +*!''!) $ (' &% %!$ # #!" 11

Licens -databas. Fem klasser: License: Innehåller bara data, en konstruktor och en hjälpmetod. LicenseDatabase: Innehåller ett interface, som visar vad vi kan göra med databasen. LicenseDatabaseImpl: Implementationen av denna databas. LicenseServer: Enkel klass, som binder implementationen till namnet LicenseDatabaseService. LicenseClient: Hämtar en referens till databasen, genom att fråga efter LicenseDatabaseService, och ställer en fråga. 12

5 4 6 7 8 3. Servern registrerar LicenceDatabaseImpl som en LicenseDatabase LicenseDatabase rmiregistry. Klienten frågar efter LicenseDatabaseService, får en LicenseDatabase LicenseDatabase LicenseServer LicenseDatabaseImpl. Serverns LicenseDatabaseImpl får anropet, returnerar en License LicenseDatabase License. License överförs som vanligt (endast data) LicenseClient. Klienten anropar LicenseDatabase:ns getlicense med en int, som överförs som vanligt, tillsammans med en referens till LicenseDatabase. Klienten anropar License:ns mytostring, som ett vanligt, lokalt, metodanrop. 13

Starta tre X-fönster varav två på samma maskin. Gå till biblioteket med källkoden i alla fönster. Gör make. I fönster 1: /opt/jdk/1.2.2/bin/rmiregistry I fönster 2 (på samma dator som fönster 1): /opt/jdk/1.2.2/bin/java LicenseServer I fönster 3: /opt/jdk/1.2.2/bin/java LicenseClient Varför måste fönster 1 och 2 vara i på samma dator? 14

Sex klasser: LicenseDatabase, LicenseDatabaseImpl, LicenseServer, LicenseClient: som tidigare (fast med nya funktioner) License: Nu ett interface till en (fjärr)referensklass. LicenseImpl: Implementationen av License. Ett undantag: LicenceNotFound Nu måste vi köra rmic två gånger: En gång för License och en gång för LicenseDatabaseImpl. 15

9 : ; @ > =? < A. LicenseDatabase rmiregistry LicenseDatabase LicenseServer License LicenseDatabaseImpl License LicenseImpl String. LicenseDatabaseImpl får anropet, returnerar en License, som är en referens till en LicenseImpl. LicenseImpl får anropet, returnerar en String, som är en serialiserbar typ, och därför.... skickas den som vanligt data.. LicenseDatabase LicenseClient.. Licensereferensen överförs som referens. Klienten anropar mytostring på Licensen. Men eftersom det är en referens, så. skickas den tillbaka till servern. 16

Kraftfull modell, ger snygg transparens mellan lokala och perifera (centrala) objekt. Ger en delikat avvägning: Var ska egentligen objekten finnas? ( vilka objekt ska vara RemoteObjects och vilka ska vara Serializable?) Fördelar med lokala objekt: Snabb åtkomst. Fördelar med centrala objekt: Kan fungerar som referenser till databaser. Servern har fortfarande kontroll över vilken information som lämnas ut. 17

Servern kan utföra genom att klienten skickar över RemoteObjects som refererar till egna, lokala, objekt. Genom att servermetoden anropar metoder i dessa objekt, så kan klienten få information om framåtskridande, varningar mm. Hur kan klienten skicka - information till servern? Jo, genom att anropa ytterligare en metod! RMI implementerar en distributed garbage collection, DGC, som hanterar fjärreferenser till lokal objekt. (Varför? Och, vad händer om en klient dör?) RMI har stöd för automatisk distribution av klasser (kod)! Överkurs. 18

RMI är konstruerat med tanke på brandväggar: Endast en TCP-uppkoppling mellan datorerna används. Kommunikationen på den uppkopplingen. RMI kan operera via HTTP-protokollet. proxy http http säkerhetshål RMIklient webserver RMIserver 19

En snabb politisk överblick: OMG: Object Management Group. Grundades 1989 av 8 företag (bl a 3Com, HP, Philips, Sun). Hade 750 medlemmar 1997, världens största industrikonsortium. CORBA Common Object Request Broker Architecture: En specifikation för bland annat hur en ORB fungerar. 20

1. Dataöverföring och parameterpassning. CORBA är avsett för många plattformar. Vi kan därför inte utnyttja Javas binärkompabilitet på samma sätt som RMI gör. Nej, vi får ta till ett nytt språk: IDL, Interface Definition Language (jfr XDR). Språket innehåller allt man kan tänka sig: primitiva typer (hårt definierade), structar, unions, sekvenser, exceptions, moduler, osv. 21

1. Dataöverföring och parameterpassning. Koppling till Java görs med idltojava. Detta kommando skapar: Interface-deklarationer Stubbar Skelett Hjälpklasser (exvis Holders, för och - parametrar) Obs: Både case-sensitive och inte..! 22

2. Registrering CORBA klarar sig utan portmapper! Men, då får man lov att hitta en IOR (Interoperable Object Reference) till det objekt man vill komma åt. Givetvis finns det även sätt att registrera objekt. Det görs med Naming Service. Ett sådant program är tnameserv (Transient Name Server). (Detalj: defaultar till port 900, ändras med ORBInitialPort) 23

3. Felhantering CORBA använder undantag. Men man måste deklarera dem själv. CORBA-modulen självt använder av 26 standardundantag. Varje sådant undantag har en flagga, som sätts till något av COMPLETED_YES, COMPLETED_NO, COMPLETED_MAYBE, tillsammans med en underkod. 24

4. Säkerhet CORBA Security Service: Identification and authentication Authorization and access control Auditing Communications security Nonrepudiation Administration of security policy Överkurs 25

5. Kompilering För Java: Skapa en IDL-fil med deklarationerna (med, säg klass ) och kör idltojava. Skapa klassen Impl (t ex) och utöka _ ImplBase. Skapa serverklass (med main) som skapar en ORB och en instans (objekt) av Impl och eventuellt binder objektet till ett namn. Servern ska sedan vänta. 26

5. Kompilering Skapa en klientklass (med main) som med hjälp av antingen en explicit IOR eller Naming Service, hittar ett org.omg.corba.object. Använd sedan narrow för att få en referens till en. 27

Två kommunikationsprotokoll finns specificerade: General Inter-ORB Protocol (GIOP) För kommunikation utan transportprotokoll. Specificerar bland annat. Men, det finns även funktioner för kommunikation genom HTTP-proxies. Internet Inter-ORB Protocol (IIOP) Specialisering av GIOP för kommunikation över TCP. 28

Tidigare sågs Java ORB och RMI som konkurrenter. Detta börjar lösas upp: RMI börjar stödja IIOP som transportprotokoll. OMG justerar sin object-by-value så att den är kompatibel med RMI. RMI blir till en speciell form av Java ORB som döljer IDL-skapandet för användaren. Finns fortfarande frågetecken. 29

java.sun.com can t live without it www.omg.org (och www.corba.org) (Utdelad litteratur: http://www.infosys.tuwien.ac.at/research/corba/archive/intro/osr.ps.gz) 30