Next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation.

Slides:



Advertisements
Liknande presentationer
Avlusning Debugger (”avlusare”) Breakpoints Watch.
Advertisements

Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Klasser och objekt.
Objektorienterad Realtidsprogrammering
Fortsättningskurs i Programmering lektion 6
2I1070 Lektion 2 KTH-MI Peter Mozelius Servlets och databaskopplingar.
Klassarv och inkapsling
Objektorienterad Realtidsprogrammering
OOP Objekt-orienterad programmering
Metoder i java Det finns två typer av metoder i java
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programkodens uppbyggnad
Att programmera i språket Java
Next previous Lite mer om synkronisering. Mer om Java och trådar. RMI Objektorienterad Realtidsprogrammering 2000 Objektorienterad Realtidsprogrammering.
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Next previous Innehåll Inledning Några enkla exempel Pekare till och kort beskrivning av större exempel Speciella referenser (som används i marginalen)
Next previous Lite mer om CGI-programmering Innehåll Vad är CGI? Vad är Forms? Vad är Perl? Forms, CGI och Perl. Något om Cookies. Internetprogrammering.
Next previous Lite mer om CGI-programmering Innehåll Vad är CGI? Vad är Forms? Vad är Perl? Forms, CGI och Perl Internetprogrammering F 14 Läs också: Kursboken.
Next previous Introduktion till Java Av Björn Eiderbäck Adress: Rum 1641, 6tr NADA Osquars Backe 2 Tel: OOMPAE 2000.
Alice in Action with Java
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
Objektorienterad programmering i Java
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
int res2=Math.max(tal1,tal2);
Next previous CORBA: vad, varför, hur? Innehåll Datornätverk Behov och krav CORBA Historik, principer, arkitektur och beståndsdelar Exempel i Java Internetprogrammering.
Föreläsning 8, kapitel 8 Förbättra strukturen med arv Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Objektorienterad Modellering Programmering och Analys
OOP Objekt-orienterad programmering
Programmeringsteknik för Media1 & K1
1. En infrastruktur för programutveckling
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
OOP F3:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 3 Iteration Många variabler av samma sort – Arrayer.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Servlets — Java på serversidan. previous next 2 Servlets Introduktion Javaservlets är en i raden av SUN:s många tillämpningar av Java. Servlets kan grovt.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Next previous Innehåll Del 1-trådar Del 2-URLer Del 1: Trådar Föreläsning 8.
Next previous RMI, Remote Method Invocation Om du har boken av Marty Hall, läs avsnitt 15.8 För fler exempel se:
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Next previous CORBA: vad, varför, hur? Innehåll Datornätverk Behov och krav CORBA Historik, principer, arkitektur och beståndsdelar Exempel i Java Internetprogrammering.
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
TILLÄMPAD DATALOGI (TILDA) Övning 3
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 8 ( )‏ Innehåll:  Introduktion till Java EE (Enterprise Edition)  Enterprise Java Beans.
Föreläsning 4 Klasser Och Objekt.
PROGRAMMERINGSTEKNIK Övningsgrupp 3 Marcus Hjelm
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Introduktion till programmeringsspråket Java -Den allmänna.
PROCESSPROGRAMMERING Föreläsning 1 ( )‏ Innehåll: Introduktion till paralellprogrammering (“concurrent programming”)‏ Introduktion till parallellprogrammering.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( )‏ Innehåll:Trådar: - Avbrott (”interrupts”)‏ - Metoden join()‏ Högnivå objekt för.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
TILLÄMPAD DATALOGI (TILDA) Övning 1 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Övning 3. Repetition Metoder class RepetitionMetoder { public static void main(String [] args) double längd = 2.0; double bredd = 1.0; double area =
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
OOP&M - teori1 OOPM del II– Föreläsning vecka Mer om ärvning.. Abstrakta klasser/metoder Gränssnitt/Interface klasser.
RMI Av: Josefina & Sarah DS04.
Föreläsning 5: Att använda klasser & objekt
Nätverkskommunikation
Presentationens avskrift:

next previous Internetprogrammering 2000 Internetprogrammering 2000 Föreläsning 10 Distribuerad programmering med Javas RMI, Remote Method Invocation

previous next 2 RMI. Remote Method Invocation, RMI Distributionspaketet RMI introducerades i Java 1.1 RMI gör det enkelt att dela på objekt mellan olika plattformar –objekt i en maskin kan transparent anropa objekt tillhörande andra maskiner –kompilerad kod kan flyttas och exekvera i olika virtuella maskiner RMI kräver dock att både klient och server kör Java

previous next 3 RMI. Vad behöver göras för att distribuera objekt? 1Skapa gränssnitt för objekt som skall kunna anropas av objekt på andra maskiner. –Detta gränssnitt (interface) används av både server och klient –interfacet skall utvidga java.rmi.Remote –varje metod i interfacet skall deklarera att det kastar java.rmi.RemoteException 2Vi behöver skapa en klient –Som använder objektet på servern 3Ett objekt som implementerar gränssnittet i steg 1 4En server som skapar en instans av det distribuerade objektet (som också implementerar samma gränssnitt som objektets representation hos klienten)

previous next 4 RMI. Hur representeras objektet hos server respektive klient? Hos servern skapas en vanlig instans som implementerar det distribuerade gränssnittet Då man (via namnservern) "ber om" en instans av det distribuerade objektet hos klienten skickas en stubbe från servern till klienten Hos klienten skapas en proxy som från klientens sida ser ut som om objektet befann sig på dess lokala maskin (dvs det ser ut som ett vanligt objekt som implementerar det givna "distributionsgränssnittet") Proxyn ansvarar för att på ett transparent sätt vidarebefordra meddelanden från klient till det riktiga objektet på servern samt att returnera resultatet tillbaks till anroparen –Dvs klienten skall inte kunna skilja ett meddelande till objektet på servern från ett meddelande till ett "vanligt" lokalt objekt

previous next 5 RMI. Transport av seriealiserat objekt från klient till server Ett litet exempel som visar hur vi kan konstruera en klass och ett objekt på klientsidan och skicka det till en server för exekvering Konstruktion av interface för objektet som skall implementeras på servern och anropas av klienten import java.rmi.*; interface HelloWithTransport extends Remote { public void sayHelloVia(HelloTransportInterface transportObject) throws java.rmi.RemoteException; } Interface för objekt som skall kunna transporteras import java.io.Serializable; interface HelloTransportInterface extends Serializable{ public void say(String saying); } Objekt som kan anropas av annan nod Objekt som kan anropas av annan nod Objekt som kan flyttas Objekt som kan flyttas

previous next 6 RMI. Konstruktion av Server... import java.rmi.*; import java.rmi.server.*; public class HelloServerTransport extends UnicastRemoteObject implements HelloWithTransport { public HelloServerTransport() throws RemoteException { super(); } public void sayHelloVia(HelloTransportInterface transportObject) throws RemoteException { transportObject.say("Hello Internetprogrammers (via transport)!"); } Subklassa UnicastRemoteObject och implementera det egna HelloWithTransport Subklassa UnicastRemoteObject och implementera det egna HelloWithTransport och metoden som definieras i HelloWithTransport som sen kommer användas av klienter och metoden som definieras i HelloWithTransport som sen kommer användas av klienter Superklassens konstruktör ser till att "vår" instans exporteras

previous next 7 RMI.... public static void main(String [] args) { if (System.getSecurityManager() == null) System.setSecurityManager(new RMISecurityManager()); try { HelloServerTransport h = new HelloServerTransport(); Naming.rebind(”//host/hellowithtransport", h); System.out.println("Hello with Callback Server ready."); } catch(RemoteException re) { System.out.println("RemoteException in HelloServerTransport.main: " + re); } catch(Exception e) { System.out.println("Exception in HelloServerTransport.main: " + e); }}} Skapa instans Ge "distribuerat" namn

previous next 8 RMI. Klient import java.rmi.*; import java.io.*; public class HelloClientWithTransport { public static class MyTransportObject implements HelloTransportInterface { public void say(String saying){ System.out.println("From the client: " + saying); } } public static void main(String [] args) { System.out.println("Client started"); if (System.getSecurityManager() == null) System.setSecurityManager(new RMISecurityManager()); try { HelloWithTransport h = (HelloWithTransport) Naming.lookup(”//host/hellowithtransport"); Skapa referens till servern

previous next 9 RMI.... //Transportera koden för ett objekt och exekvera hos servern. MyTransportObject transport = new MyTransportObject (); h.sayHelloVia(transport); } catch(Exception e) { System.out.println("Exception in HelloClientWithTransport.main: " + e); } }} Skapa instans (av klienten) Anropa metod hos servern med klienten som argument

previous next 10 RMI. Kompilera Kompilera båda interfacen, servern och klienten med javac, dvs >javac HelloWithTransport.java >javac HelloTransportInterface.java >javac HelloServerTransport.java >javac HelloClientWithTransport.java Kör också rmic på servern, dvs >rmic HelloServerTransport

previous next 11 RMI. Testkörning Vi kör exemplet på följande sätt (svar i kursivt): Starta namnserver >rmiregistry Starta server >java HelloServerTransport Hello with Callback Server ready. Starta klient >java HelloClientWithTransport Client started Iockmed att klienten startas kommer också följande skrivas på severns terminal: From the client: Hello Internetprogrammers (via transport)!

previous next 12 RMI. Definiera, kompilera och kör Kortfattat gör på följande sätt –Skapa interface –Kompilera interfacet med javac InterfaceNamn.java –Skapa server som instansierar serverobjekt och binder det till namnservern –Kompilera servern med javac ServerKlass.java –Kör rmic på serverklassen (så skapas stubbe och skelettklasser), dvs rmic ServerKlass –Skriv klient som refererar objekt i namnservern och skickar meddelanden till det –Kompilera klienten ( javac KlientKlass.java ) –Starta namnservern ( rmiregistry ) –Starta server ( java ServerKlass ) –Starta klint ( Java KlientKlass )

previous next 13 RMI. RMI mer beskrivningar och fler exempel Vi tittar också på tutorialen på följande adress: Vi tittar också på tutorialen på följande adress: Vi tittar också på dom tre exemplen på följande sida dvs följande: Transport av serialiserat objekt Calbackrutin Meddelandesystem Vi tittar också på dom tre exemplen på följande sida dvs följande: Transport av serialiserat objekt Calbackrutin Meddelandesystem