Uruchomienie JavaFX w przeglądarce / PHP Email
Rozpatrzmy uruchamianie apletu JavaFX w przypadku gdy nasza aplikacja Webowa ma przeznaczenie dla wielu różnych hostów. Pliki JNLP i JAR mają różne lokalizacje, a zawartość pliku JNLP i pliku z kodem uruchamiającym aplikację jest różna w zależności od potrzeb (strony zmieniają się dynamicznie).

Podstawowe uruchamianie aplikacji JavaFX można znaleźć na stronie http://javafx.com.

Przykładowa struktura aplikacji:

  • http://localhost/moje_projekty/app/index.php - lokalizacja kodu uruchamiającego aplikację,
  • http://localhost/moje_projekty/app/lib/App.jar - lokalizacja aplikacji JavaFX,
  • http://localhost/moje_projekty/app/index.php?getJnlp=1 - lokalizacja pliku JNLP.

W powyższym układzie cały kod aplikacji będzie znajdował się w pliku index.php. Dzieli się się on na dwie podstawowe części: generowanie pliku JNLP oraz generowanie strony z apletem wewnątrz.

Plik index.php:

<?php
$server_name = $_SERVER['HTTP_HOST']; // (1)
// -- BUDOWANIE PLIKU JNLP --
if(isset($_REQUEST['getJnlp'])) { // (2)
    header("Content-Type:text/xml;charset=utf-8"); // (3)
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    ?>
    <jnlp spec="1.0+" codebase="http://<?=$server_name?>/moje_projekty/app/" href="/index.php/przydatne-w-programowaniu/uruchomienie-javafx-w-przegldarce.html?getJnlp=&lt;?=%24_REQUEST%5B%5C%27getJnlp%5C%27%5D%3F&gt;="><!-- (4) -->
        <information>
            <title>Aplikacja JavaFX</title>
            <vendor>Jacek Chojnacki Adres poczty elektronicznej jest chroniony przed robotami spamującymi. W przeglądarce musi być włączona obsługa JavaScript, żeby go zobaczyć. </vendor>
            <homepage href="/"/>
            <description></description>
            <offline-allowed/>

            <shortcut>
                <desktop/>
            </shortcut>
        </information>
        <resources>
            <j2se version="1.5+"/>
            <extension name="JavaFX Runtime" href="http://dl.javafx.com/1.2/javafx-rt.jnlp"/>
            <jar href="http://<?=$server_name?>/moje_projekty/app/lib/App.jar" main="true"/><!-- (5) -->
        </resources>

        <applet-desc name="Uploader" main-class="com.sun.javafx.runtime.adapter.Applet" width="255" height="65">
            <param name="MainJavaFXScript" value="com.j_ch.app.App.Main"/>
            <param name="setVale" value="<?=$_REQUEST['getJnlp']?>"/><!-- (6) -->
        </applet-desc>
        <update check="background">
    </jnlp>
    <?php
// -- BUDOWANIE KODU STRONY Z WBUDOWANYM APLETEM --
} else {
    header("Content-Type: text/html; charset=UTF-8"); // (7)
    ?><html><head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <title>App</title>
        </head><body>
        <script src="http://dl.javafx.com/1.2/dtfx.js"></script>
        <script>
            javafx(
                {
                      archive: "http://<?=$server_name?>/moje_projekty/app/lib/App.jar", // (8)
                      draggable: false,
                      width: 255,
                      height: 65,
                      code: "com.j_ch.app.App.Main",
                      name: "Aplikacja JavaFX",
                      jnlp_href: "http://<?=$server_name?>/moje_projekty/app/index.php?getJnlp=1" // (9)
                }

            );
        </script>
    </body></html><?php
}
?>


W pierwszej kolejności określamy co generować: JNLP czy HTML za pomocom parametru getJNLP (pt 2) i jaki nagłówek dokumentu ma być zastosowany (punkty 3, 7). Za pomocą zmiennej $server_name utworzonej w punkcie 1 (różna w zależności od hosta) określamy ścieżkę do aplikacji JavaFX (pliku JAR) punkty 5, 8 oraz ścieżkę do pliku JNLP w punktach 4, 9. Parametr getJNLP należy wykorzytać do odwzorowania ścieżki do pliku JNLP (pt 4) oraz jeżeli zachodzi taka potrzeba przekazać go do aplikacji JavaFX (pt 6). Nic nie stoi na przeszkodzie aby przekazywać więcej danych do aplikacji JavaFX za pomocą parametrów GET czy POST. Należy tylko pamiętać aby uwzględnić je w punktach 4, 6, 9.

 

Zmieniony: Poniedziałek, 17 Maj 2010 07:24