Distribuerade system. CORBA eller RMI



Relevanta dokument
Klasser och objekt i C#

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

Föreläsnings 10 - Överlagring, Konstruerare, Arv, Mer Exceptions, Reguljära Uttryck

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

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


Mera om generik. Innehåll. Generik och arv Wildcards Vektorer och generik Generiska metoder. EDA690 (Mera om generik) HT / 24

Lathund, procent med bråk, åk 8

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Tentamensskrivning Nätverksprogrammering (EDA095) , kl 8-13

Arbeta bäst där du är Dialect Unified Mi

Objektorienterad programmering i Java

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

Lathund för överföring av rapporter och ljudfiler

Att komma igång. Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera och ett enkelt program

Laboration 10 - NetBeans

Laboration 2: Ett kommunikationssystem

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Att använda Java SE JDK 6

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

Övningar Dag 2 En första klass

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

Objektorienterad programmering D2

Partnerskapsförord. giftorättsgods görs till enskild egendom 1, 2. Parter 3. Partnerskapsförordets innehåll: 4

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

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

DOP-matematik Copyright Tord Persson. Bråktal Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr

Administration Excelimport

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

Fördjupad Java. Undantagshantering. Fel

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Hur skapar man formula r

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Gissa det hemliga talet

Kopiering av objekt i Java

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Du ska nu skapa ett litet program som skriver ut Hello World.

Två konstiga klockor

Tentamen i Programmering grundkurs och Programmering C

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

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

Här kan du läsa om vilka funktioner som finns tillgängliga i Switch King samt vilka möjligheter som finns för att sätta upp systemet (skalbarhet).

En bra idé är att sedan välja ut de enskilda aktier eller index du vill titta på : När du uppdaterat kurserna klart sedan följa stegen nedan:

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Mätningar på op-förstärkare. Del 3, växelspänningsförstärkning med balanserad ingång.

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

trafiksimulering Intro OU5 trafiksimulering

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

Föreläsnings 9 - Exceptions, I/O

Introduktion. Den objektorienterade modellen Grundläggande begrepp Klass Klassen som abstraktion

Individuellt Mjukvaruutvecklingsprojekt

Uppdragsbeskrivning. Digital Skyltning. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Rekursion: varför? Problem delas upp i mindre bitar algoritm för att lösa problemet erhålls från problemformuleringen

Säkerhet. De onda. Vilka är farorna?

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

MANUAL TILL AVTALSMALL FÖR KIST- OCH URNTRANSPORTER

DATASAMORDNING NYHETERNA I CHAOS Utbildning Chaos/Handledning - Nyheterna i Chaos 3/

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

APEX Flex ProChip System

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

Tentamen OOP

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets

Editering, Kompilering och Exekvering av Javaprogram

ANVÄND NAVIGATIONEN I CAPITEX SÄLJSTÖD

Hjälp för digital röst. Mikro Værkstedet A/S

Syftet med en personlig handlingsplan

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Väga paket och jämföra priser

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) , kl 8-13

Introduktion till arv

Distribuerade Informationssystem VT-04

Uppgradering till DentalEye 3.2

En lönerevision görs i flera steg; Initiering - Lönerevision Attestering - Skapa förmån - Uppdatera lön.

Utforska rymden med iphone

Axiell Arena. Samarbeta om bilder Regionbiblioteket i Kalmar län

Datorövning 2 Statistik med Excel (Office 2007, svenska)

Övningshäfte i matematik för. Kemistuderande BL 05

Distribuerade System, HT03

Instruktioner för beställning och kontoadministration för abonnenter av inlästa läromedel

Föreningen Nordens lokala hemsidor

Hävarmen. Peter Kock

Subtraktion - Analys och bedömning av elevarbeten

Idag: Dataabstraktion

Det andra alternativet är att ladda upp filer genom att klicka på plustecknet nere till vänster. Man klickar sig in på den mapp som man vill att

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

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

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Programmera en NXT Robot

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

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

Repetitivt arbete ska minska

Webb-bidrag. Sök bidrag på webben Gäller från

Utdrag ur protokoll vid sammanträde Ändrad deklarationstidpunkt för mervärdesskatt. Förslaget föranleder följande yttrande av Lagrådet:

Utveckla arbetsmiljö och verksamhet genom samverkan

Grym bildhantering helt gratis med Fotor

"if"-satsen. Inledande programmering med C# (1DV402)

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

Transkript:

Distribuerade system Java XII - 1 CORBA eller RMI Java XII - 2 Några motiv till distribuerade system kan vara att: Utjämna belastningen mellan olika maskiner i ett nätverk Utnyttja kapaciteten i en större dator vid tunga beräkningar Befrämja enklare systemkonstruktioner Det traditionella sättet distribuera data över ett nätvek till andra maskiner för bearbetning leder ofta till komplicerade och svårbegripliga lösningar Ett effektivt sätt att angripa denna typ av problem är att tillämpa strukturer som tillåter anrop av metoder till objekt som existerar på på andra maskiner i nätverket CORBA och RMI är två vanliga metoder som stöder distribuerade systemlösningar CORBA är en förkortning av Common Object Request Broker Architecture RMI är en förkortning av Remote Method Invocation I Java finns stöd för både CORBA och RMI Systemlösningar i CORBA och RMI bygger på ungefär liknande ideér men CORBA leder till mera komplicerade strukturer Skillnaden mellan RMI och CORBA är att den senare gör det möjligt att knyta samman delar av ett system utvecklade i olika programspråk RMI tillåter endast distribuerade lösningar som är helt och hållna skrivna Java. 1

Remote interfaces Java XII - 3 RMI arkitekturen Java XII - 4 Kommunikationen mellan klient och server sker över gemensamma interfaces. På servern förekommer den klass som implementerar gränssnittet Klienten anropar de metoder som förekommer i serverns klass via gränssnittet. Klient Interface A Metod a Metod b Server Interface A Klass B Metod a Metod b Klient Server Stub Skeleton Interface A Metod a Metod b Interface A Klass B Metod a Metod b -------------Remote Reference Layer------------ Transport Transport Elektriska signaler 2

Java XII - 5 En klass vars metod vi vill använda The remote interface Java XII - 6 public class PerfectTime public long getperfecttime() return System.currentTimeMillis(); public static void main(string[] args) PerfectTime pt = new PerfectTime(); System.out.println( Tid: + pt.getperfecttime()); På Servern finns denna klass Ett antal klienter vill synkronisera sin tid mot Serverns tid Klienterna kan anropa metoden getperfecttime() via det gemensamma gränssnittet TimeInterface public interface TimeInterface long getperfecttime() throws RemoteException; Serverns klass PerfectTime måste implementera gränssnittet TimeInterface public class PerfectTime implements TimeInterface public long getperfecttime() return System.currentTimeMillis(); Detta kan åstadkommas genom att klienterna via den överförda referensen till objektet pt anropar dess metod getperfecttime(). public static void main(string[] args) PerfectTime pt = new PerfectTime(); System.out.println( Tid: + pt.getperfecttime()); 3

Java XII - 7 Anpassning av the remote interface till RMI Anpassning av klassen som implementerar the remote interface, del 1 Java XII - 8 The remote interface måste vara public The remote interface måste ärva av klassen Remote Varje metod i the remote interface måste deklarera att den kan kasta ett RemoteException Parametrar i metodernas parameterlistor som är objekt överförs som värden. Därför måste dessa objekt implementera gänssnittet Serializable Hur detta går till är beskrivet på sidorna 548-549 i Hans-Erik Erikssons bok Programutveckling med Java import java.rmi.*; public interface TimeInterface extends Remote long getperfecttime() throws RemoteException; Klassen PerfectTime måste ärva från klassen UnicastRemoteObject Klassens konstruktor måste defineras explicit även om den inte gör något. Detta på grund av att den måste kunna kasta ett undantaget av typen RemoteException import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.*; import java.net.*; public class PerfectTime extends UnicastRemoteObject implements TimeInterface public PerfectTime() throws RemoteException public long getperfecttime() throws RemoteException return System.currentTimeMillis(); 4

Anpassning av klassen som implementerar the remote interface, del 2 Java XII - 9 Skapa stub och skeleton Java XII - 10 public static void main(string[] args) System.setSecurityManager(new RMISecurityManager()); try PerfectTime pt = new PerfectTime(); Naming.bind( rmi://pc-hem.du.se:4711/time", pt); System.out.println("Ready to do time"); catch (Exception e) System.out.println(e); Metoden main hanterar alla detaljer för att registrera objektet pt i Servern enligt följande. Skapar och installerar en security manager som stöder RMI Skapar objektet Registrerar objektet i rmirigistry. Observera att localhost inte fungerar under Java 1.1. Använd istället datorns riktiga adress. Nu är det dags att kompilera the remote interface och klassen PerfectTime. Det görs på vanligt sätt med hjälp av javac Därefter så ska stub och skeleton skapas. Detta görs med hjälp av en speciell RMIkompilator. Den kallas för rmic. När man skapar stub och skeleton är det viktigt att man står i den katalog som innehåller den intressanta klassen, det här fallet PerfectTime. G:\server> javac TimeInterface.java G:\server> javac PerfectTime.java G:\server> rmic PerfectTime Nu ska följande filer ha skapats: TimeInterface.class PerfectTime.class PerfectTime_Stub.class PerfectTime_Skel.class 5

Klienten Java XII - 11 Klienten klass Java XII - 12 På klienten så finns den klass vars objekt kommer att utnyttja metoden getperfecttime borta på Servern. Därför måste the remote interface klass-fil kopieras äver till Klienten. I det här fallet är det filen TimeInterface.class. Likaså måste stub -filen kopieras över Klienten. Anpassningen av Klientens klass består i att hämta en refens till objektet som finns borta på Servern. Detta görs med på följande sätt: TimeInterface tid = (TimeInterface)Naming.lookup( rmi://pc-hem.du.se:4711/time ); Dessutom måste en securitymanager skapas och installeras. import java.rmi.*; import java.rmi.registry.*; public class DisplayPerfectTime public static void main(string[] args) System.setSecurityManager(new RMISecurityManager()); try TimeInterface tid = (TimeInterface)Naming.lookup( "rmi://pc-hem.du.se:4711/time"); // Från och med nu kan objektet och dess metod användas på // det vanliga sättet! for (int i=0; i<10; i++) System.out.println("perfect time = " + tid.getperfecttime()); catch (Exception e) System.out.println("Fel i klienten: " + e); Klassen kompileras på vanligt sätt G:\klient> javac DisplayPerfectTime.java 6

Starta Server och Klient Java XII - 13 Anpassning till JDK 1.2 Java XII - 14 Serversidan måste vara uppe innan klientens program går att köra Den nya versionen av Java 1.2 har en strängare säkerhetskontroll än tidigare versioner. Först måste programmet rmiregistry startas med rätt portnummer. Därefter kan Java applikationen PerfectTime köras i gång Därför måste man skriva ett egen säkerhetspolicy. Ett exempel på hur en sådan fil kan se ut följer här: G:\server> start rmiregistry 4711 G:\server> start java PerfectTime I och med att Serversidan är klar så kan Javaprogrammet på Klienten startas G:\klient> start java PerfectTime grant // Allow everything for now permission java.security.allpermission; ; Att använda ovanstående policy i en verklig tillämpning är inte att rekommendera eftersom den tillåter allt! I det här exemplet så heter filen som innehåller ovanstående säkerhetspolicy policy och det finns en kopia på både Server och klient. Programmen startas enligt följande G:\server> start rmiregistry 4711 G:\server> start java -Djava.security.policy=policy PerfectTime G:\Klient> java -Djava.security.policy=policy DisplayPerfectTime 7

Ett resultat från klientprogrammet Java XII - 15 G:\java\rmi\klient>java -Djava.security.policy=policy DisplayPerfectTime perfect time = 920500144340 perfect time = 920500144390 perfect time = 920500144390 perfect time = 920500144440 perfect time = 920500144440 perfect time = 920500144440 perfect time = 920500144500 perfect time = 920500144500 perfect time = 920500144500 perfect time = 920500144500 G:\java\rmi\klient> 8