www.wikidata.uk-ua.nina.az
RMI angl Remote Method Invocation programnij interfejs vikliku viddalenih metodiv u movi Java Zmist 1 Opis roboti 2 Priklad 3 Div takozh 4 DzherelaOpis roboti RedaguvatiRozpodilena ob yektna model sho opisuye yakim chinom zdijsnyuyetsya viklik viddalenih metodiv sho pracyuyut na inshij virtualnij mashini Java Pri dostupi do ob yektiv na inshomu komp yuteri mozhna viklikati metodi cogo ob yektu Neobhidno tilki dostaviti parametri metodu na inshij komp yuter povidomiti ob yekt pro neobhidnist vikonannya metodu a potim peredati nazad znachennya yaksho metod ne void Mehanizm RMI daye mozhlivist organizuvati vikonannya vsih cih operacij U terminah RMI ob yekt yakij viklikaye viddalenij metod nazivayetsya kliyentskim ob yektom a viddalenij ob yekt servernim ob yektom Komp yuteri vistupayut u roli kliyenta i servera tilki dlya konkretnogo vikliku Cilkom mozhlivo sho pri vikonanni nastupnoyi operaciyi ci komp yuteri pominyayutsya rolyami tobto server mozhe sam stati kliyentom pri zvernenni do ob yektu na inshomu komp yuteri Pri vikliku metodu viddalenogo ob yektu naspravdi viklikayetsya zvichajnij Java metod inkapsulovanij u specialnomu ob yekti zaglushci stub yakij ye predstavnikom servernogo ob yektu Zaglushka znahoditsya na kliyentskomu komp yuteri a ne na serveri Vona upakovuye parametri viddalenogo metodu u blok bajtiv Kozhen parametr koduyetsya za dopomogoyu algoritmu sho zabezpechuye nezalezhnist vid aparatnogo zabezpechennya Napriklad chisla zavzhdi peredayutsya v poryadku pri yakomu spochatku peredayetsya starshij bajt big endian Pri comu ob yekti piddayutsya serializaciyi Proces koduvannya parametriv nazivayetsya rozgortannyam parametriv parameter marshaling Osnovna meta rozgortannya parametriv peretvorennya yih u format pridatnij dlya peredachi parametriv vid odniyeyi virtualnoyi mashini do inshoyi Metod yakij nalezhit zaglushci stvoryuye blok do yakogo vhodyat taki elementi identifikator viddalenogo ob yektu opis metodu yakij viklikayetsya rozgornuti parametri Potim metod zaglushki posilaye cyu informaciyu serveru Dali ob yekt oderzhuvach vikonuye dlya kozhnogo vikliku viddalenogo metodu nastupni diyi zgortannya parametriv poshuk ob yektu yakij viklikayetsya viklik zadanogo metodu vityaguvannya ta rozgortannya znachennya yake povertayetsya abo viklyuchennya zgenerovanogo cim metodom peredacha paketu yakij skladayetsya iz rozgornutih danih yaki povertayutsya ob yektu zaglushci na kliyentskomu komp yuteri Kliyentskij ob yekt zaglushka zgortaye povernene znachennya abo viklyuchennya otrimane iz servera Rezultat zgortannya staye znachennyam metodu zaglushki Yaksho viddalenij metod povertaye viklyuchennya to ob yekt zaglushka povtorit jogo v seredovishi ob yektu kliyenta Priklad RedaguvatiInterfejs Hello import java rmi Remote import java rmi RemoteException public interface Hello extends Remote public String helloWorld throws RemoteException Klas HelloImpl import java rmi server UnicastRemoteObject import java rmi RemoteException public class HelloImpl extends UnicastRemoteObject implements Hello public HelloImpl throws RemoteException porozhnye ale musit kidati RemoteException public String helloWorld throws RemoteException return Hello world Klas Server import java rmi Naming import java rmi server UnicastRemoteObject import java rmi registry Registry import java rmi registry LocateRegistry import java rmi RemoteException import java rmi NotBoundException public class Server private static final String SERVER NAME Server private static final String HOST localhost private String port public Server String port this port port public void runServer throws IllegalArgumentException NotBoundException RemoteException HelloImpl helloImpl new HelloImpl Registry registry LocateRegistry createRegistry Integer parseInt port 10 String url HOST port SERVER NAME registry rebind SERVER NAME helloImpl Klas Test import java rmi Naming import java rmi registry Registry import java rmi registry LocateRegistry import java rmi RemoteException import java rmi NotBoundException public class Test public static final String SERVER NAME Server use server lt port gt start server client lt host gt lt port gt start client public static void main String args throws Exception if args 0 equals server Server server new Server args 1 server runServer System out println Server started on port args 1 else String lookupString args 1 args 2 SERVER NAME Hello hello Hello Naming lookup lookupString System out println RMI object found System out println hello helloWorld Kompilyuyemo klasi ta interfejs iz komandnogo ryadka javac java Generuyemo zaglushku i skeleton karkas rmic HelloImpl otrimayemo 2 fajla stub i skel Zapuskayemo server java Test server 8888 bud yakij port gt 1023 Na inshomu komp yuteri zapuskayemo kliyenta java Test client xxx xxx xxx xxx 8888 vash hostVazhlivo Cherez fayervol ce pracyuvati ne bude Div takozh RedaguvatiCajo JiniDzherela Redaguvatihttp forum vingrad ru faq topic 157916 html Arhivovano 28 lyutogo 2011 u Wayback Machine ros Taylor Ian J From P2P to Web Services and Grids Peers in a Client Server World Springer 2005 angl http www javaworld com javaworld jw 11 2000 jw 1110 smartproxy html Arhivovano 19 veresnya 2013 u Wayback Machine angl The Java RMI tutorial a good starting point to learn RMI Also check the Hello World in RMI the Java RMI online training angl java rmi Sun s Java API Reference for the RMI package angl Wollrath Ann Riggs Roger Waldo Jim PDF A Distributed Object Model for the Java System Retrieved 2009 02 11 angl Otrimano z https uk wikipedia org w index php title RMI amp oldid 39561338