BigAdmin System Administration Portal
GlassFish アプリケーションサーバーの Java Web Start テクノロジとアプリケーションクライアント
Print-friendly VersionPrint-friendly Version

記事一覧

パート 1 - はじめに
パート 2 - JNLP と Java Web Start テクノロジ
パート 3 - GlassFish アプリケーションクライアント: Java Web Start の体験
パート 4 - セキュリティー、高度なトピック、および展望


Sun Java System Application ServerJava EE SDK は無料でダウンロードできます。
 

この記事のこのパートでは、開発者、管理者、およびエンドユーザーの観点から、GlassFish アプリケーションサーバーでの Java Web Start テクノロジの体験について考察します。

開発者として、Java Web Start テクノロジを使用してアプリケーションクライアントを起動するには、何をする必要があるかという疑問を持っているはずです。このセクションでは、その疑問に答えます。

Java Web Start アクセスのためのアプリケーションクライアントの開発

組み込みアプリケーションクライアントを持つ EAR ファイルを構築する場合を考えます。あるいは、スタンドアロンのアプリケーションクライアントを書き込む場合です。ここでほかに必要なことは、Java Web Start のサポートを有効にすることです。

(このスペースは意図的に空白です。)

Java Web Start サポートの恩恵を得るために、アプリケーションの書き込みやパッケージ化以外のことをする必要はありません。これは、既存のアプリケーションクライアントで Java Web Start テクノロジを使用できることを意味します。

Java Web Start のサポートのカスタマイズ

アプリケーションクライアントの META-INF/ ディレクトリにパッケージ化している sun-application-client.xml 記述子ファイルに作成するか追加することで、特定のアプリケーションの Java Web Start サポートに関するいくつかの項目をカスタマイズできます。 (将来の計画では、さらに多くのカスタマイズが可能になるように提唱します。) GlassFish サーバーは、これらのカスタマイズを指定する、<java-web-start-access> 記述子の新しいオプション要素をサポートしています。

  • Java Web Start アクセスの無効化 – このアプリケーションクライアントに、Java Web Start テクノロジを使用してアクセスしてほしくない場合は、次の行を

    <eligible>false</eligible>
    
     
    <java-web-start-access> の下の子要素として追加します。 (アプリケーションクライアントの配備後に、Java Web Start アクセスを有効にするかどうかは、管理者も制御できます。以下の説明を参照してください。)

  • URL の指定 – GlassFish サーバーは、エンドユーザーが各アプリケーションクライアントを起動できる URL を自動的に割り当てます。myApp という名前の EAR 内に myClient という名前のアプリケーションクライアントをパッケージ化する場合、そのアプリケーションクライアントを起動するデフォルトの URL は http://host:port/myApp/myClient です。myOtherClient という名前のスタンドアロンアプリケーションクライアントを配備する場合、デフォルトの URL は http://host:port/myOtherClient です。

    http://host:port/drawTool を使用してクライアントを起動するには、次の行を

    <context-root>drawTool</context-root>
    
     
    <java-web-start-access> の下に子として追加します。

  • ダウンロード表示への影響 – Java Web Start ソフトウェアがアプリケーションの JNLP ファイルと JAR ファイルをダウンロードするときに、進捗画面を表示し、アプリケーションのベンダーを示すことができます。デフォルトで、GlassFish アプリケーションサーバーは、アプリケーションクライアントの application-client.xml 記述子からの表示名をベンダー名として使用します。その画面に表示されているテキストを制御するには、次の行を

    <vendor>MyCorp, Inc.</vendor>
    
     
    <java-web-start-access> の下に子として追加します。その後、Java Web Start ソフトウェアはダウンロードと起動の間に、テキスト「My Corp. Inc.」を持つスプラッシュ画面を使用するようになります。

    Java Web Start ソフトウェアがアプリケーションをダウンロードしたあとに、ダウンロードしたアプリケーションのカタログ内にそのアプリケーションとアイコン画像を表示します。ベンダーの値に次のようなエントリを追加して、使用するアイコン画像を指定できます。

    <vendor>images/drawtoolIcon.jpg::MyCorp,Inc.</vendor>
     
    また、起動中に Java Web Start ソフトウェアが使用するスプラッシュ画面の画像も指定できます。

    <vendor>images/drawtoolIcon.jpg::images/drawtoolSplash.jpg::MyCorp,Inc.</vendor>
     
    アイコン画像を指定せずに、スプラッシュ画面の画像を指定できます。

    <vendor>::images/drawtoolSplash.jpg::MyCorp,Inc.</vendor>
    
     
    各画像のパスについて、アプリケーションクライアントモジュール内の画像を指す相対 URI を使用します。これらの例では、アプリケーションクライアントモジュールの images/ サブディレクトリに画像ファイルをパッケージ化しています。

    前述したようなタグを入力することは、この情報を指定するのに理想的な方法ではありません。開発者によってこの拡張機能は依頼されました、この方法により、GlassFish ソースコードの変更を最小限にして、これらのカスタマイズが提供されました。将来の変更では、生成された JNLP ドキュメントの、より正常なカスタマイズと制御ができるようになります。

これらのカスタマイズについて覚えておくべき重要点は、オプションだということです。

アプリケーションクライアントを含む EAR を配備すると即座に、GlassFish アプリケーションサーバーは Java Web Start アクセスをサポートします。これは、開発者が <eligible>false</eligible> をアプリケーションクライアントの sun-application-client.xml 記述子ファイルに指定していないことが前提です。エンドユーザーが Java Web Start テクノロジを使用してアプリケーションクライアントを起動できるようにするために、管理者による追加の手順は不要です。

Java EE では、サーバーにスタンドアロンアプリケーションクライアントを配備する必要はありません。エンドユーザーシステムで ACC を使用して、スタンドアロンアプリケーションクライアントを直接実行できます。ただし、スタンドアロンアプリケーションクライアントへの Java Web Start アクセスを提供するために GlassFish アプリケーションサーバーを使用する場合は、スタンドアロンアプリケーションクライアントを配備する必要があります。それ以外の場合は、サーバーはアプリケーションクライアントについて認識していないので、JNLP を生成したり、エンドユーザーシステムでの実行に必要な JAR を提供したりすることはできません。

管理者として、アプリケーションクライアントを含むアプリケーションを配備する必要のある場合があります。しかし、ある理由からアプリケーションクライアントに Java Web Start のアクセスを禁止したい場合もあります。アプリケーションの配備後に、GlassFish の asadmin ユーティリティを使用して、ほかの資格のあるアプリケーションクライアントへの Java Web Start アクセスを無効にできます。これにより、アプリケーションクライアントの sun-application-client.xml 記述子ファイルを編集して、アプリケーションクライアントを Java Web Start アクセスに対して資格のない状態にし、アプリケーションを再構築する必要がなくなります。

はじめに、myClient という名前のアプリケーションクライアントを持つ myApp という名前の EAR を配備する場合を考えます。次のコマンドを使用して、myApp 内のアプリケーションクライアントのすべてに対して、Java Web Start サポートを無効にできます。

asadmin set  domain.applications.j2ee-application.MyApp.java-web-start-enabled="false"
 

代わりに、同じ式を true に設定することにより、Java Web Start アクセスをあとで再度有効にできます。構成情報を参照するためのドット形式の表記の詳細については、GlassFish のAdministration Guideを参照してください。

次に、myClient という名前のスタンドアロンアプリケーションクライアントを配備する場合を考えます。次のコマンドを使用して、スタンドアロンアプリケーションクライアントへの Java Web Start アクセスをオフにできます。

asadmin set domain.applications.appclient-module.MyClient.java-web-start-enabled="false"
 

アプリケーションクライアントの開発者が記述子ファイルに <eligible>false</eligible> を設定した場合、管理者が asadmin set 設定コマンドを使用して、Java Web Start ソフトウェアからアプリケーションクライアントをアクセス可能にはできません。

アプリケーションクライアントを開発して配備したあと、エンドユーザーが Java Web Start テクノロジを使用してアプリケーションクライアントを起動するときに、それ自体の動作の違いはわからないはずです。当然、アプリケーションクライアントを起動するエンドユーザーの体験は、従来の appclient スクリプトを使用したときに表示されるものとは大きく異なります。ただし、実行開始後のアプリケーションクライアントは、起動方法には関係なく、同様に動作します。

アプリケーションクライアントの起動

アプリケーションクライアントを含むアプリケーションの配備後、アプリケーションクライアントを起動するための URL をエンドユーザーが利用できるようにする必要があります。電子メールで URL へのリンクをユーザーに送信したり、リンクを Web ページ (アプリケーションクライアントを含む同じアプリケーション内の Web ページも可能) に送信したりできます。

リンクを 1 回クリックするだけで、エンドユーザーはアプリケーションクライアントと一緒に必要な JAR ファイルをダウンロードして、アプリケーションクライアントを起動できます。

クライアントの最初のバージョンや更新のいずれについても、エンドユーザーのシステムにファイルを配布する必要はありません。アプリケーションを変更した場合、エンドユーザーが更新を使用できるようにするために、アプリケーションを再配備する以外に必要な作業はありません。

アプリケーションクライアントを起動するには、ほかに 2 つの方法があります。GlassFish アプリケーションサーバーには、グラフィック管理コンソールがあります。このコンソールでは、配備済みのスタンドアロンアプリケーションクライアント、または組み込みアプリケーションクライアントにナビゲートして、クライアントを起動できます。これは、多くのエンドユーザーがクライアントを起動するために使用する方法とは考えられませんが、これはアプリケーションクライアントを使って Java Web Start の機能をテストし、デモンストレーションすることを非常に簡単にします。

また、Java Runtime には、起動する Java Web Start アプリケーションの URL を受け取る javaws コマンドがあります。アプリケーションクライアントの URL を指定すると、アプリケーションクライアントの起動についても同様に、適切に機能します。これは、多くのエンドユーザーがアプリケーションクライアントを起動する方法として選択しないかもしれませんが、テストには役立ちます。

進捗の監視

エンドユーザーが Java Web Start アプリケーションを起動すると、次のようなデフォルトのスプラッシュ画面が表示されます。

図 1: デフォルトのスプラッシュ画面
図 1: デフォルトのスプラッシュ画面
 

次に、Java Web Start ソフトウェアが、アプリケーションに関する情報を表示します。ダウンロード中は、Java Web Start ソフトウェアが次に示すような進捗バーを表示します。

図 2: 進捗バー
図 2: 進捗バー
 

また、アプリケーションの起動を知らせる同様な画面を表示することがあります。

証明書の信頼と拒否

次に、セキュリティーに関するダイアログボックスがいくつか表示されることがあります (セキュリティーの詳細については、この記事の以降のセクションを参照してください。)アプリケーションクライアントコンテナに含まれるいくつかのコードには、動作するために格上げしたアクセス権を必要とするものがあります。Java Web Start のセキュリティー規則に準拠するために、GlassFish アプリケーションサーバーはそのようなコードを含む JAR に署名します。Java Web Start ソフトウェアは、署名された JAR をダウンロードすると、JAR の署名に使用された証明書が信頼できる証明書発行局まで追跡できるかどうかを確認します。追跡できる場合、アプリケーションのロードを正常に続行します。追跡できない場合、Java Web Start ソフトウェアは次のようなダイアログボックスを表示します。

図 3: セキュリティーの警告ダイアログボックス
図 3: セキュリティーの警告ダイアログボックス
 

エンドユーザーはコードの出所を信頼するかどうかを決定し、「実行」または「キャンセル」をクリックします。通常、JAR ごとに異なる証明書を使用して署名されていることがあり、Java Web Start ソフトウェアは、ダウンロードされた JAR ファイルの署名に使用された信頼できない各証明書について、ユーザーに確認を要求します。

ユーザーがそのような証明書をすべて承認すると、Java Web Start ソフトウェアはアプリケーションクライアントコンテナのロードと起動を行い、次にそのコンテナがアプリケーションクライアントを起動します。ユーザーが証明書を承認しているので、ユーザーは Java Web Start ソフトウェアに対して、その証明書により署名された JAR ファイルを常に信頼するように指示できます。

クライアントの使用

Java Web Start ソフトウェアがアプリケーションクライアントコンテナ (ACC) を起動したあと、ユーザーは appclient コマンドを使ってクライアントを起動した場合と同じユーザーのクライアント体験をします。クライアントの GUI が正常に表示され、動作します。

クライアントが入出力用にコマンドウィンドウを使用している場合には、これは当てはまりません。その理由は、Java Web Start ソフトウェアはデフォルトで、System.out メッセージを含むウィンドウを自動的に表示しないからです。さらに、Java Web Start ソフトウェアは、コマンドウィンドウの入力を受け付けません。このトピックについての詳細は、後述の System.outSystem.err に関する高度なトピックで説明しています。

Java Web Start のファイルキャッシュ

ACC のフットプリントは、実際のサイズよりも大きいことに注意してください。アプリケーションクライアントを実行するには、いくつかの JAR ファイル (appserv-rt.jar という名前のファイルは特に大きい) を、エンドユーザーのシステムで使用できるようにする必要があります。Java Web Start ソフトウェアを使用して、ユーザーがアプリケーションクライアントをはじめて起動するときに、ユーザーは JAR のダウンロードをしながら遅延に気付きます。ローカルネットワークでは数秒、ワイドエリアネットワークではさらに長くかかることがあります。初回起動時の動作を留意して、エンドユーザーやデモンストレーションの聞き手にこの遅延があることを必ず通知します。

この理由は、Java Web Start ソフトウェアがダウンロード済みのファイルをキャッシュに書き込むので、以降の同一クライアントの起動や同一の GlassFish アプリケーションサーバーインスタンスからのクライアントを起動するのに、これらの JAR のキャッシュ済みのコピーを再使用するからです。これにより、以降の起動ではスピードが大幅に増し、さらに満足できる体験ができます。

この記事のパート 4では、セキュリティーと高度なトピックについて説明し、次に GlassFish アプリケーションサーバーの Java Web Start 機能を改善する計画についての展望を示します。

参照情報
BigAdmin