RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).
|
|
|
- Robert Justesen
- 9 år siden
- Visninger:
Transkript
1 Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer hvordan det virker. Den forudsætter kendskab til Java og generel programmering men ikke til RMI. Skrevet den 16. Feb 2010 af arne_v I kategorien Programmering / Java Historie: V1.0-12/01/ original V1.1-31/01/ forbedret formatering V1.2-09/02/ flere ændringer af formatering V1.3-16/02/ smårettelser Teori RMI bygger på det såkaldte Proxy Pattern (et af de originale patterns fra Design Patterns af Erich Gamma m.fl.). Ideen er at en client kan kalde remote server kode på samme måde som lokal kode. Selve kaldet foregår som: client kode--stub kode--(netværk)--skeleton kode--server kode Stub koden har samme interface som server koden. Stub koden pakker alle argumenter ned (serialiserer) og sender dem over en socket til skeleton koden. Skeleton koden udpakker alle argumenter (deserialiserer) og kalder server koden. Retur værdien sende tilbage på samme vis bare modsat. Både stub og skeleton koden genereres automatisk af et værktøj der kommer med Java SDK. Etableringen af forbindlesen mellem client og server er speciel og involverer noget der hedder RMIRegistry. Serveren connecter til RMIRegistry og registerer sig under et navn. Client connecter til RMIRegistry og slår navnet op og får returneret et stub objekt.
2 Client connecter så via stub objekt til server skeleton objekt. Eksempel Her kommer nu et simpelt eksempel som illusterer hvordan det virker. Calc.java import java.rmi.remote; // interfacet som er fælles for stub og server // skal extende Remote public interface Calc extends Remote { // metoder i interfacet // skal throwe RemoteException public int add(int a, int b) throws RemoteException; public int mul(int a, int b) throws RemoteException; CalcImpl.java import java.net.malformedurlexception; import java.rmi.naming; import java.rmi.server.unicastremoteobject; // server klassen // skal extende UnicastRemoteObject og implementere interfacet public class CalcImpl extends UnicastRemoteObject implements Calc { // constructor // skal erklæres eksplicit // skal throwe RemoteException public CalcImpl() throws RemoteException { // metoder fra interfacet // må godt men behøver ikke throwe RemoteException public int add(int a, int b) { // lidt debug så vi kan at det virker System.out.println("Vi er blevet bedt om at lave en add"); return (a + b); public int mul(int a, int b) { // lidt debug så vi kan at det virker System.out.println("Vi er blevet bedt om at lave en mul"); return (a * b); // simpelt hoved program til at teste med public static void main(string[] args) { try {
3 // binde server objekt til RMIRegistry under navnet "Calc" Naming.rebind("Calc", new CalcImpl()); catch (RemoteException e) { catch (MalformedURLException e) { TestCalc.java import java.net.malformedurlexception; import java.rmi.naming; import java.rmi.notboundexception; // test client klasse public class TestCalc { // hoved program public static void main(string[] args) { try { // slå service op i RMIregistry og hent stub objekt Calc c = (Calc)Naming.lookup("Calc"); // check at service virker System.out.println(c.add(2,3)); System.out.println(c.mul(2,3)); catch (MalformedURLException e) { catch (RemoteException e) { catch (NotBoundException e) { Compile.java filer til.class filer: javac *.java Generere stub og skeleton udfra server implementations class fil: rmic CalcImpl Starte RMIRegistry:
4 rmiregistry Starte server: java CalcImpl Starte client: java TestCalc RMIRegistry skal have stub i classpath. Server skal have interface + implementation + skeleton i classpath. Client skal have stub i classpath. Hvad er RMI godt til og hvad er det ikke godt til RMI er meget godt til client/server løsninger på LAN. Det er ikke så velegnet til løsninger hvor netværket er internettet. Det giver ofte problemer med firewalls og porte der skal åbnes. Man kan godt få det til at virke, men til brug over internet er SOAP RPC over HTTP (Web Services) bedre. Som hovedregel gælder det at fordelene ved RMI er store, når man har mange funktioner med mange argumenter som ikke fylder meget, mens det ikke er velegnet til en funktion med et argument som kan være meget stort (som f.eks. fil upload). Udviklingen i Java I nyere Java versioner behøver man ikke generere stub og skeleton på compile time, da de kan genereres on the fly på runtime. Men koden ovenfor virker stadig. Videre For avancerede emner indenfor RMI se: Kommentar af simonvalter d. 12. Jan fint beskrevet :) ser frem til den avancerede. Kommentar af bagnavnet d. 08. Dec Lige hvad jeg som nybegynder havde brug for!
5 Kommentar af iwatter d. 25. May Kommentar af ttn- d. 30. Jul Igen, som ved stortset alle dine artikler, er der alt for meget kode i forhold til tekst. Forklar og analyser hver der sker. Ellers kan man ikke rigtig kalde det for en artikel. Dog er denne sat til middel, fordi RMI ikke er så avanceret igen. Kommentar af HannnaBanana d. 18. Oct Hmm: Hvordan skal man forstå dette stykke: Compile.java filer til.class filer: javac *.java Generere stub og skeleton udfra server implementations class fil: rmic CalcImpl Starte RMIRegistry: rmiregistry Starte server: java CalcImpl Starte client: java TestCalc RMIRegistry skal have stub i classpath. Server skal have interface + implementation + skeleton i classpath. Client skal have stub i classpath.
Singleton pattern i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.
Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter
//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!
Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for
Hvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation
Plan 12.3. Oversigt over grundlæggende begreber Java: eksempel på applikation, programmering og oversættelse Uddybning af grundlæggende begreber Java RMI implementation Forklaring af øvelsen Hvad er et
Forskellige Java versioner
Denne guide er oprindeligt udgivet på Eksperten.dk Forskellige Java versioner Denne artikel beskriver lidt om de forskellige Java versioner. Den forklarer J2SE/J2ME/J2EE, plugin/jre/sdk og Sun Java/Microsoft
RMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007
RMI med BlueJ Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007 Hvad er RMI? Når man arbejder med Distribuerede Systemer, som igen vil sige at man ønsker at flere end én komputer
Arkitektur for begyndere
Denne guide er oprindeligt udgivet på Eksperten.dk Arkitektur for begyndere Denne artikel beskriver forskellige basale n-tier arkitekturer. Som man bør kende og have valgt inden man går igang med at udvikle
Anvendelse af metoder - Programmering
Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur
Hvad er Objekter - Programmering
Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som
Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004
Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),
XML parsning i Java. Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM.
Denne guide er oprindeligt udgivet på Eksperten.dk XML parsning i Java Denne artikel beskriver hvordan man parser XML i Java. Den beskriver W3C DOM, SAX og JDOM. Den forudsætter kendskab til Java og XML.
Bits, bit operationer, integers og floating point
Denne guide er oprindeligt udgivet på Eksperten.dk Bits, bit operationer, integers og floating point Denne artikel beskriver hvordan data gemmes som bits og hvordan man kan manipulere med bits. Den forudsætter
University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11
DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void
Database design for begyndere
Denne guide er oprindeligt udgivet på Eksperten.dk Database design for begyndere Denne artikel beskriver hvordan man kommer fra ide til database design. Den stopper inden normal former. Den forudsætter
Undtagelseshåndtering i C#
Denne guide er oprindeligt udgivet på Eksperten.dk Undtagelseshåndtering i C# I modsætning til C++ kan man i C# ikke skrive et program uden undtagelseshåndtering, så derfor har jeg skrevet denne guide
DM502. Peter Schneider-Kamp ([email protected]) http://imada.sdu.dk/~petersk/dm502/
DM502 Peter Schneider-Kamp ([email protected]) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!
Introduktion til SQL queries
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til SQL queries Denne artikel beskriver nogle forskellige muligheder i SQL queries. Eksemplerne skulle gerne være standard SQL og virke i
A Profile for Safety Critical Java
A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren
University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2
DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld
MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.
Denne guide er oprindeligt udgivet på Eksperten.dk MySQL C API Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Databaseadgang fra Java
Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,
Tree klassen fra sidste forelæsning
Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years
Introduktion til funktioner, moduler og scopes i Python
Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til funktioner, moduler og scopes i Python Denne artikel er fortsættelsen af "I gang med Python", som blevet publiceret her på sitet for
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til [email protected]. Besvarelsen skal
Test af It-komponent
Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side
Videregående programmering i Java
Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter
Objektorienterede metoder
Objektorienterede metoder Denne gang: Designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Singleton eksempel: Forskellige slags
Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java
Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger
Dag 10 Flertrådet programmering
Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Hvordan vælger jeg dokumentprofilen?
Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel
Denne artikel er til dem der ønsker at vide mere om hvad CSS er og hvad CSS kan bruges til hvad angår WWW.
Denne guide er oprindeligt udgivet på Eksperten.dk CSS - en gennemgang Denne artikel er til dem der ønsker at vide mere om hvad CSS er og hvad CSS kan bruges til hvad angår WWW. Der er lidt CSS historie
Database tips. Den forudsætter lidt kendskab til SQL men er for mindre erfarne. Denne guide er oprindeligt udgivet på Eksperten.dk
Denne guide er oprindeligt udgivet på Eksperten.dk Database tips Denne artikel vil give nogle forskellige små praktiske råd om ting man skal tænke på når man arbejder med databaser og applikationer som
Abstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Mozilla Firefox (tidligere Firebird): Fremhæve ord
Denne guide er oprindeligt udgivet på Eksperten.dk Mozilla Firefox (tidligere Firebird): Fremhæve ord Du kender sikkert Google Værktøjslinjen til Internet Explorer, ellers har du sikkert hørt om den. I
IT projekt person galleri
Denne guide er oprindeligt udgivet på Eksperten.dk IT projekt person galleri Denne artikel forsøger at forklare lidt om hvilke funktioner der ligger bag ved de forskellige titler som deltagerne i et IT
Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering
Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af
Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.
Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19
Skriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal.
Denne guide er oprindeligt udgivet på Eksperten.dk Afrund til helt tal I denne artikel vil du ved hjælp af arrays kunne afrunde et decimaltal til et helt tal. Skrevet den 03. Feb 2009 af tjomsen I kategorien
Udvikling af DOTNET applikationer til MicroStation i C#
Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt
mac - installation af Maple 2018 med SKOLE-pakken
mac - installation af Maple 2018 med SKOLE-pakken Download først de relevante installere til både Maple 2018 og til Skole-pakken. De downloadede filer vil som standard havne i mappen Overførsler den har
Netværksprogrammering!
Netværksprogrammering! Plan! Socket-baseret kommunikation! Fjernmetodekald (RMI)!!- Designmønsteret Proxy! Databasetilgang (JDBC)! 1! 2! Distribuerede beregninger! Kommunikation! Dagens beregningsmiljøer
Objektorienteret Programmering
Objektorienteret Programmering Struktureret Systemudvikling Jan Bendtsen Automation and Control Indhold Lidt om programmeringssprog Klasser i Java Klasser i C++ Oversættelse og kørsel af kode Et eksempel:
TEKNISKE FORHOLD VEDR. ADGANG TIL VP.ONLINE. Brugervejledning
TEKNISKE FORHOLD VEDR. ADGANG TIL VP.ONLINE vp.online 2011 01-10-2011 Indholdsfortegnelse 1 PROBLEMER MED AT SE VP.ONLINE... 3 2 BROWSER KONFIGURATION... 6 3 SKRIVEADGANG TIL DREV... 7 4 SESSION TIMEOUT
