04.11.2014 Views

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

elektronická verzia publikácie - FIIT STU - Slovenská technická ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

56 Štúdie vybraných tém programových a informaných systémov<br />

public class CounterClient<br />

{<br />

public static void main(String argv []) throws Exception<br />

{<br />

// tu musime ziskat referenciu na pocitadlo<br />

String ior = ...;<br />

// inicializacia ORB na strane klienta<br />

ORB orb = ORB.init(argv, null);<br />

// prevedenie externej formy (IOR) na lokalnu referenciu<br />

org.omg.CORBA.Object obj = orb.string_to_object(ior);<br />

Counter c = CounterHelper.narrow(obj);<br />

}<br />

}<br />

// dalej pracujeme s lokalnou referenciou (c)<br />

c.setValue(0);<br />

for (int i = 0; i < 1000; i++)<br />

c.increment();<br />

System.out.println("Vysledok: " + c.getValue());<br />

Príklad 2-4. Zdrojový kód klienta objektu Counter.<br />

Na zaiatku je potrebné získa referenciu na poítadlo, s ktorým budeme pracova.<br />

Pri bežnej „nedistribuovanej“ aplikácii by sme takúto referenciu získali vytvorením novej<br />

inštancie poítadla 4 , v tomto prípade musíme referenciu získa inak – napríklad pomocou<br />

služby Naming Service, ku ktorej sa vrátime neskôr. alšie riadky kódu predstavujú inicializáciu<br />

implementácie CORBA a vytvorenie inštancie zástupcu (t.j. stub) pre poítadlo.<br />

Kód vyznaený tuným písmom už pracuje priamo so zástupcom, takže programátor<br />

sa môže plne venova aplikanej logike bez nutnosti riešenia otázok komunikácie<br />

v distribuovanom prostredí.<br />

Poznámka: Okrem tu uvedených modulov je potrebný ešte server, ktorý vytvorí<br />

a zaregistruje inštanciu poítadla. Ide opä o niekoko riadkov kódu, pre pochopenie myšlienky<br />

architektúry CORBA však nie sú podstatné.<br />

2.3.3 alšie možnosti a služby v rámci architektúry CORBA<br />

Okrem už naznaených možností poskytuje architektúra CORBA mnohé alšie, najmä:<br />

1. Napriek tomu, že najastejším prípadom je volanie známych a vopred definovaných<br />

rozhraní (o umožuje použitie predkompilátora generujúceho kód pre zástupcov<br />

na strane klienta), CORBA poskytuje možnos vola aj rozhrania definované až v ase<br />

vykonávania klienta. Prostredníctvom špecializovaného rozhrania (Dynamic Invocation<br />

Interface) môže klient postupne špecifikova názov operácie, ktorá má by zavolaná<br />

(napr. „setValue“) a hodnoty jednotlivých parametrov (napr. 100) a následne<br />

operáciu zavola. Princíp je podobný dynamickému volaniu metód objektov, napr.<br />

prostredníctvom Java Reflection API a je vhodný vtedy, ke konkrétne rozhranie,<br />

ktoré sa má zavola, nie je v ase kompilácie klienta známe.<br />

4<br />

Napríklad takto: Counter c = new CounterImpl()

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!