Java remote method invocation: Porovnání verzí

Smazaný obsah Přidaný obsah
Bez shrnutí editace
Xqbot (diskuse | příspěvky)
Řádek 1:
{{Wikifikovat}}
'''Java remote method invocation''' ('''Java RMI''') je technologie [[Java (programovací jazyk)|programovacího jazyka Java]] umožňující z jednoho virtuálního stroje (JVM) volat metody objektů na jiném virtuálním stroji, který obvykle běží na jiném počítači (HOSTU). Výhodou RMI je, že programátor zachazí se vzdáleným objektem, jako by byl místní. Rozhraní a třídy, které jsou zodpovědné za funkčnost RMI jsou nadefinovány v balíčku java.rmi. RMI se poprvé objevilo v JDK 1.1 a využívalo protokol JRMP. Později byla uvedena nová verze RMI, RMI-IIOP, aby RMI bylo kompatibilní s platformně nezávislým systémem [[CORBA]].
 
== Architektura ==
Řádek 9:
Skeleton je protějšek stubu na straně serveru. Má na starost rozbalení masrshall streamů; vyvolání metody skutečného objektu; zachycení návratové hodnoty nebo výjimky metody, která byla zavolána a zabalení této hodnoty / vyjímky do marshall streamu; Od Java 2 SDK není skeleton vyžadován.Pro generování stub a skeleton se používá RMI překladač, rmic.
 
Pokud metoda, která je na vzdáleném objektu zavolána vrací nějakou hodnotu, nebo vyhodí vyjímku, tak stub se postará opětovně o její rozbalení a vrácení / vyvolání na straně klienta.
 
Vrstva remote reference je prostředník mezi stub a skeleton.
Vrstva transport vytváří a zpravuje spojení mezi dvěma JVM. Toto spojení využívá protokol TCP/IP. Nad protokolem TCP/IP RMI využívá protokol Java Remote Method Protokol (JRMP). Od verze 1.3 Java 2 SDK je k dispozici další verze RMI zvaná RMI/IIOP, která namísto JRMP používá Internet Inter-ORB Protocol (IIOP).
 
== Získávání vzdálených objektů ==
Aby mohl klient využívat metody vzdáleného objektu, je nutné, aby na tento objekt měl referenci, kterou musí server poskytnout. Pro získávání a poskytování objektů se využívá RMI registry, kam server pomocí třídy java.rmi.Naming zanáší stub pro daný objekt a umožní klientu si tento stub z RMI registry s pomocí třídy java.rmi.Naming stáhnout. Referenci lze získat i v návratové hodnotě metody, nicméně minimálně první stub se musí stáhnout přes RMI registry.
 
== Posílání Parametrů ==
V RMI lze jako parametr či návratovou hodnotu posílat veškeré primitivní typy, vzdálené objekty a objekty, které implementují rozhraní java.io.Serializable. Posílání objektů, které nejsou vzdálené, se řeší jejich serializováním a posláním ve streamu. Pokud tedy server vrátí klientu jako návratovou hodnotu tento typ objektu, je na straně klientu vytvořen nový objekt. Naproti tomu pokud je vrácenou hodnotou vzdálený objekt, předá se klientovi stub.
 
== Distribuce RMI tříd ==
RMI podporuje dynamické stahování tříd. To znamená že pokud například klient dostane jako návratovou hodnotu objekt třídy, pro kterou nemá potřebnou definici, je schopen si ji stáhnout ze vzdáleného ftp nebo http serveru. Potřebné URL ukazující na ftp/http server je je posláno společně s daným objektem.
 
== Příklad použití ==
Třída, jejíž objekty chceme vzdáleně volat, se skládá z rozhraní a vlastní implementace.
 
Řádek 88:
</source>
 
== Odkazy ==
[http://java.sun.com/developer/onlineTraining/rmi/RMI.html#UsingRMI jGuru: Remote Method Invocation (RMI)]<br />
[http://java.sun.com/javase/technologies/core/basic/rmi/index.jsp Remote Method Invocation Home]
Řádek 94:
[[Kategorie:Java|RMI]]
 
[[ar:تقنية استدعاء الطرائق عن بعدالبعادي]]
[[de:Remote Method Invocation]]
[[en:Java remote method invocation]]