21.2.1 | Beispiel |
Ein kleines Beispiel soll nun die Programmierung und Verwendung von Java-Web-Start-Anwendungen illustrieren. Ausführlichere Beschreibungen finden Sie in den darauf folgenden Abschnitten.
Die Anwendung besteht aus einem Fenster (ist also kein Applet, sondern eine Applikation), in dem man eine Grafik sehen kann. Um ein Feature von Java Web Start zu demonstrieren, kann man diese Grafik zusätzlich über einen Menüpunkt ausdrucken, sofern der Benutzer dies zulässt (denn die Applikation ist nicht signiert und läuft demnach in der Java Web Start Sandbox).public class JNLPDemo extends JFrame { /** Das Label mit der Grafik */ private JLabel imageLabel = new JLabel( new ImageIcon(getClass().getResource("moon.jpg"))); public JNLPDemo() { super("JNLP-Demo"); // Menü zum Drucken und Schließen JMenuBar menuBar = new JMenuBar(); this.setJMenuBar(menuBar); JMenu fileMenu = new JMenu("Datei"); menuBar.add(fileMenu); fileMenu.add(new AbstractAction("Drucken") { public void actionPerformed(ActionEvent e) { print(); } }); fileMenu.addSeparator(); fileMenu.add(new AbstractAction("Beenden") { public void actionPerformed(ActionEvent e) { System.exit(0); } }); // Die Applikation Beenden, wenn Fenster // geschlossen wird setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); getContentPane().setLayout(new BorderLayout()); getContentPane().add(new JScrollPane(imageLabel)); // Größe einstellen und anzeigen setSize(400, 400); setVisible(true); } private void print() { try { // Druck-Dienst anfordern PrintService ps = (PrintService) ServiceManager.lookup("javax.jnlp.PrintService"); // Standard-Seitenformat PageFormat pf = ps.getDefaultPage(); // Dialog zur Einsetllung des Seitenformates PageFormat newPf = ps.showPageFormatDialog(pf); ps.print(new Printable() { public int print(Graphics g, PageFormat pageFormat, int pageIndex) { // Das Label mit der Grafik ausdrucken imageLabel.paint(g); return pageIndex == 0 ? Printable.PAGE_EXISTS : Printable.NO_SUCH_PAGE; } }); } catch (UnavailableServiceException ex) { JOptionPane.showMessageDialog(this, "Drucken nicht möglich, da der Druckdienst "+ "nicht zur Verfügung steht", "Fehler", JOptionPane.ERROR_MESSAGE); } catch (Exception ex) { ex.printStackTrace(); JOptionPane.showMessageDialog(this, ex.getMessage(), "Fehler", JOptionPane.ERROR_MESSAGE); } } public static void main(String[] args) { JNLPDemo JNLPDemo1 = new JNLPDemo(); } }Um das oben gezeigte Beispiel zu kompilieren, muss nach Installation von Java Web Start die JAR-Datei javaws.jar aus dem Installationsordner eingebunden werden. Diese JAR-Datei enthält die javax.jnlp-Interfaces, die der Java-Web-Start-Client implementiert. Über diese Interfaces können dann bestimmte vom Client zur Verfügung gestellte Dienste angesprochen werden, wie in diesem Beispiel ein Druck-Service. Weitere Informationen zu den Diensten finden Sie im Abschnitt 21.2.4.
Nachdem die Klasse kompiliert wurde, werden die generierten Klassen und die Datei moon.jpg in einem JAR namens jnlpdemo.jar zusammengefasst.
Die folgende XML-Datei (ausführlich im Abschnitt 21.2.1 beschrieben) dient dazu, die Applikation zu beschreiben. Wie man in der Datei sieht, wird davon ausgegangen, dass die JNLP-Datei unter der Adresse http://localhost/jnlpdemo.jnlp zu erreichen ist. Der nächste Abschnitt geht dazu auf die Webserver-Konfiguration ein. Die Bedeutungen der einzelnen Elemente und Attribute finden Sie im Abschnitt 21.2.2.<?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.0+" codebase="http://localhost" href="jnlpdemo.jnlp"> <information> <title>JNLP-Demo</title> <vendor>dpunkt.de</vendor> <description>JNLP-Demo Applikation</description> <icon href="jnlpdemo.gif"/> <offline-allowed/> </information> <resources> <j2se version="1.3"/> <jar href="jnlpdemo.jar"/> </resources> <application-desc main-class="de.dpunkt.jnlp.JNLPDemo"/> </jnlp>
Als Webserver können Sie beispielsweise den freien Apache-Webserver (http://httpd.apache.org) benutzen. Nach der Installation muss zunächst in der Datei conf/mime.types der richtige Mime-Type für die JNLP-Datei hinzugefügt werden:application/x-java-jnlp-file jnlp
In dem Dokumentenpfad, der über http://localhost/ nach dem Starten erreichbar ist (typischerweise das Unterverzeichnis htdocs), müssen nun drei Dateien kopiert werden, die auf der CD enthalten sind:
- jnlpdemo.jnlp
Die JNLP-Datei, die die Beschreibung der Applikation beinhaltet.- jnlpdemo.gif
Ein Icon, das die Applikation repräsentiert und in der JNLP-Datei angegeben wurde.- jnlpdemo.jar
Die JAR-Datei mit den kompilierten Klassen und der anzuzeigenden Grafik.Nachdem alle Dateien an der passenden Stelle sind, sollten Sie durch den Aufruf von http://localhost/jnlpdemo.html die Applikation starten können. Klicken Sie auf den Menüeintrag »Drucken« erscheint neben einem Druckeinstellungen-Dialog die Abfrage, ob die Applikation auf den Drucker zugreifen darf. Wenn Sie dies erlauben, sollte die Grafik auf Ihrem Drucker ausgegeben werden.