Rich Internet Application 配備アドバイス > コードベースの決定
目次JNLP ファイルでは、コードベースは <jnlp> タグのオプションパラメータです。コードベースは、その JNLP ファイルに記述されているリソースを見つけるためと、その JNLP ファイル自体を検索するための両方の目的に使用されます。技術的な理由から、絶対コードベースが指定されていないかぎり、Java Web Start はサーバーから JNLP ファイルの内容を更新できません。
Java SE 6 Update 10 リリースで導入された新しい Java Plug-in では、明示的に指定されたか、または HTML ドキュメントの場所から暗黙的に取得されたかのどちらかの理由で、コードベースが常にブラウザによって提供されます。これにより、JNLP ファイル内で、コンテンツのツリー全体をあるサーバーから別のサーバーに移動する場合に非常に有効な相対 URL を使用できるようになります。
JNLP ファイルは、ツリー構造内のほかの JNLP ファイルを参照します。JNLP アプレットのルート JNLP ファイルは、<applet> タグによって参照されます。APPLET タグのコードベースは、ルート JNLP ファイルの場所を定義するのに役立ちます。
コードベース計算の規則は次のとおりです。
これを、単純な Java の用語で次のように表現できます。
URL new_codebase = new URL(current_jnlp_dir, current_jnlp_codebase);
このコードベース計算は JSR-56 の拡張ではありません。JSR-56 ではコードベースは絶対値に制限されるわけではないので、相対値も指定できます。
例 1:
this JNLP's location: http://someserver.example.com/this.jnlp
this JNLP's codebase: http://www.example.com/test/
resulting codebase for
parsing this JNLP: http://www.example.com/test/
例 2:
this JNLP's location: http://www.example.com/test2/this.jnlp
this JNLP's codebase: <none>
resulting codebase for
parsing this JNLP: http://www.example.com/test2/
例 3:
this JNLP's location: http://www.example.com/this.jnlp
this JNLP's codebase: codebasedir
resulting codebase for
parsing this JNLP: http://www.example.com/codebasedir
例 4:
相対パスは、HTML ファイルのツリーの場合と同様に、入れ子の各 JNLP を参照するために使用されます。
www.example.com/html/my_applet.html
refers to: my_applet.jnlp
codebase: www.example.com/html
my_applet.jnlp:
codebase not specified
inherits "www.example.com/html"
references JNLP extension "jogl/jogl.jnlp"
jogl/
jogl.jnlp
codebase not specified
inherits "www.example.com/html/jogl"
(the directory containing jogl.jnlp)
references gluegen-rt/gluegen-rt.jnlp
gluegen-rt/
gluegen-rt.jnlp
codebase not specified
inherits "www.example.com/html/jogl/gluegen-rt"
(the directory containing gluegen-rt.jnlp)
次のいずれかをお勧めします。
<applet> タグがコードベースを暗黙的に指定できるようにする。