< 目次

アプリケーション起動用Webページの作成


この章では、次のトピックについて説明します。

はじめに

次の情報は、Java SE 6 update 10リリースに配備ツールキット・スクリプトが導入される前のものです。
配備ツールキット・スクリプトの使用方法については、「ブラウザでのデプロイメント」を参照してください。

あるWebページからJNLP経由でアプリケーションを起動するには、そのページ内にJNLPファイルへのリンクが含まれている必要があります。たとえば、Webサイトhttp://www.MySite.com上にあるアプリケーションapp.jnlpを起動できるようにするには、ページ内に次のリンクを含める必要があります。

<a href=http://www.MySite.com/app.jnlp>Launch the application</a>

ただし、ユーザーのコンピュータにJava Web Startがインストールされていない場合もあります。したがって、ページ内に、そうした場合に対応するためのロジック(スクリプト)を含める必要があります。実際、ページ内に次のようなロジックを含める必要があります。

Java Web Startがインストールされているかどうかを確認する

次に、スクリプトおよび自動インストール・ページのHTMLについて説明します。

Netscape上にJava Web Startがインストールされているかどうかを確認する

JNLP経由でのアプリケーション起動時にWebページ上で最初に実行する必要のあるスクリプトを、次に示します。

<SCRIPT LANGUAGE="JavaScript"> 
var javawsInstalled = 0;  
var javaws142Installed=0;
var javaws150Installed=0;
var javaws160Installed = 0;
isIE = "false"; 
if (navigator.mimeTypes && navigator.mimeTypes.length) { 
   x = navigator.mimeTypes['application/x-java-jnlp-file']; 
   if (x) { 
      javawsInstalled = 1; 
      javaws142Installed=1;
      javaws150Installed=1;
      javaws160Installed = 1; 
  } 
} 
else { 
   isIE = "true"; 
} 
</SCRIPT> 

このスクリプトは、navigator.mimeTypesオブジェクトとその変数navigator.mimeTypes.lengthを検索し、ブラウザがNetscape、IEのどちらであるかを判断します。lengthが0であった場合、そのブラウザはIEであるとみなされます。というのも、IEではnavigator.mimeTypes配列は定義されていますが、その内容は常に空だからです。lengthが0以外であった場合、そのブラウザはNetscapeであるとみなされ、さらにそのNetscape上におけるJNLP MIMEタイプの存在有無がチェックされます。存在していた場合、javawsInstalledjavaws142Installedjavaws150Installed、およびjavaws160Installedのすべてに1が設定されます。Netscapeの場合、どのバージョンのJava Web Startがインストールされているかは判断できないため、4つの変数のすべてに1が設定されます。

IE上にJava Web Startがインストールされているかどうかを確認し、インストールされている場合はそのバージョンを確認する

上記JavaScriptのあとに、次のような、Internet Explorerブラウザ関連の変数を設定するVBScriptを記述する必要があります。

<SCRIPT LANGUAGE="VBScript">
on error resume next
If isIE = "true" Then
  If Not(IsObject(CreateObject("JavaWebStart.isInstalled"))) Then
     javawsInstalled = 0
  Else
     javawsInstalled = 1
  End If
  If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.4.2.0"))) Then
     javaws142Installed = 0
  Else
     javaws142Installed = 1
  End If 
  If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.5.0.0"))) Then
     javaws150Installed = 0
  Else
     javaws150Installed = 1
  End If  
  If Not(IsObject(CreateObject("JavaWebStart.isInstalled.1.6.0.0"))) Then
     javaws160Installed = 0
  Else
     javaws160Installed = 1
  End If  
End If
</SCRIPT>

このVBScriptが実行されるのは、先のJavaScriptで設定された変数isIE"true"である場合、つまり、エンド・ユーザーのブラウザがInternet Explorerである場合です。このスクリプトは、JavaWebStart.dll内のisInstalled COMオブジェクトをインスタンス化し、これを使って次の4つのことを判断します。

上記2つのスクリプトの実行が完了すると、次に示すように、変数javawsInstalledjavaws142InstalledjavawsInstalled150、およびjavawsInstalled160に1、0のいずれかが設定された状態となります。

ブラウザ

javawsInstalled

javaws142Installed

javaws150Installed

javaws160Installed

Internet Explorer

任意のバージョンのJava Web Startがインストールされている場合は1、そうでない場合は0。

Java Web Start 1.4.2がインストールされている場合は1、そうでない場合は0。

Java Web Start 1.5.0がインストールされている場合は1、そうでない場合は0。

Java Web Start 1.6.0がインストールされている場合は1、そうでない場合は0。

Netscape Navigator

任意のバージョンのJava Web Startがインストールされている場合は1、そうでない場合は0。

任意のバージョンのJava Web Startがインストールされている場合は1、そうでない場合は0。

任意のバージョンのJava Web Startがインストールされている場合は1、そうでない場合は0。

任意のバージョンのJava Web Startがインストールされている場合は1、そうでない場合は0。

Java Web Startがインストールされている場合はアプリケーションを起動し、そうでない場合は自動インストール・ページまたは汎用ダウンロード・ページへのリンクを表示する

さらに別のJavaScriptを使って、次のいずれを実行するかを判断できます。

これらのシナリオを処理するJavaScriptを、次に示します。

<script language="JavaScript">
/* Note that the logic below always launches the JNLP application
 *if the browser is Gecko based. This is because it is not possible
 *to detect MIME type application/x-java-jnlp-file on Gecko-based browsers. 
 */
if (javawsInstalled || (navigator.userAgent.indexOf("Gecko") !=-1)) {
    document.write("<a href=http://www.MySite.com/app.jnlp>Launch 
        the application</a>");
} else {
    document.write("Click ");
    document.write("<a href=http://java.sun.com/PluginBrowserCheck?
        pass=http://www.MySite.com/download.html&
        fail=http://java.sun.com/javase/downloads/ea.jsp>here</a> ");
    document.write("to download and install JRE 5.0 and 
        the application.");
}
</SCRIPT>

注:

  1. このスクリプトで使用されているのは、javawsInstalledだけです。javaws142Installedjavaws150Installedjavaws160Installedは使用されていません。

  2. ?」と「&」の直後にある改行は、コードを読みやすくするためだけに挿入されています。実際のスクリプトでは、href文字列内に改行を含めないでください。

javawsInstalledが1である場合(Java Web Startがすでにクライアント上で利用可能になっている場合)、スクリプトは、アプリケーションのjnlpファイルへのリンクを表示します。Java Web Startがクライアント上にインストールされていない場合、スクリプトは代わりに、java.sun.com Webサイト上のPluginBrowserCheckプログラムへのリンクを表示します。PluginBrowserCheckは、クライアントがMicrosoft Windowsプラットフォーム上でInternet Explorerを使用しているかどうかをチェックします。該当する場合、PluginBrowserCheckは自動インストール・ページhttp://www.MySite.com/download.htmlにユーザーをリダイレクトします。(Windows上で動作するIE向けの自動インストール・ページの作成方法については、次のセクション「自動インストール・ページを作成する」を参照。)PluginBrowserCheckは、ユーザーがMicrosoft Windows上でInternet Explorerを使用していないと判断した場合、java.sun.com上の6.0 JRE汎用ダウンロード・ページにユーザーをリダイレクトします。

自動インストール・ページを作成する

download.htmlファイルは、サーバー側に配置する必要があります。このファイルに含まれる特殊なOBJECTタグとPARAMタグにより、JRE 6.0の自動インストーラがクライアントにダウンロードされます。Java Web Startに加え、ActiveXコントロールが、クライアントにダウンロードされます。ActiveXコントロールは、新しくインストールされたJava Web Startを使ってアプリケーションを起動します。download.htmlファイルのサンプルを、次に示します。

<HTML>
<BODY>
<OBJECT codebase="http://java.sun.com/update/1.6.0/jinstall-6-windows-i586.cab#Version=6,0,0,0" 
classid="clsid:5852F5ED-8BF4-11D4-A245-0080C6F74284" height=0 width=0>
<PARAM name="app" value="http://www.MySite.com/app.jnlp">
<PARAM name="back" value="true">
<!-- Alternate HTML for browsers which cannot instantiate the object -->
<A href="http://java.sun.com/javase/downloads/ea.jsp">
Download Java Web Start</A>
</OBJECT>
</BODY>
</HTML>

OBJECTタグによって、JRE 6.0の自動インストーラが収められた.cabファイルが取得されます。

URL

http://java.sun.com/update/1.6.0/jinstall-6-windows-i586.cab

により、Java SE 6リリースで使用できる最新の更新リリースが返されます。

文字列Version=6,0,0,0は、上記のCLSIDで登録されたwsdetect.dllバージョンの比較に使用します。ローカル・マシンにdllがインストールされており、そのバージョンが指定のVersion以上であれば、ローカル・マシンにdllをロードするだけです。それ以外は、指定のコード・ベースからJavaをダウンロードしてインストールします。

クライアントへのJREのインストール完了後にアプリケーションが自動的に起動されるように、アプリケーションのjnlpファイルの場所がPARAMタグに指定されています。

app: Java Web StartのActive Xコントロールがインストール(またはロード)されると、Java Web Startが呼び出され、このURLに指定されたアプリケーションが起動します。

back: アプリケーション起動後のブラウザの動作を制御します。現在のページを継続することもでき(この場合、download.html)、以前のページに戻ることもできます。

アプリケーション開発に関連する問題の詳細は、次の章、「アプリケーション開発時の考慮点」を参照してください。


Copyright © 1993, 2020, Oracle and/or its affiliates. All rights reserved.