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