tutorials.de-Buchverschenkaktion 08/2010
+ Auf Thema antworten
  1. #1
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.327
    Blog-Einträge
    29
    Hallo,

    hier mal eine möglicher Weg wie man eine Eclipse RCP Anwendung
    über Java Webstart ausführen lassen kann, veranschaulicht am Beispiel der RCP Mail
    Beispielanwendung.

    Dazu müssen wir das die RCP Mail Beispielanwendung erst mal eine Produktkonfiguration anlegen und dann in ein Feature Packen.
    Anschließend müssen wir einen Keystore anlegen, da wir die verwendeten jars signieren müssen.
    Danach exportieren wir das Feature ein Verzeichnis einer tomcat Webapp
    und ändern die vom Eclipse Feature Export Wizzard generierte jnlp

    (Webstart Deployment Descriptor so ab, dass er auch funktioniert...)

    In meinem Beispiel verwende ich das Eclipse 3.4 SDK, java version

    "1.6.0_10-beta" und Windows Vista.

    1) Key Store anlegen (falls noch nicht vorhanden)
    Wie man das macht findet man u.a. hier:
    http://www.tutorials.de/forum/java/2...en-mit-applet-

    auslesen.html

    Der default Keystore befindet sich dann in eurem Home Verzeichnis als

    .keystore. Bei mir: C:\Users\Tom\.keystore

    2) RCP Mail Beispiel Anwendung anlegen (Name: mail)
    Wie man das Beispiel anlegt findet man u.a. hier:
    http://www.eclipse.org/articles/Arti...tutorial3.html

    Anschließend fügen wir hier noch die Abhängigkeit zu
    org.eclipse.equinox.launcher hinzu.

    3) Nun legen wir eine Produkt Konfiguration an die auf Features basiert.
    -> Mail Projekt markieren -> Kontextmenü -> New -> Product Configuration
    -> und nennen es mail.product
    -> Zum Testen klicken wir nun im mail.product Overview auf Launch Eclipse Application.

    4) Nun legen wir ein Feature an (Name: mailFeature)
    -> Hier sagen wir nun Intialize from a launch configuration
    -> hier mail.product auswählen.
    -> finish

    5) Nun exportieren wir unser mailFeature
    -> als Deployable Features
    -> wir wählen unser mailFeature
    -> wir klicken auf den Tab destination
    -> dort geben wir unseren Zielordner an Beispielsweise:
    -> D:\stuff\apache-tomcat-6.0.18\webapps\jws\tutorials
    -> wir klicken auf den Tab options
    -> "Package as individual Jar archives"
    -> wir klicken auf den Tab Jar signing
    -> "Sign the jar archives using a keystore" auswählen
    -> entsprechende Keystore Location / Alias und Passwort eingeben.
    -> wir klicken auf den Tab java web start
    -> "Create JNLP manifests for the jar archives" auswählen
    -> Site URL: http://meinHostName:8080/jws/tutorials
    -> Bei JRE Version gebt ihr die gewünschte Mindest Java Version an:
    -> Im Beispiel 1.6+
    -> finish

    6) Nun starten wir unseren Webserver (in meinem Fall tomcat)

    Anschließend wurde im Verzeichnis D:\stuff\apache-tomcat-6.0.18\webapps\jws\tutorials\features
    Die Datei mailFeature_1.0.0.jnlp erzeugt.
    Diese kopieren wir nach D:\stuff\apache-tomcat-6.0.18\webapps\jws\tutorials und benennen sie in start_mail.jnlp um.

    Diese Datei hat folgenden Inhalt:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    
    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp spec="1.0+" codebase="http://meinHostName:8080/jws/tutorials/start.jnlp">
        <information>
            <title>MailFeature Feature</title>
            <offline-allowed/>
        </information>
        <security>
            <all-permissions/>
        </security>
        <component-desc/>
        <resources>
            <j2se version="1.6+" />
        </resources>
        <resources>
            <jar href="plugins/com.ibm.icu_3.8.1.v20080530.jar"/>
            <jar href="plugins/javax.servlet_2.4.0.v200806031604.jar"/>
            <jar href="plugins/mail_1.0.0.jar"/>
            <jar href="plugins/org.eclipse.core.commands_3.4.0.I20080509-2000.jar"/>
            <jar href="plugins/org.eclipse.core.contenttype_3.3.0.v20080604-1400.jar"/>
            <jar href="plugins/org.eclipse.core.databinding_1.1.0.I20080527-2000.jar"/>
            <jar href="plugins/org.eclipse.core.expressions_3.4.0.v20080603-2000.jar"/>
            <jar href="plugins/org.eclipse.core.jobs_3.4.0.v20080512.jar"/>
            <jar href="plugins/org.eclipse.core.runtime_3.4.0.v20080512.jar"/>
            <jar href="plugins/org.eclipse.core.runtime.compatibility.auth_3.2.100.v20070502.jar"/>
            <jar href="plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610.jar"/>
            <jar href="plugins/org.eclipse.equinox.app_1.1.0.v20080421-2006.jar"/>
            <jar href="plugins/org.eclipse.equinox.common_3.4.0.v20080421-2006.jar"/>
            <jar href="plugins/org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar"/>
            <jar href="plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.100.v20080509-1800.jar"/>
            <jar href="plugins/org.eclipse.equinox.preferences_3.2.200.v20080421-2006.jar"/>
            <jar href="plugins/org.eclipse.equinox.registry_3.4.0.v20080516-0950.jar"/>
            <jar href="plugins/org.eclipse.help_3.3.100.v20080610.jar"/>
            <jar href="plugins/org.eclipse.jface_3.4.0.I20080606-1300.jar"/>
            <jar href="plugins/org.eclipse.jface.databinding_1.2.0.I20080515-2000a.jar"/>
            <jar href="plugins/org.eclipse.osgi_3.4.0.v20080605-1900.jar"/>
            <jar href="plugins/org.eclipse.osgi.services_3.1.200.v20071203.jar"/>
            <jar href="plugins/org.eclipse.swt_3.4.0.v3448f.jar"/>
            <jar href="plugins/org.eclipse.swt.win32.win32.x86_3.4.0.v3448f.jar"/>
            <jar href="plugins/org.eclipse.ui_3.4.0.I20080610-1200.jar"/>
            <jar href="plugins/org.eclipse.ui.workbench_3.4.0.I20080606-1300.jar"/>
        </resources>
    </jnlp>

    Versucht man nun die Anwendung via Webstart über die URL: http://localhost:8080/jws/tutorials/start_mail.jnlp
    aufzurufen sieht man, dass die generierte jnlp Datei doch noch nicht vollständig / lauffähig ist.

    Wir müssen nun noch:
    -> ein <vendor>-Element hinzufügen,
    -> das <jar href="plugins/org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar"/> als ERSTEN <jar>-Eintrag der ressources Liste angeben (sonst startet es nicht -> Klasse org.eclipse.equinox.launcher.WebStartMain wird nicht gefunden ) Hier ist JWS anscheinend von der Reihenfolge abhängig

    -> Die main-class und Eclipse / Equinox Spezifische Properties mitgeben:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
        <application-desc main-class="org.eclipse.equinox.launcher.WebStartMain">
        <argument>-nosplash</argument>
      </application-desc> 
     
        <resources>
            <j2se version="1.6+" />
                  <property name="eclipse.product" value="mail.product"/> 
          <property 
            name="osgi.instance.area" 
            value="@user.home/Application Data/mail"/>
        <property 
            name="osgi.configuration.area" 
            value="@user.home/Application Data/mail"/>
        </resources>

    Hier das komplette (funktionierende JNLP File)
    start_mail.jnlp:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    
    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp spec="1.0+" codebase="http://meinHostName:8080/jws/tutorials">
        <information>
            <title>MailFeature Feature</title>
            <vendor>tutorials.de</vendor>
            <offline-allowed/>
        </information>
        <security>
            <all-permissions/>
        </security>
        <component-desc/>
        <application-desc main-class="org.eclipse.equinox.launcher.WebStartMain">
            <argument>-nosplash</argument>
        </application-desc> 
        <resources>
            <j2se version="1.6+" />
                  <property name="eclipse.product" value="mail.product"/> 
          <property 
            name="osgi.instance.area" 
            value="@user.home/Application Data/mail"/>
        <property 
            name="osgi.configuration.area" 
            value="@user.home/Application Data/mail"/>
        </resources>
        <resources>
            <jar href="plugins/org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar"/>
            <jar href="plugins/com.ibm.icu_3.8.1.v20080530.jar"/>
            <jar href="plugins/javax.servlet_2.4.0.v200806031604.jar"/>
            <jar href="plugins/mail_1.0.0.jar"/>
            <jar href="plugins/org.eclipse.core.commands_3.4.0.I20080509-2000.jar"/>
            <jar href="plugins/org.eclipse.core.contenttype_3.3.0.v20080604-1400.jar"/>
            <jar href="plugins/org.eclipse.core.databinding_1.1.0.I20080527-2000.jar"/>
            <jar href="plugins/org.eclipse.core.expressions_3.4.0.v20080603-2000.jar"/>
            <jar href="plugins/org.eclipse.core.jobs_3.4.0.v20080512.jar"/>
            <jar href="plugins/org.eclipse.core.runtime_3.4.0.v20080512.jar"/>
            <jar href="plugins/org.eclipse.core.runtime.compatibility.auth_3.2.100.v20070502.jar"/>
            <jar href="plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610.jar"/>
            <jar href="plugins/org.eclipse.equinox.app_1.1.0.v20080421-2006.jar"/>
            <jar href="plugins/org.eclipse.equinox.common_3.4.0.v20080421-2006.jar"/>
            <jar href="plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.100.v20080509-1800.jar"/>
            <jar href="plugins/org.eclipse.equinox.preferences_3.2.200.v20080421-2006.jar"/>
            <jar href="plugins/org.eclipse.equinox.registry_3.4.0.v20080516-0950.jar"/>
            <jar href="plugins/org.eclipse.help_3.3.100.v20080610.jar"/>
            <jar href="plugins/org.eclipse.jface_3.4.0.I20080606-1300.jar"/>
            <jar href="plugins/org.eclipse.jface.databinding_1.2.0.I20080515-2000a.jar"/>
            <jar href="plugins/org.eclipse.osgi_3.4.0.v20080605-1900.jar"/>
            <jar href="plugins/org.eclipse.osgi.services_3.1.200.v20071203.jar"/>
            <jar href="plugins/org.eclipse.swt_3.4.0.v3448f.jar"/>
            <jar href="plugins/org.eclipse.swt.win32.win32.x86_3.4.0.v3448f.jar"/>
            <jar href="plugins/org.eclipse.ui_3.4.0.I20080610-1200.jar"/>
            <jar href="plugins/org.eclipse.ui.workbench_3.4.0.I20080606-1300.jar"/>
        </resources>
    </jnlp>

    Ruft man nun im Browser die entsprechende URL zum JNLP Deskriptor auf:
    Beispielsweise: http://meinHostName:8080/jws/tutorials/start_mail.jnlp

    So wird Java Web Start aktiv, lädt die Jars runter und fragt nach ob dem
    Zertifkat der Anwendung getraut werden soll. Bestätigt man dies sollte
    die RCP Mail Beispielanwendung ohne zu murren auf dem Bildschirm erscheinen.

    Gruß Tom
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  2. #2
    firmadankt firmadankt ist offline Mitglied Bronze firmadankt befindet sich auf einem aufstrebenden Ast
    Registriert seit
    Nov 2007
    Beiträge
    28
    Hallo Thomas,

    meines Wissens müssen jar-files, die man via Webstart benutzen will, signiert werden.

    Gibt es da eine allgemeine Lösung, wie man auch unsignierte jars von Drittanbietern benutzen kann?

    Ich denke mir, dass es Probleme mit der Lizens geben kann, wenn man die jars von Drittanbietern signiert?!

  3. #3
    freshmaker freshmaker ist offline Grünschnabel freshmaker hat eine blütenweiße Weste
    Registriert seit
    Nov 2008
    Beiträge
    1
    Hallo Thomas,

    um erste Erfahrungen mit javaws und RCP zu sammeln habe auch ich dein Beispiel eins zu eins nachgebaut. Leider ohne Erfolg...
    Die Webstart Applikation wird gestart und auch im Cache gespeichert. Ich werde auch nach der Authentifizierung gefragt, jedoch passiert danach garnichts mehr!
    Leider weiss ich nicht was ich Falsch gemacht habe. Vielleicht kannst du mir helfen.
    (Ich nutze auch java 1.6 und eclipse sdk 3.4)

    Hier mein Code:

    <?xml version="1.0" encoding="UTF-8"?>
    <jnlp spec="1.0+" codebase="file:C:/site">
    <information>
    <title>MailFeature Feature</title>
    <vendor>TestVenodr</vendor>
    <offline-allowed/>
    </information>
    <security>
    <all-permissions/>
    </security>
    <component-desc/>
    <application-desc main-class="org.eclipse.equinox.launcher.WebStartMain">
    <argument>-nosplash</argument>
    </application-desc>
    <resources>
    <j2se version="1.6+" />
    <property name="eclipse.product" value="mail.product"/>
    <property name="osgi.instance.area" value="@user.home/Application Data/mail"/>
    <property name="osgi.configuration.area" value="@user.home/Application Data/mail"/>
    </resources>
    <resources>
    <jar href="plugins/org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar"/>
    <jar href="plugins/com.ibm.icu_3.8.1.v20080530.jar"/>
    <jar href="plugins/javax.servlet_2.4.0.v200806031604.jar"/>
    <jar href="plugins/mail_1.0.0.jar"/>
    <jar href="plugins/org.eclipse.core.commands_3.4.0.I20080509-2000.jar"/>
    <jar href="plugins/org.eclipse.core.contenttype_3.3.0.v20080604-1400.jar"/>
    <jar href="plugins/org.eclipse.core.databinding_1.1.0.I20080527-2000.jar"/>
    <jar href="plugins/org.eclipse.core.expressions_3.4.0.v20080603-2000.jar"/>
    <jar href="plugins/org.eclipse.core.jobs_3.4.0.v20080512.jar"/>
    <jar href="plugins/org.eclipse.core.runtime_3.4.0.v20080512.jar"/>
    <jar href="plugins/org.eclipse.core.runtime.compatibility.auth_3.2.100.v20070502.jar"/>
    <jar href="plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20080610.jar"/>
    <jar href="plugins/org.eclipse.equinox.app_1.1.0.v20080421-2006.jar"/>
    <jar href="plugins/org.eclipse.equinox.common_3.4.0.v20080421-2006.jar"/>
    <jar href="plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.100.v20080509-1800.jar"/>
    <jar href="plugins/org.eclipse.equinox.preferences_3.2.200.v20080421-2006.jar"/>
    <jar href="plugins/org.eclipse.equinox.registry_3.4.0.v20080516-0950.jar"/>
    <jar href="plugins/org.eclipse.help_3.3.100.v20080610.jar"/>
    <jar href="plugins/org.eclipse.jface_3.4.0.I20080606-1300.jar"/>
    <jar href="plugins/org.eclipse.jface.databinding_1.2.0.I20080515-2000a.jar"/>
    <jar href="plugins/org.eclipse.osgi_3.4.0.v20080605-1900.jar"/>
    <jar href="plugins/org.eclipse.osgi.services_3.1.200.v20071203.jar"/>
    <jar href="plugins/org.eclipse.swt_3.4.0.v3448f.jar"/>
    <jar href="plugins/org.eclipse.swt.win32.win32.x86_3.4.0.v3448f.jar"/>
    <jar href="plugins/org.eclipse.ui_3.4.0.I20080610-1200.jar"/>
    <jar href="plugins/org.eclipse.ui.workbench_3.4.0.I20080606-1300.jar"/>
    </resources>
    </jnlp>

    Danke!
    Geändert von freshmaker (14.11.08 um 21:59 Uhr)

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 22.08.10, 11:29
  2. Java WebStart - JNLP sofort ausführen
    Von du ciel im Forum Java
    Antworten: 0
    Letzter Beitrag: 10.06.08, 14:17
  3. Eclipse RCP Anwendung über URL starten.
    Von Thomas Darimont im Forum Java Technology News
    Antworten: 0
    Letzter Beitrag: 04.06.08, 13:50
  4. Antworten: 8
    Letzter Beitrag: 17.02.08, 11:04
  5. Java Webstart und Eclipse RCP...
    Von Thomas Darimont im Forum Java
    Antworten: 0
    Letzter Beitrag: 15.10.04, 16:09

Lesezeichen

Lesezeichen