Java Web Start入門

Java Web StartでSwingアプリケーションを配信する手順を簡単にまとめました。

  1. (Swingなどの)GUIアプリケーションを開発し、そのクラスをJARファイルにアーカイブします。
  2. アプリケーションを配信するWebサーバに、JNLPのMIMEタイプを設定します。 Apacheの場合は、conf/mime.typesに次のように書き加えます。

    application/x-java-jnlp-file    jnlp
    

    または、JNLPファイルを配置するディレクトリの.htaccessに、次のように書きます。

    AddType application/x-java-jnlp-file jnlp
    

    Tomcatの場合、Webアプリケーションのweb.xmlに次のように書きます。

    <mime-mapping>
      <extension>jnlp</extension>
      <mime-type>application/x-java-jnlp-file</mime-type>
    </mime-mapping>
    

  3. JNLPファイル「jwstest.jnlp」を作ります。

    <jnlp spec="1.0+" codebase="http://localhost:8015/app16" href="jwstest.jnlp">
    
      <information>
        <title>Hello JWS Test</title>
        <vendor>me</vendor>
        <offline-allowed/>
      </information> 
    
      <resources>
        <j2se version="1.4"/>
        <jar href="jwstest.jar"/>
      </resources>
    
      <application-desc main-class="test.swing.LabelExample"/> 
    </jnlp>
    

    jnlpタグのcodebaseとhref属性は、このJNLPファイルを置くディレクトリのURLと、 そのJNLPファイルの名前です。 jarタグのhref属性は、配信するWebアプリケーションをアーカイブしたJARファイルを指定します。 JDBCドライバなど、その他のJARファイルがある場合には、jarタグを列挙して指定します。 最後に、application-descタグのmain-classは、 配信されたJARファイルの中から、Java Web Startによって起動されるアプリケーションのクラス (そのクラスのmain()メソッドからアプリケーションが始まるところのクラス) を指定します。 コマンドライン引数を指定したい場合には、 application-descタグの中にargumentタグを使って指定します。
  4. JARファイル、JNLPファイルをWebから見える場所に置きます(WEB-INFには置かないこと)。 これは、JNLPファイルの中の記述に合わせます。例えばここの例では、コンテキストルートに置いています。
  5. JNLPファイルへのリンクを持ったWebページ「index.html」を作ります。

    <html>
    <body>
    <h3>Java Web Startのテスト</h3>
    
    <a href="jwstest.jnlp">サンプルアプリケーション</a><br>
    
    </body>
    </html>
    

  6. アプリケーションサーバを起動し、Webブラウザでアクセスして確認します。 PCにJava Web Startがインストールされていれば、アプリケーションが起動されます。
なお、起動するアプリケーションが、 クライアントのファイルシステムにアクセスする種類のものである場合には、 JARファイルにjarsignerユーティリティを使って署名をしておく必要があります。

% keytool -genkey -keystore mykeys -alias me
パスワード:******
(mykeysファイルができる)

% jarsigner -keystore mykeys target-application.jar me

JDBC and Swing Top

(first uploaded 2004/05/13 last updated 2004/12/22, URANO398)

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル