作成日 2003年9月3日  
バージョン N/A  
プラットフォーム N/A  

 

 

Java拡張機能メカニズムによるMapObjects Javaアプレット配布方法
WebブラウザでJavaアプレットを配布することは、広範囲な開発能力を提供するリッチWebクライアントのために使用される一般的な方法です。Javaアプレットを実行するために、Webブラウザは、ブラウザ固有のJava仮想マシン(JVM)あるいはサンが提供しているJava Plug-inのいずれかを使用することができます。ほとんどのWebブラウザはJVMを含んでいますが、たいてい時代遅れであり、現在のバージョンのJava開発環境のアプレットを機能制限します。この状況を改善するために、サンは多数のブラウザのバージョンに最新のJava実行環境(JRE)を統合するJava Plug-inを導入しました。ブラウザ内のJavaアプレットの機能拡張に加え、カスタム・アプレットに含まれるクラスを配置する方法を導入しました。Java Plug-inがクライアント・マシン上のアプレット・クラスにアクセスすることができなければならないので、ローカルでクラスを配置し取得する方法を提供しています。この方法はJava拡張機能インストールと呼ばれ、Java Plug-in バージョン1.3の新しい特徴です。
JREに含まれたJava拡張機能メカニズムは、Javaアプリケーションが各JVMのlib/extディレクトリに含まれるクラスにアクセスすることを即時に提供します。このディレクトリで参照されるクラスは、JAR(Java Archive)ファイルに含まれていなければなりません。各JVMを利用するJavaアプリケーションあるいはアプレットが実行されるとき、これらのクラスはアプリケーションのクラスパスの最初に自動的に追加されます。Java Plug-inを使用してJavaアプレットを配布することは、クライアントに一連のJARファイルをインストールすることを意味します。JREのlib/extディレクトリにこれらのファイルをインストールすることは、アプレットがJava拡張機能メカニズムを利用することを可能にします。Java Plug-inのJava拡張機能インストールは、JREのlib/extディレクトリに特定のクラス・アプレットをインストールする3つの方法をサポートします。

raw Java拡張機能

Java拡張機能は、Javaアプレットに必要なJARファイルがダウンロードされ後、JREのlib/extディレクトリにコピーされます。アプレットが参照するJARファイルは、ダウンロード要求を提供するためにマニフェスト・ファイルを含んでいます。各JARファイルが署名されていなければならないことに注意してください。


Javaインストーラ

Java拡張機能は、ダウンロードされたJavaインストーラからインストールされます。JavaアプレットはJARファイルとして1つにまとめて配布されます。この方法は、開発者がクライアント・マシンのJARファイル・アプレットのインストールを管理することができます。


ネイティブインストーラ

Java拡張機能は、ダウンロードされたネイティブインストーラからインストールされます。ネイティブインストーラは、OS特有のラッパー(.exe)として、JARファイルとクライアントマシンへのコピーに必要な適切なJARファイルを含みます。配布はサードパーティのアプリケーションAPIを使用して管理されます。


配布手順
この文書では、raw Java拡張機能でアプレットを配布する方法の説明およびサンプルを提供します。この方法は、Java Plug-inによって自由にアクセス可能となる最小限の開発方法であることに注意してください。 Java拡張機能メカニズムを使用して、MapObjecrts Javaアプレットを配布する方法は次のようなステップとなります(このサンプルはWindows環境およびWebサーバにアクセスすることを前提にしていることに注意してください)。
  1. MapObjectsインストール位置の/lib以下のディレクトリには、MapObjectsアプリケーションによって利用されるライブラリ(JAR, DLL)が含まれています。テンポラリの位置(例えば、C:\temp\moj)にこれらすべてのJARファイルをコピーしてください。2つのDLLファイルがこのディレクトリ内にあることに注意してください。これらはMapObjects Javaアプレットが機能するために要求されません。これらは比較的大きく、またコピーする必要はありません。

  2. コピーしたすべてのJARファイルを解凍してください。解凍にはWinZipやJDKのjar(jar -xvf <jarファイル>)コマンドを使用します。

  3. META-INFディレクトリに移動します。このディレクトリ内のESRI.DSA、ESRI.SF、MANIFEST.MFファイルだけを削除してください。

  4. 次のクラスはGeography NetworkからArcIMS Imageサービスのレイヤを1つ含んだMapObjects Javaアプレットを作成します。

    import java.awt.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import com.esri.mo.ui.bean.*;
    import com.esri.mo.ui.tb.*;
    import java.applet.Applet;
    
    public class MOJApplet extends JApplet {
    
      public void init(){
    
    	com.esri.mo.ui.bean.Map map1 = new com.esri.mo.ui.bean.Map();
    	com.esri.mo.ui.bean.Toc toc1 = new com.esri.mo.ui.bean.Toc();
    	
    	Container contentPane = getContentPane();
    	JSplitPane jSplitPane1 = new JSplitPane();
    
    	setSize(new Dimension(400, 300));
    
    	com.esri.mo.ui.bean.Layer layer_img = new com.esri.mo.ui.bean.Layer();
    	layer_img.setDataset("2;http://www.geographynetwork.com;ESRI_Pop;ImageServer;ESRI_Pop;image");
    	map1.add(layer_img);
    
    	toc1.setMap(map1);
    
    	contentPane.add(jSplitPane1, BorderLayout.CENTER);
    	jSplitPane1.add(map1, JSplitPane.RIGHT);
    	jSplitPane1.add(toc1, JSplitPane.LEFT);
    
    	ZoomPanToolBar zoomPanToolBar1 = new ZoomPanToolBar();
    	zoomPanToolBar1.setMap(map1);
    	contentPane.add(zoomPanToolBar1, BorderLayout.NORTH);
    	setVisible(true);
      
      }
    }

    新規テキストファイルに、上記内容を貼り付けて、"MOJApplet.java"として保存します。

  5. MOJApplet.javaをコンパイルしてMOJApplet.classファイルを作成します。

  6. "manifest.txt"という名前のテキストファイルを作成し、次のテキストを追加します。

    Manifest-Version: 1.0
    Extension-Name: all 
    Specification-Vendor: ESRIMOJ_SPEC
    Specification-Version: 1.0 
    Implementation-Vendor-Id: MOJ2002 
    Implementation-Vendor: ESRIMOJ_IMP
    Implementation-Version: 1.0
    

    **最後の行が適用されないので、必ず最後の行の後で改行してください。

  7. このディレクトリの内容とステップ6で作成したカスタム・マニフェスト・ファイルをJARファイルにします。次のコマンドを使用してください(最後のピリオドを必ず入力してください)。

    jar -cvfm all_unsigned.jar manifest.txt .

    MapObjects Javaアプレットに必要とされるすべてのクラス(アプレット・コードおよびコアMapObjects Javaクラス)を含む、all_unsigned.jarファイルが作成されます。ステップ6で作成されたマニフェスト・ファイルはバージョン情報(Manifest, Specification, Inplementation)を格納し、JARファイル内のMETA-INF/manifest.mfで作成者を識別するために使用されます。さらに、all.jarは拡張機能名として"all"が割り当てられます。アプレットによって必要とされる適切なJAR(拡張機能)およびバージョンを見つけるために、拡張機能名およびSpecificationとImplementationバージョンがJava拡張機能メカニズムで使用されます。

  8. MapObjects Javaアプレットによって必要とされる拡張機能を見つけて、インストールするために使用されるマニフェストを格納するために、テンポラリディレクトリ(例えば、C:\temp\mojapp)を作成します。

  9. C:\temp\mojappに"manifest.txt"という名前のテキストファイルを作成し、以下のテキストを追加します(Webサーバのホスト名を適宜変更してください)。

    Manifest-Version: 1.0
    Main-Class: MOJApplet
    Extension-List: all
    all-Extension-Name: all
    all-Specification-Version: 1.0
    all-Implementation-Version: 1.0
    all-Implementation-Vendor-Id: MOJ2002
    all-Implementation-URL: http://hostname/website/mojapp/all.jar
    

    **最後の行が適用されないので、必ず最後の行の後で改行してください。
    **機能拡張名により青字の部分を適宜変更してください。

  10. ステップ9で作成したカスタム・マニフェスト・ファイルだけを含むJARファイルを作成します。C:\temp\mojappで次のコマンドを使用します。

    jar -cvfm mojapp_unsigned.jar manifest.txt

    ステップ9で作成されたMANIFESTファイルは、initメソッドのある(Mainクラス)クラス名を格納するために使用されます。そして拡張機能は、JARファイル内にあるMETA-INF\manifest.mfのJARファイル(拡張機能リスト)で必要とされます。複数の拡張機能が必要な場合、スペースで分けられたリストが拡張機能リスト・パラメータに含まれなければなりません。各拡張機能は、名前、バージョン、ID、URLによって参照されることに注意してください。Implementation-URLパラメータは拡張として使用されるJARファイルを見つけるために使用されます。Extention-Name、Specification-Version、Implementation-Versionは、このJARファイル(mojapp.jar)に含まれるアプリケーションで利用される正しい拡張機能にアクセス可能であることを確認します。

  11. raw Java Plug-inインストーラを使用するためには、すべてのJARファイルに署名しなければなりません。アプレットをパブリックに公開させる場合、クライアントに不便を感じさせないために認証機関(例えばVerisignなど)から証明書を得たいと思うかもしれません。このサンプルでは、JARファイルに署名するために、テスト証明書を作成します。Java SDKに含まれるkeytoolユーティリティはこの作業を行なうために使用されます。コマンド・ウィンドウを開いて、C:\tempディレクトリに移動してください。コマンドプロンプトで以下を入力します。

    keytool -genkey -dname "cn=Your Team Name, ou=Your Division, o=Your Company, c=location" -alias TestCert -keypass pw1234 -keystore c:\keystore -storepass pw1234 -validity 1024

    これは、Cドライブ上に"C:\keystore"という、テスト証明書が格納されるkeystoreファイルを作成します。公開鍵および非公開鍵もkeystore内に作成されます。

  12. 証明書を作成するために、コマンドプロンプトで以下を入力してください。

    keytool -export -alias TestCert -keystore c:\keystore -file key.cer -keypass pw1234 -storepass pw1234

    これはC:\temp内に証明書ファイル"key.cer"を作成します。この証明書は、MapObjects JavaのJARファイル用に公開鍵として使用される情報を含んでいます。 Windowsの場合、このファイルをダブルクリックしWebサーバ上の登録に証明書を追加します。UNIXの場合、次のコマンドを使用します。

    keytool -import -trustcacerts -alias TestCert -file /tmp/key.cer -keystore /usr/jdk1.3/lib/security/cacerts


  13. アプレットに使用されるJARに署名してください。C:\temp\mojに移動して、以下のコマンドを使用してください。

    jarsigner -keystore c:\keystore -storepass pw1234 -keypass pw1234 -signedjar all.jar all_unsigned.jar TestCert

    これは"all.jar"ファイルを作成します。C:\temp\mojappに移動して、以下のコマンドを使用してください。

    jarsigner -keystore c:\keystore -storepass pw1234 -keypass pw1234 -signedjar mojapp.jar mojapp_unsigned.jar TestCert

    これは"mojapp.jar"ファイルを作成します。

  14. C:\websiteに移動して"mojapp"ディレクトリを作成するか、Webサーバの"website"仮想ディレクトリに移動します。このディレクトリ内に、メイン・アプレット・クラス(MOJApplet)、JARファイル(mojapp.jar)を参照するHTMLページ(mojapp.html)を作成してください。例えば、以下のようになります。

    <html>
      <object CLASSID="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" ID="imsSite" WIDTH="500" HEIGHT="300">
      <param NAME="code" VALUE="MOJApplet" >
      <param NAME="archive" VALUE="mojapp.jar" >
     </object>
    </html>

    "mojapp.jar"のMANIFESTファイルがステップ9で説明した項目を含むことを忘れないで下さい。すべてのサポートするJARが読み込まれる要因となります。

  15. C:\website\mojappディレクトリにmojapp.jarおよびall.jarを移動します。

  16. 現在使用しているJREディレクト(例えば、C:\Program Files\JavaSoft\JRE\1.3.1_02)以下の\lib\extディレクトリを確認してください。"all.jar"ファイルが存在しないこと確認し、もし存在すれば削除してください。

  17. ブラウザを開き、HTMLページ"mojapp.htm"を読み込みます(例えば、http://hostname/website/mojapp/mojapp.html)。

  18. "all"拡張機能をダウンロードする許可が要求されます。"はい"をクリックしてください。接続速度に依存して、ダウンロード・プログレスバーが表示されるかもしれません。

  19. テスト証明書への許可が、以前JARファイル(ステップ11で作成)に署名したことを認めるように尋ねられるかもしれません。"はい"をクリックします。MapObjects Javaアプレットが読み込まれます。Java Plug-inコンソールがアクティブな場合、アプレットとGeography Networkのとコミュニケーションを見ることができます。

  20. クライアント・マシンにJava Plug-inがインストールされ、有効になっていることに注意してください。Java Plug-inのインストール過程を自動化するためには、以下のようにHTML文書の中のOBJECTタグに"codebase"を追加してください。

    codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4_0-win.cab#Version=1,4,0,mn"

    Java Plug-inが検知されない場合、JRE1.4.0がインストールされます。補足情報としては、次のサイトを参照してください。
    http://java.sun.com/j2se/1.4/ja/docs/ja/guide/plugin/developer_guide/using_tags.html

 

関連情報
Java拡張機能の配備