java rmi (remote method invocation)

Post on 05-Jan-2016

37 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

www.si.pjwstk.edu.pl. Java RMI (Remote Method Invocation). Tomasz Łazarczyk s1538. Plan wykładu. Co to jest RMI? Przykład prostej aplikacji Porównanie RMI z CORBA, DCOM Praca magisterska. Tomasz Łazarczyk s_1538. Co to jest RMI?. - PowerPoint PPT Presentation

TRANSCRIPT

Java RMI (Remote Method Invocation)

Tomasz Łazarczyk s1538

www.si.pjwstk.edu.pl

Plan wykładu

• Co to jest RMI?

• Przykład prostej aplikacji

• Porównanie RMI z CORBA, DCOM

• Praca magisterska

Tomasz Łazarczyk s_1538

Co to jest RMI?

RMI(Remote Method Invocation) jest tworem podobnym do RPC (Remote Procedure Calls). Gdy RPC pozwala wywoływać procedury poprzez sieć, RMI wywołuje metody jakiegoś obiektu poprzez sieć.

W modelu tym serwer określa obiekty, które mogą być zdalnie wywołane przez klienta. Klient jest w stanie wywołać metodę takiego zdalnego obiektu, tak jak gdyby był on dostępny w przestrzeni tej samej wirtualnej maszyny.

RMI ukrywa przed użytkownikiem warstwę komunikacyjną (przesyłanie argumentów metod oraz zwracanych wartości). W Java-RMI argument oraz wartość zwracana może być dowolnego typem prostym lub innym obiektem implementującym interfejs Serializable.

Co to jest RMI?

Procesy, które uczestniczą w RMI:

• Klient - proces, który wywołuje zdalnie metodę obiektów serwera

• Server - proces, który zarządza zdalnymi obiektami. Zdalny obiekt jest zwykłym obiektem, który znajduje się w przestrzeni adresowej serwera

• Rejestr obiektów - umożliwia on odbiorcom uzyskiwanie dostępu do do zarejestrowanych w nim obiektów. Gdy obiekt został zarejestrowany, w celu uzyskania do niego dostępu wystarczy odwołać się po jego nazwie

Przykład prostej aplikacji

Schemat postępowania:

• stworzenie serwera

• stworzenie klienta

• uruchomienie klasy serwera

• uruchomienie klasy klienta

Przykład prostej aplikacji - serwer

Implementacja serwera - kroki postępowania:

1. Zaprojektowanie interfejsu

2. Implementacja interfejsu

3. Zaprojektowanie aplikacji uruchamiającej serwer

4. Utworzenie pliku polityki (policy file)

5. Skompilowanie klas, uruchomienie rejestru RMI oraz serwera

Przykład prostej aplikacji - serwer

1. Zaprojektowanie interfejsu - HelloWorld.javaimport java.util.*; import java.rmi.*;

public interface HelloWorld extends java.rmi.Remote { public String sayHello() throws RemoteException; }

Przykład prostej aplikacji - serwer

2. Implementacja interfejsu - HelloWorldImpl.java

import java.rmi.*; import java.rmi.server.UnicastRemoteObject;

public class HelloWorldImpl extends UnicastRemoteObject implements HelloWorld {

public HelloWorldImpl( String name ) throws RemoteException { try { Naming.rebind( name, this ); } catch( Exception e ) { System.out.println( e ); }

} public String sayHello() {

return “Hello World!!!”;

}

3. Zaprojektowanie aplikacji uruchamiającej serwer - HelloWorldServer.java

import java.rmi.*; import java.rmi.server.UnicastRemoteObject;

public class HelloWorldServer {

public static void main(String[] args) throws Exception { if(System.getSecurityManager() == null) { System.setSecurityManager( new RMISecurityManager() ); } HelloWorldImpl myObject = new HelloWorldImpl( ”HELLO" ); System.out.println( "RMI HelloWorld ready..." ); }

}

Przykład prostej aplikacji - serwer

4. Utworzenie pliku polityki (policy file) - policy.all

policy.all grant { permission java.security.AllPermission "", ""; };

5. Skompilowanie klas, uruchomienie rejestru RMI oraz serweraE:\HelloWorld> javac *.javaE:\HelloWorld> rmic HelloWorldImplE:\HelloWorld> start rmiregistryE:\HelloWorld> java -Djava.security.policy=policy.all HelloWorldServer

RMI HelloWorldServer ready...

Przykład prostej aplikacji - serwer

Przykład prostej aplikacji - klient

Implementacja klienta - kroki postępowania:

1. Implementacja klienta

2. Utworzenie pliku polityki (policy file)

3. Skompilowanie klasy, uruchomienie klienta

Przykład prostej aplikacji - klient

1. Implementacja klienta - HelloWorldClient.java

import java.rmi.*; import java.rmi.registry.*;

public class HelloWorldClient {

public static void main(String[] args) { try { if(System.getSecurityManager() == null) { System.setSecurityManager( new RMISecurityManager() ); } HelloWorld hello = (HelloWorld)Naming.lookup("rmi://localhost/HELLO"); System.out.println(hello.sayHello()); } catch( Exception e ) { System.out.println( e ); } }

}

2. Utworzenie pliku polityki (policy file) - policy.all

policy.all grant { permission java.security.AllPermission "", ""; };

3. Skompilowanie klasy, uruchomienie klientaE:\HelloWorld> javac *.javaE:\HelloWorld> java -Djava.security.policy=policy.all HelloWorldClient

Hello World!!!

Przykład prostej aplikacji - klient

Porównanie RMI z CORBA, DCOM

• Java-RMI jest silnie powiązane z językiem Java. Nie występuje tutaj przekształcanie interfejsów na IDL, po to wywołać zdalnie metodę. To odróżnia RMI od DCOM czy CORBA,gdzie takie przekształcenie jest niezbędne.

• Ze względu na silnie powiązanie z językiem Java-RMI potrafi współdziałać z klasami dziedziczącymi. Nie potrafi tego ani DCOM ani CORBI, ponieważ są to podejścia typowo statyczne .

• To implikuje fakt, że parametry przesyłane podczas wołania metod pomiędzy wirtualnymi maszynami mogą być zwykłymi obiektami Javy. Niemożliwe w DCOM CORBA.

• Ponadto Java-RMI wspiera Distributed Garbage Collection, który rodziela się na lokalne Garbage Collectory w każdej z maszyn wirtualnych

Porównanie RMI z CORBA, DCOM

DCOM - HelloWorldLib.idl [uuid(7371a240-2e51-11d0-b4c1-444553540000),version(1.0)]library HelloWorldl{importlib("stdole32.tlb");[uuid(BC4C0AB0-5A45-11d2-99C5-00A02414C655),dual]interface IHelloWorld : IDispatch{HRESULT sayHello ([out, retval] char*);}

[uuid(BC4C0AB3-5A45-11d2-99C5-00A02414C655),]coclass HelloWorld{interface IHelloWorld;};};

CORBA - HelloWorld.idl

interface HelloWorld{ string sayHello();};}; JAVA - HelloWorld.java

import java.rmi.*;import java.util.*;public interface HelloWorld extends java.rmi.Remote{ public String sayHello() throws RemoteException;}

Praca magisterska

Temat pracy magisterskiej: Bill Of Material

- baza danych na zdalnym komputerze (dostęp przez RMI, a następnie JDBC)

top related