Vzdialene rozhrania

Mechanizmus volania RMI veľmi hojne využíva rôzne rozhrania. Ak chcete vytvoriť vzdialený objekt, skryjete základnú implementáciu za určité rozhranie. Keď vlastne klient prevezme rozhranie vzdialeného objektu, získava v skutočnosti iba odkaz na toto rozhranie. To je napojene na kód objektu stub, ktorý komunikuje s klientom cez sieť. Tým si však netreba lámať hlavu. Stačí, keď odošlete správu prostredníctvom vlastného odkazu na rozhranie.

Keď budete vytvárať rozhranie vzdialeného objektu, musíte postupovať podľa nasledujúcich krokov:

  1. rozhranie vzdialeného objektu musí byt verejne (nemôžeme ho definovať ako "priateľské"). V opačnom prípade sa klient pri pokuse o prístup k tomuto rozhraniu dočká chybového hlásenia
  2. Rozhranie vzdialeného objektu musí rozširovať rozhranie java.rmi.Remote
  3. Každá metóda vzdialeného rozhrania musí v klauzule throws tiež okrem vlastných špecifických výnimiek deklarovať i výnimku java.rmi.RemoteException.
  4. Vzdialený objekt predaný ako argument alebo návratová hodnota (predaný priamo alebo ako vložený objekt vnútri miestneho objektu) musí byť deklarovaný ako vzdialene rozhranie, v žiadnom prípade nie ako trieda implementujúca rozhranie.

Pozrime sa teraz na jednoduché vzdialene rozhranie, poskytujúce službu presného času:

 
//: c15:rmi:PerfectTimeI.java
//vzdialene rozhranie PerfectTime
package c15.rmi;
import java.rmi.*;
 
interface PerfectTimeI extends Remote {
        long getPerfectTime() throws RemoteException;
} ///:~

Toto rozhranie vyzerá rovnako ako každé iné až na to, že je odvodené od rozhrania Remote a všetky jeho metódy môžu vyvolať výnimku RemoteException. Pamätajte si, že rozhranie a všetky jeho metódy sú automaticky verejne - public.

Späť