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

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


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

(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

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

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

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

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

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

DAT043 Objektorienterad Programmering

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Objektorienterad Programmering (TDDC77)

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

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

Classes och Interfaces, Objects och References, Initialization

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Objektorienterad Programmering (TDDC77)

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Arrayer. results

DAT043 - Föreläsning 7

TDDC77 Objektorienterad Programmering

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

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

Att skriva till och läsa från terminalfönstret

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

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Java, klasser, objekt (Skansholm: Kapitel 2)

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Föreläsning 2, vecka 8: Repetition

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

DAT043 - föreläsning 8

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Objektorienterad programmering

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Generiska konstruktioner. Kursbokens kapitel 13

Kopiering av objekt i Java

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 2 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

Programmering för språkteknologer I, VT2012. Rum

Distribuerade system. CORBA eller RMI

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

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

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

Objektorienterad Programmering (TDDC77)

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Tentamen ID1004 Objektorienterad programmering April 7, 2015

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Laboration 1: Figurer i hierarki

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

F4. programmeringsteknik och Matlab

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Objektorienterad Programmering (TDDC77)

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

TDIU01 - Programmering i C++, grundkurs

Objektorienterad programmering i Java

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

OOP Objekt-orienterad programmering

Typkonvertering. Java versus C

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

OOMPA 2D1359 Föreläsning 3

Laboration 1 - Grunderna för OOP i Java

Transkript:

Distribuerad programmering med Föreläsning 16 16 : vad, varför, hur? Innehåll Datornätverk Behov och krav Historik, principer, arkitektur och beståndsdelar Exempel i Java Läs också den utmärkta och konkreta tutorialen som du du hittar på på följande adress: http://www.javasoft.com/docs/books/tutorial/idl/index.html previous next

Nätverk av datorer Idag har vi ett behov av att kommunicera mellan olika datorer och annan hårdvara Vi vill kunna använda olika sätt att lösa ett problem, tex mha olika programmeringsspråk Vi vill ha kostnadseffektiva lösningar Vi vill inte binda oss till en viss leverantör Troligen finns mycket programvara, ny eller gammal, av olika slag i organisationen previous next 2

(Common Object Request Broker Architecture) Standardisering av distribution konstruerad av OMG (Object Management Group) OMG en sammanslutning av flera hundra (>600) intressenter för att standardisera objekttekniker Digital, HP, SUN, IBM, Oracle, Netscape, Microsoft, Ericsson mfl Avsikt att konstruera ett språk- och plattformsoberoende objektorienterat system för distribution Tillåter konstruktion av applikationer som kommunicerar över både plattforms- och språkgränser minimerar beroendet av både hårdvara och programmeringsspråk enklare att använda mjukvara från olika leverantörer previous next 3

...... Baserad på en server-klient-modell en server erbjuder service en klient utnyttjar den på en viss plattform kan vissa objekt ta rollen av servrar medan andra tar rollen av klienter ibland tar noderna rollen av både server och klient samtidigt, dvs så kallad peer-to-peer kommunikation Finns bindningar till flera programspråk C++, ADA, Smalltalk, Java, C, COBOL,... previous next 4

... STARTA... Starta namnserver dvs starta det objekt/program som ansvarar för att hantera namngivna delade (/distribuerade) objekt Starta server med objekt bind objektet till namnservern låt servern vänta på att klienter skall kommunicera med dess objekt Starta klienter och anslut till servern fråga namnservern om referens till visst objekt skicka meddelanden till objektet previous next 5

...... Meddelanden mellan klient och server förmedlas av en mäklare, Object Request Broker (ORB) dom går aldrig direkt utan alltid via ORBen Både klient och server isolerar implementationen av klasser med hjälp av IDLer (Interface Description Language) Objektets Klient implementation IDL Stubbe IDL Skelett Meddelande (Request) Object Request Broker previous next 6

... På serversidan definierar ett så kallat skelett API:et för ett serverobjekt previous next 7 På klientsidan beskrivs serverns objekt med en så kallad stubbe Ett protokoll som heter IIOP (Internet Inter-ORB Protocol) definierar hur transport av objekt och meddelanden mellan server och klienter på binär nivå sker IIOP specificerades i 2.0, tidigare var inte denna del standardiserad vilket gjorde att olika implementationer gjorde på sina egna sätt.

innehåller flera services Några viktiga är Lifscykel, grundläggande mekanismer för att skapa, initiera, ta bort objekt mm Relations, hanterar relationer mellan objekt Namn, namnger delade objekt så att flera klienter unikt kan referera dem Persistens, hanterar persistenta objekt, dvs objekt som är långlivade Extern lagring, kan flytta objekt mellan intern och externa lagringsformer Transaktion, ger en infrastruktur för att hantera transaktioner Händelse, låter objekt kommunicera mha händelser Parallellkontroll, koordinerar objekt och access till delade resurser Några andra (ett urval) Trader, erbjuder sätt att "hitta" objekt utgående önskad service Säkerhet, erbjuder säkerhetsmekanismer som identifiering och auktorisering Time, för synkronisering av händelser, hantering av alarm och liknande previous next 8

Kommunikationen mellan klienter och servrar Lös koppling till plattform, programspråk och detaljer mha Adaptorer som döljer skillnader Brokers förmedlar meddelanden Bryggor mellan protokoll det finns bryggor mellan olika protokoll previous next 9

och API-beskrivningar I beskrivs gränssnitten (API:erna) för objekten med så kallade IDL:er, dvs grässnittsbeskrivningar. En IDL påminner till stor del om Java:s gränssnittsbeskrivningar (dvs Java:s interface). En IDL kan dock innehålla konstruktioner som har sitt ursprung i C/C++, som tex typedef, struct och sequence Vidare deklareras parametrar till metoder som antingen in, parameterns värde skickas med som argument till metoden, dvs den typ av parameteröverföring Java använder sig av out, parameterns värde sätts i metoden och anropande variabel förändras inout, parametern används som både in och out samtidigt Gränssnitt organiseras så att ett eller flera gränssnitt definieras i en modul (eng. module) previous next 10

Exempel: Steg 1) Gör gränssnittsbeskrivning module MyApp { modulenamnet blir ett package i Java då vi "kör" idltojava }; interface MyInterface { string mymethod(); }; s string blir sedan String i Java då vi implementerar motsvarande Java-interface (via idltojava) och IDL-interfacet blir ett vanligt Java-interface previous next 11

Steg 2) På serversidan... I koden på serversidan kontaktar vi först aktuell ORB Därefter skapar vi en referens till namnservern Vi skapar ett serverobjekt (dvs en vanlig instans i Java) och "registrerar" det hos namnservern Till slut låter vi servern vänta på att serva anslutande klienter (Vi kan självklart registrera flera objekt på servern om vi vill) previous next 12

... så här ser det ut i Java... Skapa referens till ORB (args innehåller adress för namnservern) ORB orb = ORB.init(args, null); Fråga ORB om namnserver org.omg..object nameserviceref = orb.resolve_initial_references("nameservice"); Gör om referensen till ett namnkontextobjekt NamingContext ncref = NamingContextHelper.narrow(nameServiceRef); Skapa ett en instans av ett objekt som implementerar MyInterface och registrera det i ORBen MyServerClass objectref = new MyServerClass(); orb.connect(objectref); previous next 13

... serversidan... Konstruera ett namnkomponentobjekt med ett namn för objektreferensen som vi vill dela NameComponent nc = new NameComponent("MittObjektNamn", ""); NameComponent path[] = {nc}; Bind objektet objectref till namnet path i namnservern, så att klienter kan referera till det. Dvs om någon klient sedan ber namnservern om ett objekt med detta namn så får den en referens till objectref. ncref.rebind(path, objectref); Vänta på att klienter skall ansluta java.lang.object sync = new java.lang.object(); synchronized (sync) {sync.wait();} previous next 14

Steg 3) Konstruera klient På klientsidan refererar vi ORBen på samma sätt som på serversidan, dvs Vi kontaktar namnservern Vi ber namnservern om referens till namngivet objekt Vi skickar meddelanden till objektet (självklart kan vi be namnservern om flera objekt och hantera alla dessa parallellt på klienten) previous next 15

... så här ser klientens kod ut i Java... Skapa referens till ORB (args anger adress för namnservern även här) ORB orb = ORB.init(args, null); Fråga ORB om namnserver org.omg..object nameserviceref = orb.resolve_initial_references("nameservice"); Gör om referensen till ett namnkontextobjekt NamingContext ncref = NamingContextHelper.narrow(nameServiceRef); Konstruera ett namnkomponentobjekt med samma namn som det objekt som skapades på serversidan (som synes på exakt samma sätt också) NameComponent nc = new NameComponent("MittObjektNamn", ""); NameComponent path[] = {nc}; previous next 16

... klientsidan... Be namnservern om en referens till det objekt som har samma namn som namnkomponentobjektet MyInterface objectref = MyInterfaceHelper.narrow(ncRef.resolve(path)); Omvandla referensen till ett Java-objekt som implementerar interfacet Be namnservern om generiskt objekt med givet namn Skicka meddelande till serverobjektet (på exakt samma sätt som ett meddelande till ett icke distribuerat objekt) String result = objectref.mymethod(); System.out.println("Serverobjektet svarade: " + result); previous next 17

Konstruera klass och IDL Konstruera en IDL-beskrivning av gränssnittet mot klassen som konstrueras server och klient kan ha olika definitioner (fast ofta används likadan IDL för både server och klienter) Generera hjälpklasser i JDK1.2 används kommandot idltojava Skriv server med klassbeskrivning och instans för objektet som klienter skall kunna kommunicera med Registrera objektet i ORBen och associera det med globalt namn (så att den unikt kan identifieras hos server och alla klienter). Vanligen används namnserver. Skriv klienter som via ORB och (vanligen) namnserver refererar serverobjektet och sedan skickar meddelanden till det previous next 18

IDL (Interface Description Language) Ett programspråksneutralt sätt att beskriva en klass Några huvuddelar: statiskt typat "fördefinierade" primitiva typer med long, float, boolean, char, void, any osv metoder och argument deklareras med typ moduler som innehåller gränssnittsbeskrivningar gränssnitt (Interface) Kan användas som typ Kan ärva från andra interface Javas Interface har stora likheter med s interface datatyper, konstanter, operationer, fält, parametrar parametrar deklareras med typ och som in, out eller inout undantagshantering (exceptions) undantag som skall kastas av metoder i klass deklareras i interfaces any motsvarar Javas Object previous next 19

... IDL exempel, modul med fyra gränssnitt... module CosEventComm { exception Disconnected {}; Undantag deklareras på detta sätt event_data:s värde skickas med som argument interface PushConsumer { void push (in any event_data) raises (Disconnected); void disconnect_push_consumer ();}; interface PushSupplier { void disconnect_push_supplier ();}; interface PullConsumer { void disconnect_pull_consumer ();}; Kan kasta undantag has_event ges värde i metoden try_pull }; interface PullSupplier { any pull () raises (Disconnected); any try_pull (out boolean has_event) raises (Disconnected); void disconnect_pull_supplier ();}; previous next 20

Java IDL I Java IDL gör vi först gränssnittsbeskrivningen INTERFACE.idl Med kommandot idltojava genereras filer som vi kan utnyttja vid skrivandet av server och klienter idltojava INTERFACE.idl En katalog med samma namn som modulen skapas och en Java-interfacebeskrivning motsvarande IDL-beskrivningen skapas. En del hjälpklasser som gör det enkelt att skriva servrar och klienter konstrueras Alla dessa klasser definieras automatiskt tillhöra ett package med samma namn som modulen (och därmed också den nyskapade katalogens) previous next 21

... Följande fem filer skapas: INTERFACE.java Javaversionen av interfacet _INTERFACEImplBase.java serverskellett som implementerar interfacet _INTERFACEStub.java klientstubbe som implementerar interfacet INTERFACEHelper.java en klass med statiska hjälpmetoder (tex narrow() som behövs för att ovandla -objektet till INTERFACEtypen) INTERFACEHolder.java "Håller" en instans av INTERFACE och hjälper till att hantera out och inout variabler som ju inte egentligen finns i Java previous next 22

Exempel: Hello World Ett enkelt -exempel där vi konstruerar ett objekt på en server som returnerar en sträng till den klient som ansluter Illustrerar hur IDL-beskrivning görs, hur skelett och stubbar samt andra hjälpklasser automatiskt konstrueras, hur en server respektive klient konstrueras, hur namnserver samt server och klient startas previous next 23

1) Hello World Interface module HelloApp{ interface Hello { string sayhello(); }; }; Gränssnittet definierar endast en metod, sayhello, vars resultat (returvärde) är en sträng (string) Filen heter HelloApp.idl previous next 24

2) Skapa hjälpklasser idltojava -fno-cpp HelloApp.idl om vi inte vill använda C-preprocessor (som inte säkert finns) Katalogen HelloApp och följande filer i denna katalog/package skapas: Hello.java _HelloImplBase.java _HelloStub.java HelloHelper.java HelloHolder.java previous next 25

3) Hello World Server import HelloApp.*; import org.omg.cosnaming.*; import org.omg.cosnaming.namingcontextpackage.*; import org.omg..*; här följer en beskrivning av den klass vars instans vi vill distribuera _HelloImplBase implementerar interfacet Hello.java och är ett serverskelett, dvs en brygga mot ORBen class HelloServant extends _HelloImplBase { int i = 0; public String sayhello() {return "\nhello world!! (no: " + ++i + ")\n";} } previous next 26

... public class HelloServer { public static void main(string args[]) { try{orb orb = ORB.init(args, null); kontakta ORB skapa referens till namnserver instansiera serverobjekt och registrera det i ORBen org.omg..object objref = orb.resolve_initial_references("nameservice"); NamingContext ncref = NamingContextHelper.narrow(objRef); HelloServant helloref = new HelloServant(); orb.connect(helloref); konstruera namnobjekt och bind serverobjektet till detta namn i namnservern NameComponent nc = new NameComponent("Hello", ""); NameComponent path[] = {nc}; ncref.rebind(path, helloref); previous next 27

... // vänta på att klienter skall ta kontakt java.lang.object sync = new java.lang.object(); synchronized (sync) { sync.wait(); } } catch (Exception e) { System.err.println("ERROR: " + e); e.printstacktrace(system.out); } }} previous next 28

4) Hello World Klient import HelloApp.*; import org.omg.cosnaming.*; import org.omg..*; public class HelloClient { public static void main(string args[]) {try{orb orb = ORB.init(args, null); org.omg..object objref = orb.resolve_initial_references("nameservice"); NamingContext ncref = NamingContextHelper.narrow(objRef); skapa referens till serverns "Hello"- objekt NameComponent nc = new NameComponent("Hello", ""); NameComponent path[] = {nc}; Hello helloref = HelloHelper.narrow(ncRef.resolve(path)); previous next 29

... String hello = helloref.sayhello(); skicka ett meddelande till serverobjektet System.out.println(hello); }} } catch (Exception e) { System.out.println("ERROR : " + e); e.printstacktrace(system.out); } previous next 30

5) Kompilera och Kör Kompilera javac *.java HelloApp/*.java Kör a) starta namnserver tnameserv -ORBInitialPort 1050 b) Starta HelloServer java HelloServer -ORBInitialPort 1050 c) Kör klient java HelloClient -ORBInitialPort 1050 previous next 31

Sammanfattning starta och anslut till namnserver starta namnserver tnameserv -ORBInitialPort PORTNUMMER Starta SERVER java SERVER -ORBInitialHost IPADRESS -ORBInitialPort PORTNUMMER Kör Kör KLIENT java KLIENT -ORBInitialHost IPADRESS -ORBInitialPort PORTNUMMER previous next 32

Exempel: på att bla definiera metod i klienten som anropas av servern I IDL-gränssnittet definierar vi ett gränssnitt för ett objekt som skickas med som parameter från klienten till servern Innan klienten anropar servern skapar klienten en instans av detta "callback-objekt" och registrerar det i ORBen Från servern skickar vi ett meddelande till detta objekt som resulterar att en metod på klientsidan utförs Kodexempel i callback-, kylanläggnings-, respektive meddelandecentralexempel i (också som appendix till utdelade materialet): http://www.nada.kth.se/kurser/kth/2d4334/99-00/contents/exempel.html previous next 33