Implementácia vzdialeného rozhrania

Server musí obsahovať potomka triedy UnicastRemoteObject, ktorá implementuje vzdialene rozhranie. Tato trieda môže nepochybne obsahovať i ďalšie metódy; klient však môže získať prístup iba k metódam definovaným prostredníctvom vzdialeného rozhrania. Platí to samozrejme iba vtedy, keď klient prevezme odkaz iba na rozhranie, nie na triedu, ktorá toto rozhranie implementuje.
Konštruktor vzdialeného objektu musíte definovať explicitne, a to i v prípade, kedy objekt bude využívať iba implicitný konštruktor odvolávajúci sa na implicitný konštruktor bazovej triedy. Tento konštruktor definovať musíte, lebo musí byť schopný vyvolať výnimku RemoteException.

Pozrime sa na implementáciu vzdialeného rozhrania PerfectTimeI:

 
//: c15:rmi:PerfectTime.java
// Implementacia vzdialeneho objektu PerfectTime.
package c15;
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;
import java.net.*;
 
public class PerfectTime extends UnicastRemoteObject implements PerfectTimeI {
    
        //implementace rozhrani
        public long getPerfectTime()
            throws RemoteException {
                       return System.currentTimeMillis();
               }
               //Musi implementovat konstruktor ktory bude schopny vyvolat vynimku RemoteExceptions
               public PerfectTime() throws RemoteException {
                         //super(); //volana automaticky
                 }
                 //registracia obsluhy RMI. pripadne vynimky budu odoslane na terminal obrazovky
 
                 public static void main(String[] args)
                 throws Exception {
                         System.setSecurityManager(new RMISecurityManager());
                         PerfectTime pt = new PerfectTime();
                         Naming.bind("//perun:2005/PerfectTime", pt);
                         System.out.println("Pripraveny zobrazit cas");
                 }
          } ///:~

Metoda main() tu ošetruje všetky podrobnosti nastavenia servera. Ak obsluhujete objekty RMI, musíte v určitom okamžiku vykonať určité kroky:

  1. Vytvoriť a inštalovať správcu zabezpečenia, umožňujúceho vzdialené volanie metód a apletov ; jediným takým správcom pre volanie RMI je, ktorý je súčasťou jazyka java, je trieda RMISecurityManager.
  2. Vytvoriť jednu, alebo viacej inštancií vzdialeného objektu; v predchádzajúcom príklade sme vytvorili objekt PerfectTime.
  3. Registrovať aspoň jeden zo vzdialených objektov pomocou registrov vzdialených objektov RMI. Tento krok je dôležitý pre samozavádzanie: Vzdialený objekt totiž môže obsahovať metódy , vytvárajúce odkazy na ďalšie vzdialené objekty. Registrácia vám umožňuje nastaviť počítač tak, aby sa klient mohol registrovať iba raz - pri načítaní prvého vzdialeného objektu.

Späť