連載 Magic V10リッチクライアント
第6回 リモートでリッチクライアントタスクを起動する
前回は、APGで作成したリッチクライアントタスクを、プログラムリポジトリからデバッグモードで起動するところまでを解説しました。今回は、プログラムリポジトリに登録されたリッチクライアントタスクを、インターネット上からリモートで起動する方法について解説します。
丹田 昌信 (プロフィール)
Java Web Startの利用
「Java Web Start」については「第2回リッチクライアントとは何か(その2)」で解説しました。そして、この方式を用いてプログラムをコールするにはJNLPファイルを作成してこれを起動するというところまでを確認しました。
MagicリッチクライアントタスクもこのJava Web Start方式を用いてプログラムをコールします。JNLPファイルを利用すれば、プログラムをデスクトップ上からもWebブラウザ上からも同じ要領でコールすることができるようになります。
JNLPファイル作成のための準備
JNLPファイルはテキストエディタでも作成することができますが、Magic eDeveloper V10にはこれを自動で作成するためのウィザードが用意されていますので、これを利用すれば簡単に作成することができます。
はじめに、プログラムリポジトリに登録されたリッチクライアントタスクを、Magicアプリケーションの外部からでもコールできるようにするために、プログラムを公開プログラムとして指定します。それには、該当するリッチクライアントタスクの「外部」カラムにチェックを入れます(画面1)。
ウィザードの起動
ウィザードを起動するには、プルダウンメニューの「オプション」から「インタフェースビルダ」→「リッチクライアントDeployment(*1)」を選択します(画面2)。
(*1)日本語版のリリースではメニューの名称が変わる場合があります。
データソースの定義
プロジェクトをオープンしたら、簡単なデータソースを定義します。データリポジトリを開いて新しい行を作成し、データソース名を「県庁所在地」、データベースを「SQLServer」とします(画面2)。
ウィザードが起動すると画面は次のようになります(画面3)。
「次へ」ボタンを押すと、画面4が表示されます。
新しい構成でJNLPファイルを作成するには、「新規」ボタンを押します。
画面5のインストレーション設定では、最小限、アプリケーションタイトルとベンダー名を取り決めて入力します。ここで入力された名称は、Javaのアプリケーションキャッシュとして登録され、ショートカットの名称などとして利用されます。
「次へ」ボタンを押すと画面6に進みます。ここでは、Webサーバのサーバ名を指定します。開発環境を1台のパソコンで兼用している場合は、サーバ名に「localhost」もしくは名前解決しうる「コンピュータ名」などを入力します。正式運用のWebサーバを指定する場合は、URLをFQDN(Fully Qualified Domain Name)で記述します。
「次へ」ボタンを押すと、画面7の実行コマンドの登録に進みます。「アプリケーション名」はMagicのプロジェクト名とし、「スタートプログラム名」からズームして、JNLPファイルから初期起動したいプログラムを選択します。
「選択」ボタンを押すと、画面8のようになります。この設定が、従来のWebアプリケーションで言うところの「AppName=」、「PrgName=」のパラメータの設定となります。
「次へ」ボタンを押すと、画面9の「コンフィギュレーションパス」に進みます。ここでは、自動生成するJNLPファイルと、それに付随するHTMLファイルの保存先のパスを指定します。生成されるファイルは、コピーしてどこからでも実行することができますので、任意のパスでかまいません。
設定内容を確認して「完了」ボタンを押すと、画面10に進みます。
これで設定は完了です。メッセージを確認して「閉じる」ボタンを押すと、ウィザードが終了してMagicの開発画面に戻ります(画面11)。
生成ファイルの確認
では、生成されたJNLPファイルと付属のHTMLファイルの保存先を確認してみましょう。デフォルトでは、プロジェクトファイルの保存先と同じパスになっています(画面12)。
ここでは、JNLPファイルとそれに付随するHTMLファイルの2つのファイルが作成されたわけですが、リッチクライアントタスクを直接起動するためのファイルはJNLPファイルとなります。クライアント上にすでにJREがインストールされていて、Java Web Startの実行環境が整っていることが分かっている場合は、これを直接起動することができます。
これに対して、あらかじめクライアント上にJREがインストールされているかどうかを確認する必要があるような場合は、HTMLファイルのほうを利用します。これを起動すると、JREがインストールされていない場合には、サン・マイクロシステムズ社のWebサイトからJREを自動でダウンロード/インストールした後に、JNLPファイルをコールしてくれます。アプリケーションが社内向けのシステムであるか、あるいは社外向けのシステムであるかどうか等によって、両者の使い分けを行うことができるわけです。
アプリケーションサーバの起動
では早速、Magicアプリケーションサーバを立ち上げて、リッチクライアントタスクをJNLPファイルからコールする実験を行ってみましょう。
開発環境においてアプリケーションサーバの立ち上げをシミュレートするには、Magicの開発画面で「プロジェクトの実行」を選択します。
「プロジェクトの実行」は、プルダウンメニューの「デバッグ」から「プロジェクトの実行」を選択するか、あるいは「Ctrl+F7」キーを押します。またはツールバーの「プロジェクトの実行」ボタンを押してもかまいません。
プロジェクトを実行すると、新しいウィンドウが開いて、アプリケーションサーバの実行画面が表示されます(画面13)。
実際の運用環境上では、MagicアプリケーションサーバはWindowsサーバ等のバックグラウンド上で稼動することが多いので、このように目に見える形で運用されることは少ないと思います。
JNLPファイルからの実行
Magicアプリケーションサーバの立ち上げを確認したら、いよいよJNLPファイルの実行です。JNLPファイルは、JREがインストールされている環境ならどこからでも起動することができますので、ここでは画面12の状態から直接、「SampleApp.jnlp」ファイルをダブルクリックしてみます。
すると、Java Web StartはJNLPファイルに記述されたWebサーバを探しに行き、Magicのインターネットリクエスタを経由して、MRBからリッチクライアントタスクをコールします。Webサーバからタスクがコールされるまでの手順は、従来のWebアプリケーションの場合と同じ仕組みです。
アプリケーション起動中は画面14のような表示となります。初回の起動だけは多少、時間がかかるかもしれませんが、アプリケーションがクライアント側のJREのキャッシュに登録されれば、次回からはすばやく起動されるようになります。
ちなみに、初回の起動では画面15のようにJavaのセキュリティ確認ダイアログが表示されます。アプリケーションが信頼できる筋のものであれば、「はい」または「常に」のボタンを押して、セキュリティ警告を通過させます。
ショートカットの作成確認ダイアログが出たら、適当に「はい」または「いいえ」を選択します(画面16)。
以上を通過すると、デスクトップ上にはリッチクライアントタスクの実行ウィンドウが表示されます(画面17)。
このウィンドウは、前号においてプログラムリポジトリからデバッグモード(F7キー)でタスクを起動したときのウィンドウと同じものですが、今回はJNLPファイルからすべての手順を踏んで正式に実行されたものとなります。
したがって、JNLPファイル内に記述されたWebサーバのアドレス(画面6)さえ有効であれば、このファイルをどこにコピーしても、あるいはWebページ上に埋め込んでやっても、同じタスクを起動することができるようになります。
なお、画面16において「はい」と答えた場合は、デスクトップ上にこのアプリケーションを起動するためのショートカットが登録されます(画面18)。
HTMLファイルからの実行
では最後に、付属のHTMLファイルからの実行も確認しておきましょう。HTMLファイルから実行すれば、前述のごとくJREの存在確認を自動で行ってくれます。
セキュリティ確認が出た場合は、「ブロックされているコンテンツを許可」を選択します(画面19)。
アプリケーションが起動されると、画面20のように空白のWebブラウザとともにリッチクライアントタスクが表示されます。空白のWebページは、カスタマイズしてWebサイトに掲載することも可能です。
参考までに、JNLPファイルとHTMLファイルの中身を掲載しておきます。JNLPファイル内のコマンド記述書式は、従来のWebアプリケーションのパラメータの記述書式とほぼ同じです(画面21)。
HTMLファイル内ではJava Web Startの存在可否をチェックし、必要であればサン・マイクロシステムズ社からダウンロードしてインストールするという内容のコマンドが記述されています (画面22)。
次回は、サブフォームを利用したリッチクライアントタスクの作成をお送りします。
(以上、2008年1月15日号)