Distribuerade System, HT03



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

Laboration 2: Ett kommunikationssystem

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

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

Objektorienterad programmering D2

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

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

Objektsamlingar i Java

Distribuerade affärssystem

Services + REST och OAuth

Tentamen, EDAA20/EDA501 Programmering

Objektorienterad programmering

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Beskrivning av hur du ansluter en E-terminal från Beijer Electronics till HC900 via Ethernet så att denna kan visa och manipulera data i HC900.

OOP Objekt-orienterad programmering

Föreläsning 8: Exempel och problemlösning

Åtkomst och användarhandledning

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

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

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

1 Översikt. 1.1 Koncept 1 (19) Tomas Rook Dokument typ Rev. Manual

Distribuerade system. CORBA eller RMI

Laboration 2: Designmönster

HexaFlip. Kravspecifikation

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

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

Tentamen, EDA501 Programmering M L TM W K V

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Realtid. eda040project2010 MANUAL. - Christoffer Olsson. - Daniel Lehtonen

Objektorienterad programmering i Java

Laboration 2: Designmönster

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

Övningar Dag 2 En första klass

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

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

Introduktion till arv

LULEÅ TEKNISKA UNIVERSITET

Att sätta upp en IPsec-förbindelse med mobil klient. Lisa Hallingström Paul Donald

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

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

Föreläsning 9: Arv och UML

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

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

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

Snabbguide Visma Compact API Version 5.1 Copyright Visma Spcs AB Visma Compact API

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

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

OOP Objekt-orienterad programmering

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

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Tentamen i Objektorienterad programmering

App-klient för smartphones Power BI Arbetsflöde CRM Online Webb-klienten Dokumenthantering Molnet...

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

Editering, Kompilering och Exekvering av Javaprogram

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Laboration 10 - NetBeans

Projektarbete 2: Interaktiv prototyp

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

Föreläsning 1 & 2 INTRODUKTION

Innehåll. 1 Om detta dokument. 1 Om detta dokument 1. 2 Kundnytta Introduktion till BACnet 2

Riskanalys fo r kritiska IT-system - metodbeskrivning

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

Projekt i Nätverksprogrammering. MegaNet Handledare: Pierre Nugues

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

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

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Dugga Datastrukturer (DAT036)

DELPROV 1 I DATAVETENSKAP

Din manual NOKIA C111

Projektrapport EDA095

Datorsystem Laboration 2: Minnesmappade bussar

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

trafiksimulering Intro OU5 trafiksimulering

Design Patterns. Objekt-orienterad programmering och design Alex Gerdes, 2016

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

Redovisning av inlämningsuppgifter

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

Mobila applikationer. Mobil applikationer. Java ME. Konfigurationer. Grunderna i ME

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

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

IT för personligt arbete F6

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt

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

Piff och Puffs Chatsystem

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

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

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

Bruksanvisning. Applikationsplats

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Towards Blocking---resistant Communication on the Internet

Tentamen OOP

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

CSN-rapportering, gymnasiet

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

F R Å G O R & S VA R. Open eplatform v SKAPAD AV: Hillar Loor, Senior Partner

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

Transkript:

UMEÅ UNIVERSITET 21 oktober 2003 Institutionen för Datavetenskap Laborationsrapport Laboration Middleware Distribuerade System, HT03 Jini Namn: Anders Holm, c00asm@cs.umu.se Kjell Johansson, c00kjn@cs.umu.se Henrik Flodell, c98hfl@cs.umu.se Anders Persbo, c98apo@cs.umu.se Handledare Jonas Birmé, Magnus Janlert

JINI INNEHÅLL Innehåll 1 Presentation av Jini 1 1.1 Discover................................ 1 1.2 Lookup................................. 2 1.3 Join................................... 2 1.4 Kommunikation............................ 3 1.5 Jinis integration med Java...................... 3 2 Hur Jini används i Praktiken 4 2.1 Plant-Advantage - en applikation för Informationsintegrering. 4 2.2 Tillförlitlig kommunikation på slagfältet med hjälp av Jinis Sambandsteknologi............................ 4 3 Exempel på Jini 5 4 Jini Resurser 7 5 Referenser 7 i 21 oktober 2003

JINI 1 PRESENTATION AV JINI 1 Presentation av Jini Jini är inte en förkortning av någonting men har inofficiellt fått betydelsen "Jini is not initials". När man laddar hem Jini får man ett API samt en uppsättning Java-paket innehållande grundläggande klasser och metoder. Dessa används som grundstenarna i Jini. De som utvecklar system uppbyggda kring Jini kan själva bygga ut och ändra i dess implementation. De tre huvuddelarna i Jini är den som erbjuder en tjänst, klienten som använder tjänsten samt en som håller reda på tjänsterna som erbjuds i nätverket. Dessa kallas service, client och service-locator. Mellan dessa tre delar kommer objekt att skickas och på så sätt kan tjänster utnyttjas. Några exempel på sådana tjänster är skrivare och lagringsenhet. De funktioner som dessa tre delar använder för att lokalisera, erbjuda och använda tjänster är discover, join och lookup. Detta kommer vi ta upp i kommande avsnitt. 1.1 Discover När en tjänst eller en klient vill erbjuda eller använda en tjänst måste tjänsten registreras eller lokaliseras. För att lyckas med detta finns en service-locator som håller reda på de olika tjänsterna som finns i systemet. Vi kommer att förklara hur detta fungerar för en klient men det är samma som för en tjänst. När klienter kopplar upp sig på nätverket gör de en multicast på port 4160 där service-locatorn lyssnar. Den läser då ut sändarens IP och bedömer om sändaren är giltig. Om så är fallet sätter den upp en TCP-uppkoppling mot IP:t och skickar iväg ett service-objekt. Vad klienten och tjänsten har för nytta av detta objekt förklaras nedan. Figur 1: Första steget i Discovery processen Figur 2: Andra steget i Discovery processen 1 21 oktober 2003

JINI 1 PRESENTATION AV JINI 1.2 Lookup Med hjälp av service-objektet kan klienten kolla upp vilka tjänster som erbjuds på nätverket. Detta gör den genom att anropa metoden lookup som finns i service-objektet. Som parameter till denna metod skickar man med ett objekt som beskriver vilken eller vilka tjänster man söker. Service-locatorn kommer då att svara med referenser till de matchande tjänsterna. Figur 3: Illustration av Lookup processen 1.3 Join När en tjänst vill registrera sig hos en service-locator använder den sig av en metod register som tillhandahålls av service-objektet. Som parameter till denna metod skickas ett objekt (service-item) som beskriver den tjänst som erbjuds. Detta objekt är det som senare används av klienten för att utnyttja tjänsten. Figur 4: Illustration av Join processen 2 21 oktober 2003

JINI 1 PRESENTATION AV JINI 1.4 Kommunikation När en service erbjuds till en klient så kan den erhållas på tre olika sätt. Antingen kan hela servicen utföras hos klienten genom att den tar hem all kod och utför tjänsten lokalt. Alternativt så kan klienten låta servern utföra allt arbete eller så kan de dela på arbetet. För kommunikationen mellan klient och server kan vilket protokoll som helst användas. Detta uppnås genom att när klienten får hem service-objektet så erhåller den även protokollet som skall användas. Figur 5: Visar hur kommunikationen sker 1.5 Jinis integration med Java Då Jini är konstruerad ovanpå Java 2-plattformen medför detta att en stor del av den allmänna funktionalitet som kan vara intressant i ett middlewaresystem, så som minneshantering, säkerhetsaspekter, RMI-invokation och liknande helt hanteras av de metoder som finns inbyggda i Java 2-plattformen. Exempelvis använder sig Jini enbart av de metoder som finns definierade i Javas Remote Method Invocation API för att anropa metoder i icke lokala objekt, samt att säkerhetsmodellen som tillhandahålls av Javas virtuella maskin koncept automatiskt blir applicerbar på Jini-applikationer. Detta medför således att endast säkerhet på transportlagernivå kan sägas följa med på köpet när Jini används. Eventuell säkerhet på applikationsnivå måste man implementera själv. Figur 6: Jiniteknologins plats i systemet 3 21 oktober 2003

JINI 2 HUR JINI ANVÄNDS I PRAKTIKEN 2 Hur Jini används i Praktiken Jini används idag inom ett stort antal områden, som till exempel Hälsovård, E-handel, Turistbranchen, Militären, inom bankvärlden och av Internetleverantörer. Det används bland annat i system där mjuk- och/eller hårdvaror som annars vore inkompatibla ska kommunicera med varandra, i dynamiska nätverk, och i system där ny datautrustning eller applikationer ska kunna anslutas utan att en tekniker ska behöva konfigurera systemet. Här följer ett par praktiska exempel på hur Jini-teknologin används. 2.1 Plant-Advantage - en applikation för Informationsintegrering Stora företag har vanligtvis olika applikationer för att sköta olika delar av sin organisation, som till exempel finanser, processkontroll, underhåll och inventering. Dessa applikationer är ofta inkompatibla med varandra, vilket gör det svårt att få en samlad bild av företagets skötsel. Genom att använda sig av Jini teknologin integrerar Approprias Plant-Advantage-mjukvara informationen från de olika applikationerna. Informationen kan sedan presenteras i ett webläsarbaserat gränssnitt. 2.2 Tillförlitlig kommunikation på slagfältet med hjälp av Jinis Sambandsteknologi På dagens moderna slagfält är säkra kommunikationer och riktig information mycket viktig, och inom den Amerikanska armén sköts detta till stor del av mobila Taktiska Operations Center (TOCs). Då varje TOC löper risk att förstöras, och ny TOCs snabbt kan behöva läggas till, så måste kommunikationsnätverket som sammanbinder dem vara flexibelt och anpassningsbart. För att klara det så har Sun och IBM, på uppdrag av den Amerikanska armén, använt Jini-teknologin till att länka samman varje TOC i ett nätverk. Genom att använda Java service-objekt underlättas en säker och tillförlitlig kommunikation mellan olika enheter och med Jinis serviceinfrastruktur ges möjligheten att använda flera olika hård- och mjukvaruplattformar. 4 21 oktober 2003

JINI 3 EXEMPEL PÅ JINI 3 Exempel på Jini Här följer ett litet exempel taget från: http://pandonia.canberra.edu.au/java/jini/tutorial/overview.xml Detta exempel visar ungefär hur man kan implementera en klient och en service provider. I det här exemplet exporterar service providern en implementation av en filklassificeringstjänst och klienten använder metoden getmimetype() från den tjänsten. Implementation av klienten: Pseudocode prepare for discovery discover a lookup service prepare a template for lookup search lookup a service call the service package nonworking; public class TestUnicastFileClassifier { public static void main(string argv[]) { new TestUnicastFileClassifier(); public TestUnicastFileClassifier() { LookupLocator lookup = null; ServiceRegistrar registrar = null; FileClassifier classifier = null; // Prepare for discovery lookup = new LookupLocator("jini://www.all_about_files.com"); // Discover a lookup service // This uses the synchronous unicast protocol registrar = lookup.getregistrar(); // Prepare a template for lookup search Class[] classes = new Class[] {FileClassifier.class; ServiceTemplate template = new ServiceTemplate(null, classes, null); // Lookup a service classifier = (FileClassifier) registrar.lookup(template); // Call the service MIMEType type; type = classifier.getmimetype("file1.txt"); System.out.println("Type is " + type.tostring()); // TestUnicastFileClassifier 5 21 oktober 2003

JINI 3 EXEMPEL PÅ JINI Implementation av service providern: Pseudocode prepare for discovery discover a lookup service create information about a service export a service renew leasing periodically package nonworking; public class FileClassifierServer implements DiscoveryListener { protected LeaseRenewalManager leasemanager = new LeaseRenewalManager(); public static void main(string argv[]) { new FileClassifierServer(); // keep server running (almost) forever to // - allow time for locator discovery and // - keep re-registering the lease Thread.currentThread().sleep(Lease.FOREVER); public FileClassifierServer() { LookupDiscovery discover = null; // Prepare for discovery - empty here // Discover a lookup service // This uses the asynchronous multicast protocol, // which calls back into the discovered() method discover = new LookupDiscovery(LookupDiscovery.ALL_GROUPS); discover.adddiscoverylistener(this); public void discovered(discoveryevent evt) { ServiceRegistrar registrar = evt.getregistrars()[0]; // At this point we have discovered a lookup service // Create information about a service ServiceItem item = new ServiceItem(null, new FileClassifierImpl(), null); // Export a service ServiceRegistration reg = registrar.register(item, Lease.FOREVER); // Renew leasing leasemanager.renewuntil(reg.getlease(), Lease.FOREVER, this); // FileClassifierServer 6 21 oktober 2003

JINI 5 REFERENSER 4 Jini Resurser Eftersom det är Sun som ligger bakom Jini finns det självklart en hel del information om det på deras sida. Man kan även ladda ner senaste versionerna därifrån. Man kan t.ex. börja här: http://wwws.sun.com/software/jini/ http://java.sun.com/ Andra bra sidor är bl.a. jini.org och artima.com/jini. 5 Referenser http://www.sun.com/software/jini/ http://www.jini.org/ http://pandonia.canberra.edu.au/java/jini/tutorial/jini.xml http://www.artima.com/jini/ http://www.artima.com/jini/jiniology/index.html http://wwws.sun.com/software/jini/news/success.html http://wwws.sun.com/software/customers/4d.html http://wwws.sun.com/software/customers/appropria.html http://wwws.sun.com/software/customers/entegrity.html 7 21 oktober 2003