目次:
JNLP ファイルに署名することには、いくつかの利点があります。次のものがあります。
署名付き JNLP ファイルを作成するには、JNLP ファイル自体に署名するのではなく、JAR ファイルの作成と署名が行われる前に、JNLP ファイルをディレクトリ構造の内側に含めます。JNLP ファイルには必ず APPLICATION.JNLP という名前を付けて、JNLP-INF サブディレクトリに格納します。そのあと、通常の方法で JAR ファイルが作成され、署名されます。Web Start アプリケーションが起動される際、そのアプリケーションを実行するためには、使用される JNLP ファイルと、署名付き JAR 内の JNLP ファイルが同一である必要があります。
JAR ファイルに署名付き JNLP ファイルが含まれている場合は、APPLET タグを使用してアプレットを実行できないことに注意してください。
Java チュートリアルの「Signing and Verifying JAR Files」レッスンには、JAR ファイルの署名方法が説明されています。
JAR バンドルアプリケーションに特別な権限を付与するために、JNLP ファイルに署名できます。変更される可能性の低い場所から署名付きアプリケーションを配備する際に、配備のほかの側面が安定している場合、標準の JNLP ファイルを使用できます (Java チュートリアルの「Signing and Verifying Jar Files」を参照)。
一方、アプリケーションを再配布する必要がある場合や、アプリケーションのアイコンを変更するなど、その他の変更を行わなければいけない場合には、JNLP テンプレートを使ってアプリケーションを配備できます。JDK 7 で導入されたテンプレートは、外部 JNLP ファイルのどの部分が JAR ファイルに埋め込まれた JNLP ファイルと異なる可能性があるのかを定義できます。
テンプレートファイルの名前は JNLP-INF/APPLICATION_TEMPLATE.JNLP になります。名前は大文字である必要があります。ファイル内で未指定のままにすべき要素や属性のフィールドでは、ワイルドカード表記 * がそのフィールドの値として使用されます。セキュリティーを脅かす可能性のある要素や属性では、この機能は使用できません。
1 つのアプリケーションをさまざまなホスト上でさまざまなアプリケーションアイコンを使ってホストするために使用可能なアプリケーションテンプレートの例を次に示します。
<?xml version="1.0" encoding="UTF-8"?> <jnlp codebase="*"> <information> <title>SampleApp</title> <vendor>Sample Company</vendor> <icon href="*"/> <offline-allowed/> </information> <resources> <java version="1.3+"/> <jar href="SampleApp.jar"/> </resources> <application-desc main-class="com.sample.SampleApp"/> </jnlp>
メイン JAR ファイルの JNLP-INF/APPLICATION_TEMPLATE.JNLP ファイルにこのテキストを含んでいるアプリケーションは、メイン JAR ファイルを署名し直さなくても、あるサーバーから別のサーバーに移動したり、そのアプリケーションアイコンを変更したりすることができます。
詳細は、JNLP 仕様 (jcp.org) のバージョン 7.0 を参照してください。