czwartek, kwietnia 22, 2010

Uruchamianie apletów u klienta

Na podstawie dokumentacji SUN-a – jest to fragment większej całości dokumentacji sunowskiej  pt. “Applets”. Uruchomienie aplety odbywa się albo poprzez wyspecyfikowanie charakterystyk apletu w znaczniku “APPLET” (lub w nowej edycji HTML 4 “OBJECT”), lub w znaczniku “JNLP” (zastosowanie technologii JNLP). Aplet ładuje się u klienta podczas uruchomienia strony HTML która go zawiera. Model ochrony klienta powoduje, że tylko podpisane aplety są uruchamianie poza piaskownicą przeglądarki. Aplety które mają mieć większe prawa dostępu do zasobów lokalnych muszą być podpisane przez certyfikat. Podczas uruchamiania aplet pyta o zgodę na dostęp do zasobów. Bez zgody użytkownika aplet nie ma dostępu do zasobów lokalnych komputera. Uwaga: dodatkowa konfiguracja maszyny wirtualnej java jest możliwa poprzez przystawkę Java Control Panel w pasku podczas uruchamiania strony z apletem.

W przypadku apletów nie podpisanych (“gołych”) zaleca się wykorzystanie protokołu JNLP do definiowania zakresu praw dostępu do zasobów lokalnych. JNLP ma specjalne ustawienia  do definiowania zakresu dostępu do lokalnych zasobów. Do korzystania z JNLP potrzebna jest konfiguracja serwera www (uczulenie na tworzenie nagłówków MIME o typie JNLP) lub podstawienie pod nazwę pliku JNLP plik z rozszerzeniem PHP. Oto przykład:

<?php

header("Content-Type: application/x-java-jnlp-file");

readfile('uruchomPodpis.jnlp');

?>

plik jnlp:

<applet name="CA",
        jnlp_href = 'uruchomPodpis.php',
        width = 300,
        height = 300 >
    <PARAM NAME=Server-Library VALUE=
https://dvcl4.coig.com:10066/podpisAplet/ext>
    <PARAM NAME=Properties-File VALUE=cryptoapplet.properties>
</applet
>

“Goły” aplet może niewiele. Może m.in. – połączyć się ze serwerem  z którego została załadowana strona. Aplet załadowany z lokalnych zasobów (a więc ktoś go tam zainstalował) nie ma żadnych ograniczeń.

Aplety nie podpisany załadowane poprzez JNLP mają większe prawa m. in. mogą czytać i pisać do lokalnych zasobów. Uwaga: wśród parametrów konfiguracyjnych nie ma mowy o uruchamianiu procesu zewnętrznego np. jakieś aplikacji desktopowej (takie sztuczki może dokonać wyłącznie aplet podpisany).

Wywołanie nawet podpisanych apletów z poziomu kodu JS na stronie HTML powoduję ograniczenie zakresu działania apletu tak jakby był niepodpisany.

Z przykładu zamieszczonego w rozdziale “Invoking Applets Methods from javascript code” widać, że jest bardzo łatwo sterować metodami zawartymi w aplecie z punktu widzenia JS. Sytuacja odwrotna tj. dostanie się do elementów strony HTML czy też skryptów na niej jest również możliwa dzięki technologii LiveConnect. Funkcjonalność ta zawarta jest w pakiecie ‘netscape.javascript’ lub można ją włączyć poprzez wyspecyfikowanie pakietu ‘…/jre/lib/plugin.jar’

Ciekawa definicja apletu na stronach pomocy Eclipse – “An applet is a bean that is designed to be run inside a Web browser and inherits from java.applet.Applet or javax.swing.JApplet .”

Brak komentarzy: