Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Remoting je jedným z " čiernej mágie " počítačového programovania pre mnoho vývojárov . V skutočnosti , je to ľahké pre vývojárov prejsť celú kariéru bez obáv o tom . Podrobnosti sú dosť škaredé , ale podstata je jednoduchá : . Programu na jednom počítači , volá kód v inom počítači
Pre uľahčenie Diskusia málo , termín " klient " sa odkazovať na použitie programátora rozvoj , a " server " sa vzťahujú k aplikácii programátor komunikuje s
Pohľad na to , ako Java Remoting práce
Podrobnosti o písaní programu v jazyku Java , ktorý vykonáva vzdialenej komunikácie sú nad rámec tohto článku , ale základná koncepcia stojí krytie . Diaľkový objekt je reprezentovaný rozhraním . Developer získa inštanciu rozhrania a volať metódu na to .
Toto volanie pošle požiadavku na server , ktorý bude spracovávať všetky parametre ( a ak je to nutné vrátiť výsledok ) . Proces odosielania objektov /parametre a zo servera sa nazýva " čerpajú " , a proces prijímania zoradil dáta a previesť ich späť do použiteľných objektov sa nazýva " unmarshalling " .
Spôsobuje
Samozrejme , môže to vždy zle . Možno , že jeden program volá funkciu , ktorá neexistuje na inom počítači . Napríklad , ak sa pokúsite zavolať a.foo ( ) pomocou RMI , a verziu na počítači ste komunikáciu s nemá a.foo ( ) definované , čo rozbiť . Ďalšou možnosťou je , že došlo k chybe na serveri programu , ako je napríklad pripojenie k problému databázy .
Keď sa to stane , budete si RemoteException alebo jeden z jej podtried .
chuti RemoteException
Existujú rôzne podtriedy RemoteException zvládnuť rôzne situácie , ktoré môžu nastať ( pozri sekcia Zdroje pre úplný zoznam podtried ) . Napríklad , ak problém nastane pri zvodu alebo unmarshalling objekty , MarshalException alebo UnmarshalException bude vyvolaná , resp . Pokiaľ dôjde k výnimke , ktorá nie je deklarovaná v podpise volanej metódy ( tj , nekontrolovaný runtime výnimky ) , bude UnexpectedException byť vyvolaná - to by mohlo byť NullPointerException na konci servera, napríklad
< . br > Manipulačná RemoteExceptions
Kým všeobecne Java prax odporúča chytanie najviac špecializované inštancie výnimky , to môže byť ťažké dosiahnuť pri práci s RMI . Je tu príliš veľa možných výnimiek , ktoré je potrebné pri pohľade na rôzne RemoteException podtried , ktoré sa s nimi individuálne asi nestojí za tú námahu .
To znamená , že vývojár sa môže zamerať na potenciálne problémové oblasti , ktoré môžu byť viac či menej zrejmé , v priebehu vývoja . Napríklad v prvom pokuse o vzdialené volanie metódy ( snáď v inicializácii aplikácie ) , developer môže pokúsiť zvládnuť UnknownHostException v špecializovanej spôsobom . Ďalšou možnosťou by mohlo byť všeobecný RemoteException handler , ktorý by mohol mať rôzne akcie založené na určité výnimky stretol .