本コラムの対象:
Java Web Startを利用してプログラミングをしている方。Java Web Startの基本を理解している方。
※本コラムでは、Java Web Startの基本的な説明はしていません。
0.Java Web Startのデバッグ法
このコラムでは、Java Web Startで動作するプログラムをリモートデバッグする方法を紹介します。
具体的には、サンプルのJava Web Startプログラムをeclipseでデバッグする手順を紹介しましょう。
このコラムの構成は以下の通りです。
| 今回の内容 |
|
◆ 1.サンプルを動作させるための準備 デバッグ対象となるプログラムと、それを動作させる環境の説明です。動作可能なプログラムと環境を持っている方は、この章を飛ばしてもらってもかまいません。 ◆ 2.Java Web Startのデバッグ用起動 Java Web Startをリモートデバッグするための起動コマンドを紹介します。本コラムのメインです。 ◆ 3.eclipseのデバッグ設定 eclipseでデバッグ用の設定を行い、デバッグを行います。 |
1.サンプルを動作させるための準備
まずこの章では、このコラムで用いるサンプルプログラムの内容、Apacheの設定、Java Web Startの設定を示します。次の章で行うデバッグは、この章の内容を前提に行います。
動作可能なJava Web Startのプログラムと環境を持っている方は、この章を読み飛ばしてもらってもかまいません。 次章のJava Web Startのデバッグ用起動から読んでください。
準備の概要は以下の通りです。
- JavaとApacheサーバが動作する環境を用意します。
- サンプルプログラムのjarとJNLPファイルを作成し、Apacheが配信できるディレクトリにファイルを設置します。
- JNLPファイルに対して、ApacheからMIMEタイプを設定します。
- J2SE1.4がインストールされている。
- Apache HTTP server(Windows版)がインストールされている。
以下、Apacheインストール先は"C:\Program Files\Apache Group\Apache2"であるとします。
1-2.サンプルアプリケーション
以下のソースをコンパイルしてjarにします。jarのファイル名はhello.jarとします。
import javax.swing.*;
public class HelloJWS extends JFrame
{
public HelloJWS()
{
String labelString = "HelloJWS";
JLabel label = new JLabel(labelString);
getContentPane().add(label);
pack();
setVisible(true);
}
public static void main(String[] args)
{
HelloJWS frame = new HelloJWS();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
1-3.JNLP ファイル
hello.jnlpというファイルを作成します。以下のようにXML形式で記述します。 codebaseの値などは環境にあわせて書き換えてください。
<jnlp spec="1.0+" codebase="http://localhost/jws" href="hello.jnlp">
<information>
<title>WebStart Test</title>
<vendor>eriguchi</vendor>
<offline-allowed/>
</information>
<resources>
<j2se version="1.4"/>
<jar href="hello.jar"/>
</resources>
<application-desc main-class="HelloJWS"/>
</jnlp>
1-4.Webサーバのアクセス権限設定
先ほど作ったhello.jarとhello.jnlpをクライアントからアクセス可能な場所にコピーします。
C:\Program Files\Apache Group\Apache2\htdocs\jws\に以下の2ファイルをコピーします。
- hello.jar …アプリケーションを含むJAR
- hello.jnlp …設定ファイル
JNLPのMIMEタイプを設定します。
C:\Program Files\Apache Group\Apache2\conf\.htaccessに記述してください。
AddType application/x-java-jnlp-file jnlp
設定は以上で終了です。Apacheを起動し、ブラウザで以下のアドレスにアクセスして、サンプルが起動することを確認してください。
http://localhost/jws/hello.jnlp
2.Java Web Startのリモートデバッグ用起動
ここからは、実際のデバッグ手順について説明します。
Java Web Startをデバッグ起動しましょう。通常のリモートデバッグとJava Web Startのデバッグで異なるのは、以下に示したコマンドです。以下のコマンドでプログラムを起動させてください。
Java Web Startリモートデバッグ用起動コマンド:
set JAVAWS_HOME=C:\Program Files\Java Web Start
set JAVA_HOME=C:\j2sdk1.4.1_01
%JAVA_HOME%\bin\java.exe" "-Djnlpx.home=%JAVAWS_HOME%" "-Djnlpx.heapsize=NULL,NULL" "-Djnlp
x.jvm=%JAVA_HOME%\bin\java.exe" "-Djnlpx.vmargs=-Xdebug -Dnoagent -Djava.compile
r=NONE -Xrunjdwp:transport=dt_socket,server=y,address=8118" "-Djava.security.poli
cy=file:%JAVAWS_HOME%\javaws.policy" "-DtrustProxy=true" -classpath "%JAVAWS_HOME%\javaws.
jar;%JAVAWS_HOME%\javaws-l10n.jar" com.sun.javaws.Main http://localhost/jws/hello.jnlp
太字で示した箇所が、リモートデバッグ用起動コマンドの重要な部分です。
赤い文字で示した二箇所は、動作環境、プログラムにあわせて書き換えてください。意味は以下の通りです。
| 設定項目 | 上のコマンドでの値 | 意味 |
| デバッグ用ポート番号 | 8118 | デバッグ用ポート番号を指定します。他の番号と重複しなければ、番号付けは任意です。後にアタッチする際、この番号を設定値として用います。 |
| 起動アドレス | http://localhost/jws/hello.jnlp | サンプルプログラムを起動するためのURLです。 |
2-1.通常のリモートデバッグ手法が通じない理由
Java Web Startでプログラムを起動させようとした場合、実際には以下の2つのプログラムが起動します。
- ユーザプログラムを起動するランチャ
- ユーザのプログラム
2-2.解決法
そこで、太字で示した指定が必要になります。-Djnlpx.vmargs=(オプション文字列) で、(オプション文字列)を2のユーザプログラムに渡すことができます。(オプション文字列)にリモートデバッグのオプション指定を行うことで、Java Web Startで動作するプログラムをリモートデバッグできます。
3.Eclipseのデバッグ設定
3-1.プロジェクトの作成
2章のコマンドでJava Web Startプログラムをデバッグ起動したら、Eclipseからアタッチしましょう。
アタッチのためには、デバッグするプログラムを含んだプロジェクトが必要になります。ここではJava Web StartTestという名前のプロジェクトを作成することにします。

図1: HelloJWSクラスを含んだプロジェクトの作成
3-2.eclipseからプロセスにアタッチする
「実行」→「デバッグ」→「リモートJavaアプリケーション」を選択し、新規ボタンを押します。

図2: リモートデバッグの設定画面
「プロジェクト」は、Java Web Startで動作中のプログラムソースが入ったプロジェクトを選択します。
「ポート」には、2章の起動コマンドで指定したポート番号(今回の例では8118)を入力してください。
以上の設定を終えてから「デバッグ」 ボタンを押すことで、デバッグを開始させることができます。

図3: デバッグ画面
4.まとめ
以上が、Java Web Startプログラムをリモートデバッグするための手順です。
通常のJavaオプションの指定法では、Java Web Startプログラムにオプションを指定することができません。しかし -Djnlpx.vmargs=(オプション文字列) という指定法を用いることで、Java Web Startプログラムにオプションを指定することができます。この手法でリモートデバッグオプションを指定すれば、あとは通常のデバッグ手順を実行できます。







Copyright (C) 2008 Acroquest Technology Co., Ltd. All Rights Reserved.