Hello JWS

というわけで、Hello JWSです。

環境設定

必要な環境としては、JavaWebStartのランタイム?が必要です。 でも、JDK1.4にははじめから付いてるので、それを使うことにしました。 JDK1.4をインストールすると勝手にデスクトップにJavaWebStartの ショートカットが作られるのが、昔はうざいと思いましたが、 最初から同梱されてるのはやっぱ便利っすね。

手順概要

開発者ガイド にそって、設定をすすめました。 "Web サイトの設定"の記述を抜粋すると以下のような手順になります。
  1. Java Web Start の MIME タイプを使用するように Web サーバを構成する
  2. アプリケーション用の JNLP ファイルを作成する
  3. アプリケーションを Web サーバからアクセス可能にする
  4. Web ページから JNLP ファイルへのリンクを作成する
必要なファイルは以下のようになります。 ここではWebアプリケーション用に配置していますが、 ただのHTTPサーバーでも動きます。 jwsはWebアプリケーション名です。
※最低限必要なファイルはjarとjnlp、あとMIME-TYPEの設定が必要ってことになります。
webapps/
        jws/
            hello.jar    …アプリケーションを含むJAR
            hello.jnlp   …設定ファイル
            hello.html   …リンク元のHTML
            WEB-INF/
                     web.xml …JNLPのMIMEタイプを定義

0. アプリケーションを作る

上の手順はWebサイトの設定なんで、その前に実行するアプリケーションを 作成しましょう。 ここでは簡単な(HelloJWSと表示するラベルを張るだけの)Swingアプリケーションを作成します。 コンパイルして、mainから実行可能です。
import javax.swing.*;

public class HelloJWS extends JFrame{ 

  public HelloJWS(){ 
    JLabel label = new JLabel("HelloJWS");
    getContentPane().add(label);
    pack(); 
    setVisible(true); 
  }

  public static void main(String argv[]){ 
    HelloJWS frame = new HelloJWS();
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  }
}
作成した.classをJarにパッケージします。ここではhello.jarを作成します。
jar cf hello.jar .

1.MIMEタイプの設定

JNLPのMIMEタイプを設定します。

Apacheの例) .htaccessに記述
AddType application/x-java-jnlp-file jnlp
Tomcatの例) web.xmlに記述
  <mime-mapping>
    <extension>jnlp</extension>
    <mime-type>application/x-java-jnlp-file</mime-type>
  </mime-mapping>
ここでは、web.xmlで設定しました。

2.アプリケーション用の JNLP ファイルを作成する

hello.jnlpというファイルを作成します。 中身はXML形式で、以下のように記述します。 codebaseの値などは自分の環境に書き換える必要があります。
<jnlp 
  spec="1.0+" 
  codebase="http://localhost:8080/jws" 
  href="hello.jnlp">

  <information> 
    <title>Hoge Test</title> 
    <vendor>miya</vendor> 
    <offline-allowed/> 
  </information> 

  <resources> 
    <j2se version="1.4"/> 
    <jar href="hello.jar"/> 
  </resources> 

  <application-desc main-class="HelloJWS"/> 

</jnlp>

3.アプリケーションを Web サーバからアクセス可能にする

さっき作ったhello.jarをクライアントからアクセス可能な場所にコピーします。 WEB-INFの下に置いたらアクセスできません。 ここでは、コンテキストルートにおきます(上のファイルの配置参照)。

4.Web ページから JNLP ファイルへのリンクを作成する

アプリケーションへのリンク元のHTMLを作成します。 hello.htmlというファイルを作成します。
<html>
<body>
<h2>Java Web Startのテスト</h2>
<a href="hello.jnlp">Hello JWS</a>
</body>
</html>
ブラウザで.jnplファイルのURLを直打ちすれば、このファイルは不要です。 でもHTMLからリンクで起動できることを体感するために、作っときましょう。

実行する

Webサーバーを起動し、ブラウザで先ほどのhello.htmlにアクセスします。 私はほぼデフォルト設定ママのTomcatを使い、上の位置にファイルを置いて、以下にアクセスしました。
http://localhost:8080/jws/hello.html
リンクをクリックすると、 Java Web Startアプリケーションが実行できましたね? しょぼいけど。

サーバに置いてみた

ローカルで実験してたんですが、 考えてみると、普通にHTTPサーバで動くんだったら、 muimi.comでもファイル置けば、動くじゃん。 ということで、置いてみました。 前に述べた必要なファイルはここにあります。 hello.htmlから実行できます。

JNLPがブラウザで見ると、XMLで表示されちゃう!という人は、 MIME-TYPEの設定がうまく行っていません。 あと、設定は正しいはずだ、という人は一度ブラウザのキャッシュ を消してみましょう(←これで30分ハマった)。

参考

ASAHI-Net - 最新拡張子(MIME Type)一覧
ミケネコの htaccess リファレンス
Arkレビュー:番外編3



(2002/8/4)
もどる