Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


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.

Programmierung der Anwendung

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 JNLP-Datei

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> 

Einrichten des Webservers

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:

Abbildung 21.4: Die JNLP-Demo
Abbildung 21.4

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.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.