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 StartでJavaのアプリケーションを動かす場合にはデフォルトではsecurityが厳しい状態で動くことになります。アクセス権を広くするためには、jarに対する署名が必要になります。
jarを署名するには、jarsignerコマンドを使う必要があります。さらにそのために、keytoolコマンドを使ってキーストアを用意してその鍵と証明書情報を準備する必要があります。
さて、具体的な手順は以下のとおり。
- まずはキーストアの作成。「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で実行できます。