Java Web Startについて調べたメモ

jarファイルとjnlpファイルを作ってWeb Serverへ配置後、Apacheの場合は以下のMime Typeを追加する必要あり。

AddType application/x-java-jnlp-file jnlp

jnlpファイルの書き方は、Oracle Technology Network for Java Developers | Oracle Technology Network | Oracle を参照。

Java Web StartJavaのアプリケーションを動かす場合にはデフォルトではsecurityが厳しい状態で動くことになります。アクセス権を広くするためには、jarに対する署名が必要になります。

jarを署名するには、jarsignerコマンドを使う必要があります。さらにそのために、keytoolコマンドを使ってキーストアを用意してその鍵と証明書情報を準備する必要があります。
さて、具体的な手順は以下のとおり。

  1. まずはキーストアの作成。「myKeyStore」と「AliasName」は、適当に置き換えて実行してください。
keytool -genkey -keystore myKeyStore -alias AliasName

このコマンドを実行すると、デジタル署名に関する情報を聞かれますが、所詮はオレオレ証明書なので適当に入力してください。キーストアが用意できたら、一応内容の確認。

keytool -selfcert -alias AliasName -keystore myKeystore
keytool -list -keystore myKeystore

これでキーストアの準備が完了です。
次に署名対象の jarファイルを用意して署名を行います。「jar_file_path」には、jarファイル名を指定します。

jarsigner -keystore myKeyStore -storepass ******** jar_file_path AliasName

これで署名が完了です。以下のコマンドで、署名の検証が行えます。

jarsigner -verify -verbose -keystore myKeyStore -certs jar_file_path

以上の手順で、署名されたjarを作れます。最後に、jarファイルを作り直すたびに、署名をやり直すのは面倒なので、Antによる自動化に関するメモ。この場合もキーストアの作成は最初に1回やっておく必要があります。
署名を行うタスクはsignjarタスクになります。具体的には、以下のように記述します。

<signjar jar="jar_file_path" alias="AliasName" storepass="パスワード" keystore="myKeyStore" />

signjarは基本タスクなので、追加のjarなどが必要なくAntで実行できます。