V předchozím članku skenování přes web jsem popsal naše skenovací řešení pro web. Tentokrát bych se chtěl zaměřit na technický popis.
Řešení se skládá z těchto částí:
- webová stránka
- komunikační applet
- skenovací agent
Po kliknutí na tlačítko na webové stránce se ve skrytém iframe spustí podepsaný applet. Ten se pokusí připojit pomocí RMI na klientském počítači ke skenovacímu agentovi. Pokud se appletu spojení nepodaří, pokusí se agenta spustit pomocí příkazu „javaws“ a počkat na jeho nastartování. Poté applet předá žádost agentovi na skenování a počká na odpověd.
Pokud je opakovaně spuštěno skenování (agent tedy již běží), applet může přímo předat svůj požadavek. V takovém případě je doba od kliknutí po zahájení skenování menší než 100 ms.
Když skenovací agent naskenuje stránku, odešle informaci serveru (zatím bez obsahu stránky), aby připravil prázdnou stránku. Uživatel tak hned vidí, že bylo něco naskenováno, přestože zatím není zobrazen obsah. Když je skenování dokončeno, agent informuje applet a minimalizuje se. Odesílání obsahu na server se provádí na pozadí a uživatel může skenovat další dokumenty.
Řešili jsme, jak z appletu komunikovat s JavaScriptem ve stránce. Jedinou možností, kterou jsme objevili, je pomocí příkazu
this.getAppletContext().showDocument(url, "scanInfo");
kde „scanInfo“ je název "frame" do kterého bude URL zobrazeno. Tímto způsobem je možné volat JavaScriptový kód nebo, jako v našem případě, ukázat informaci uživateli (např. Skenování dokončeno).
Klíčová slova: java scan web applet call javascript function