JP2009104250A - 実行装置及びプログラム及び実行方法 - Google Patents

実行装置及びプログラム及び実行方法 Download PDF

Info

Publication number
JP2009104250A
JP2009104250A JP2007273096A JP2007273096A JP2009104250A JP 2009104250 A JP2009104250 A JP 2009104250A JP 2007273096 A JP2007273096 A JP 2007273096A JP 2007273096 A JP2007273096 A JP 2007273096A JP 2009104250 A JP2009104250 A JP 2009104250A
Authority
JP
Japan
Prior art keywords
resource
unit
program
application program
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007273096A
Other languages
English (en)
Inventor
Masafumi Harada
雅史 原田
Yuichi Kaneko
雄一 金子
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2007273096A priority Critical patent/JP2009104250A/ja
Publication of JP2009104250A publication Critical patent/JP2009104250A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

【課題】自動実行することを想定していない既存のアプリケーションプログラムを、修正なしに自動実行する。
【解決手段】起動情報入力部110がプログラム所在情報・リソース所在情報・リソース配置情報を入力する。プログラム所在情報・リソース所在情報に基づいて、ダウンロード部120がインターネット上からアプリケーションプログラム・リソースを取得する。リソース配置情報に基づいて、領域設定部130がリソース記憶領域702を設定し、ファイル配置部140がリソース記憶領域702にリソースを記憶する。プログラム実行部170がアプリケーションプログラムを実行し、リソース利用部160がリソース記憶領域702に記憶したリソースを利用させる。
【選択図】図4

Description

この発明は、ネットワーク上に存在するアプリケーションプログラムを取得して実行する実行装置に関する。
ウェブブラウザ(以下「ブラウザ」)は、インターネットなどのネットワークを介して、サーバ装置からHTML(Hyper Text Markup Language)ファイルを取得し、取得したHTMLファイルが記述した画面(いわゆるホームページ)を表示する。
ホームページには、リンクと呼ばれる部分があり、ホームページの閲覧者がリンクをクリックするなどして、リンクに関連づけられた動作をブラウザに実行させることができる。
リンクに関連づけられた動作には、ブラウザに他のホームページを表示させる動作や、アプレットと呼ばれる小規模なプログラムをブラウザに実行させる動作などがある。また、ブラウザと異なるプログラムを起動して実行させることもできる。
例えば、アプリケーションプログラムを自動的にダウンロードし、実行環境を整えて実行する自動実行プログラムをリンクに関連づければ、利用者は、面倒なインストール作業などをせず、ホームページ上に表示されるリンクをクリックするだけで、様々なアプリケーションプログラムを実行できる(例えば、特許文献1)。
特表2003−521036号公報 特開平10−91446号公報 特開2004−355413号公報 特開2004−234345号公報 特開2001−325106号公報
このような技術は、利用者にとって便利である反面、意図せずに悪意あるアプリケーションプログラムを実行してしまう危険を孕む。そのため、自動実行されるアプリケーションプログラムは、利用者のコンピュータが記憶した資源の一部しか利用できない隔離された環境で実行され、悪意あるアプリケーションプログラムが、利用者のコンピュータに保存されたファイルなどを読み取ることを防ぐなどの対策が必要である。
このように、自動実行されるアプリケーションプログラムの実行環境は、手動でインストールして実行する通常のアプリケーションプログラムの実行環境と異なる。したがって、通常のアプリケーションプログラムをそのまま自動実行されるアプリケーションプログラムとして使用できず、修正が必要になる場合がある。このため、既存のアプリケーションプログラムを修正する手間(もしくは修正せずに使用できることを確認する手間)がかかる。
この発明は、例えば、上記のような課題を解決するためになされたものであり、自動実行を想定せずに開発された既存のアプリケーションプログラムを修正せず、そのままの形で自動実行できる実行装置を得ることを目的とする。
この発明にかかる実行装置は、
情報を処理する処理装置と、情報を記憶する記憶装置と、起動情報入力部と、プログラム取得部と、プログラム記憶部と、リソース取得部と、リソース配置部と、プログラム実行部とを有し、
上記起動情報入力部は、上記処理装置を用いて、実行すべきアプリケーションプログラムがネットワーク上に存在する場所を記述したプログラム所在情報と、上記アプリケーションプログラムが利用するリソースが上記ネットワーク上に存在する場所を記述したリソース所在情報と、上記アプリケーションプログラムが上記リソースを利用する際に上記リソースが存在すべき上記記憶装置内の場所を記述したリソース配置情報とを入力し、
上記プログラム取得部は、上記処理装置を用いて、上記起動情報入力部が入力したプログラム所在情報に基づいて、上記ネットワーク上からアプリケーションプログラムを取得し、
上記プログラム記憶部は、上記記憶装置を用いて、上記プログラム取得部が取得したアプリケーションプログラムを記憶し、
上記リソース取得部は、上記処理装置を用いて、上記起動情報入力部が入力したリソース所在情報に基づいて、上記ネットワーク上からリソースを取得し、
上記リソース配置部は、上記記憶装置を用いて、上記起動情報入力部が入力したリソース配置情報に基づいて、上記リソース取得部が取得したリソースを記憶し、
上記プログラム実行部は、上記処理装置を用いて、上記プログラム記憶部が記憶したアプリケーションプログラムを実行することを特徴とする。
この発明にかかる実行装置によれば、アプリケーションプログラムが利用するリソースを、リソース取得部がネットワーク上から取得し、リソース配置部が記憶装置を用いて記憶して、プログラム実行部がアプリケーションプログラムを実行するので、アプリケーションプログラムになんらの修正を加えることなく、アプリケーションプログラムがリソースを利用できるという効果を奏する。
実施の形態1.
実施の形態1について、図1〜図13を用いて説明する。
図1は、この実施の形態における自動実行システム800の全体構成の一例を示すシステム構成図である。
自動実行システム800は、サーバ装置300が記憶したアプリケーションプログラム521を、実行装置100がインターネット940などのネットワークを介してダウンロードし、実行するシステムである。
アプリケーションプログラム521は、様々なリソース531〜533を利用する。リソース531〜533には、例えば、画像データなどやクラス定義ファイルなどがある。
起動情報511は、アプリケーションプログラム521を実行するためにダウンロードすべきアプリケーションプログラム521やリソース531〜533を記述した情報である。
なお、アプリケーションプログラム521及びリソース531〜533は、同一のサーバ装置300が記憶している必要はなく、異なるサーバ装置300が分散して記憶していてもよい。
また、アプリケーションプログラム521やリソース531〜533は、単独のファイルとしてサーバ装置300が記憶していてもよいし、複数のファイルをまとめて圧縮した形式のファイル(JARファイル)としてサーバ装置300が記憶していてもよい。
実行装置100は、サーバ装置300から起動情報511を取得し、取得した起動情報511にしたがって、アプリケーションプログラム521やリソース531〜533をダウンロードして記憶する。その後、実行装置100は、アプリケーションプログラム521を実行する。実行装置100で実行されるアプリケーションプログラム521は、実行装置100が記憶したリソース531〜533を利用する。このため、アプリケーションプログラム521を実行する時点において、実行装置100は、必ずしもインターネット940に接続している必要はない。
図2は、この実施の形態における実行装置100の外観の一例を示す図である。
実行装置100は、システムユニット910、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置901、キーボード902(Key・Board:K/B)、マウス903、FDD904(Flexible・Disk・Drive)、コンパクトディスク装置905(CDD)、プリンタ装置906、スキャナ装置907などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット910は、コンピュータであり、ファクシミリ機932、電話器931とケーブルで接続され、また、ローカルエリアネットワーク942(LAN)、ゲートウェイ941を介してインターネット940に接続されている。
図3は、この実施の形態における実行装置100のハードウェア資源の一例を示す図である。
実行装置100は、プログラムを実行するCPU911(Central・Processing・Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう)を備えている。CPU911は、バス912を介してROM913、RAM914、通信装置915、表示装置901、キーボード902、マウス903、FDD904、CDD905、プリンタ装置906、スキャナ装置907、磁気ディスク装置920と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置920の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信装置915、キーボード902、スキャナ装置907、FDD904などは、入力部、入力装置の一例である。
また、通信装置915、表示装置901、プリンタ装置906などは、出力部、出力装置の一例である。
通信装置915は、ファクシミリ機932、電話器931、LAN942等に接続されている。通信装置915は、LAN942に限らず、インターネット940、ISDN等のWAN(ワイドエリアネットワーク)などに接続されていても構わない。インターネット940或いはISDN等のWANに接続されている場合、ゲートウェイ941は不用となる。
磁気ディスク装置920には、オペレーティングシステム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティングシステム921、ウィンドウシステム922により実行される。
上記プログラム群923には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、RAM914のメモリ、FDD904のフレキシブルディスク、CDD905のコンパクトディスク、磁気ディスク装置920の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disc)等の記録媒体に記録される。また、データや信号は、バス912や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
図4は、この実施の形態における実行装置100の機能ブロックの構成の一例を示すブロック構成図である。
実行装置100は、起動情報入力部110、ダウンロード部120、領域設定部130、ファイル配置部140、信頼性判定部150、リソース利用部160、プログラム実行部170を有する。
起動情報入力部110は、CPU911などの処理装置を用いて、起動情報511を入力する。
起動情報511には、プログラム所在情報と、リソース所在情報と、リソース配置情報とが含まれる。
プログラム所在情報とは、実行すべきアプリケーションプログラム521がネットワーク上に存在する場所を記述した情報である。実行装置100は、プログラム所在情報に基づいてアプリケーションプログラム521を取得する。プログラム所在情報は、例えば、アプリケーションプログラム521のURL(Uniform Resource Locator)である。
リソース所在情報とは、アプリケーションプログラム521が利用するリソース531〜533がネットワーク上に存在する場所を記述した情報である。実行装置100は、リソース所在情報に基づいてリソース531〜533を取得する。リソース所在情報は、例えば、リソース531〜533のURLである。
リソース配置情報とは、リソース531〜533が存在すべき磁気ディスク装置920(記憶装置)内の場所を記述した情報である。リソース配置情報は、例えば、パス名である。アプリケーションプログラム521がパス名を用いてリソース531〜533にアクセスする場合、そのパス名が示す場所にリソース531〜533が存在しなければアクセスに失敗し、アプリケーションプログラム521を正常に実行できない場合がある。リソース配置情報は、アプリケーションプログラム521を正常に実行するためには、リソース531〜533が磁気ディスク装置920内のどこにあればよいかを示す。
ダウンロード部120(プログラム取得部・リソース取得部)は、CPU911などの処理装置を用いて、ネットワーク上からアプリケーションプログラム521やリソース531〜533を取得する。ダウンロード部120は、起動情報入力部110が入力した起動情報511に含まれるプログラム所在情報やリソース所在情報に基づいて、アプリケーションプログラム521やリソース531〜533を取得する。例えば、ダウンロード部120は、プログラム所在情報やリソース所在情報に基づいて、アプリケーションプログラム521やリソース531〜533を記憶したサーバ装置300を判別し、判別したサーバ装置300に対して、アプリケーションプログラム521やリソース531〜533の送信を要求し、要求に応えてサーバ装置300が送信したアプリケーションプログラム521やリソース531〜533を受信することにより、アプリケーションプログラム521やリソース531〜533を取得する。
領域設定部130は、磁気ディスク装置920(記憶装置)を用いて、リソース531〜533を記憶するためのリソース記憶領域702を設定する。領域設定部130は、例えば、起動情報入力部110が入力した起動情報511に含まれるリソース配置情報に基づいて、仮想ディレクトリを生成し、生成した仮想ディレクトリをリソース記憶領域702として設定する。仮想ディレクトリとは、アプリケーションプログラム521から見える磁気ディスク装置920のディレクトリ構造であって、磁気ディスク装置920の実際のディレクトリ構造とは異なる。
例えば、リソース配置情報がクラスパスが通ったディレクトリを基準とした相対パス名である場合、領域設定部130は、磁気ディスク装置920にサブディレクトリを生成し、生成したサブディレクトリの下に、アプリケーションプログラム521が想定している磁気ディスク装置920のディレクトリ構造と同じディレクトリ構造を生成する。
ファイル配置部140は、磁気ディスク装置920(記憶装置)を用いて、ダウンロード部120が取得したアプリケーションプログラム521やリソース531〜533を記憶する。ファイル配置部140は、磁気ディスク装置920内のプログラム記憶領域703に、アプリケーションプログラム521を記憶する。また、ファイル配置部140は、磁気ディスク装置920内に領域設定部130が設定したリソース記憶領域702にリソース531〜533を記憶する。
ファイル配置部140は、リソース配置情報に基づいて、リソース531〜533をリソース記憶領域702内に配置する。例えば、リソース配置情報がクラスパスが通ったディレクトリを基準とした相対パス名である場合、ファイル配置部140は、領域設定部130が生成したサブディレクトリを基準として、リソース配置情報が示す場所に対応する場所に、リソース531〜533を配置する。
これにより、アプリケーションプログラム521が、クラスパスが通ったディレクトリを基準とする相対パス名でリソース531〜533にアクセスしようとした場合、基準となるディレクトリを領域設定部130が生成したサブディレクトリに変えれば、アプリケーションプログラム521は、リソース531〜533にアクセスできる。
磁気ディスク装置920内には、ローカル記憶領域701、リソース記憶領域702、プログラム記憶領域703がある。
ローカル記憶領域701は、アプリケーションプログラム521以外の他のプログラムが利用するファイルなどを記憶している領域である。
リソース記憶領域702は、上述したように領域設定部130が設定した領域であり、リソース531〜533を記憶する領域である。
プログラム記憶領域703は、ファイル配置部140がアプリケーションプログラム521を記憶する領域である。
信頼性判定部150は、CPU911などの処理装置を用いて、ダウンロード部120が取得し、ファイル配置部140がプログラム記憶領域703に記憶したアプリケーションプログラム521が信頼できるか否かを判定する。信頼性判定部150は、例えば、アプリケーションプログラム521の署名を検証することにより、アプリケーションプログラム521が信頼できるか否かを判定する。
アプリケーションプログラム521は、インターネット940からダウンロードされたプログラムなので、ローカル記憶領域701にあるファイルから情報を盗もうとしたりウィルスを仕掛けようとしたりする悪意あるプログラムである可能性がある。
そのため、実行装置100は、信頼性判定部150が信頼できないと判定したアプリケーションプログラム521には、ローカル記憶領域701へのアクセスを制限する。
これに対し、信頼性判定部150が信頼できると判定したアプリケーションプログラム521には、ローカル記憶領域701へのアクセスを許可する。なお、信頼の度合いに応じて、ローカル記憶領域701全域へのアクセスを許可したり、一部へのアクセスだけを許可したりすることとしてもよい。
プログラム実行部170は、CPU911などの処理装置を用いて、ファイル配置部140がプログラム記憶領域703に記憶したアプリケーションプログラム521を実行する。
なお、アプリケーションプログラム521の起動に失敗するなどした場合、プログラム実行部170は、CPU911などの処理装置を用いて、エラー処理を行う。
リソース利用部160は、CPU911などの処理装置を用いて、プログラム実行部170が実行するアプリケーションプログラム521が利用しようとするリソース531〜533を、リソース記憶領域702から読み込んで、アプリケーションプログラム521が利用できるようにする。また、信頼性判定部150が信頼できると判定したアプリケーションプログラム521がローカル記憶領域701にあるファイルなどにアクセスしようとした場合、ローカル記憶領域701からファイルなどを読み込んで、アプリケーションプログラム521が利用できるようにする。信頼性判定部150が信頼できないと判定したアプリケーションプログラム521がローカル記憶領域701にあるファイルなどにアクセスしようとした場合には、リソース利用部160は、ローカル記憶領域701にあるファイルなどを読み込まず、アプリケーションプログラム521に利用させない。
なお、この例では、信頼性判定部150の判定結果に基づいて、プログラム実行部170が実行するアプリケーションプログラム521によるリソースの利用をリソース利用部160が制限しているが、アプリケーションプログラム521が信頼できない場合は、プログラム実行部170がアプリケーションプログラム521を実行しないよう構成してもよい。
図5は、この実施の形態におけるアプリケーション実行の契機の一例を示す図である。
この実施の形態におけるアプリケーションの実行は、例えば、ブラウザなどが表示したリンクを利用者がクリックすることにより開始される。
「<a href=“http://abc.co.jp/def.jnlp”>アプリケーション実行</a>」という記述を含むHTMLファイル601を、ブラウザなどが表示すると、表示装置901は「アプリケーション実行」という文字を表示する。利用者がこの表示をクリックすると、アプリケーションの実行が始まる。
まず、ブラウザは、URL「http://abc.co.jp/def.jnlp」で示されるファイルをダウンロードする。すなわち、「abc.co.jp」という名前で識別されるサーバ装置300と、HTTP(hypertext Transfer Protocol)による通信をして、ファイル「def.jnlp」の送信を要求する。ブラウザは、この要求に応じてサーバ装置300が送信したファイル「def.jnlp」を受信し、MIME(Multipurpose Internet Mail Extension)タイプから、ファイル「def.jnlp」を処理するヘルパーアプリケーションを判別する。
ブラウザは、判別結果に基づいて、起動情報入力部110にファイル「def.jnlp」を入力させる。
図6は、この実施の形態における実行装置100の機能ブロックの詳細の一例を示す詳細ブロック図である。
起動情報入力部110は、JNLP入力部111、JNLP記憶部112、JNLP解析部113、配置情報入力部114、配置情報記憶部115を有する。
ダウンロード部120は、要求送信部121、ファイル受信部122を有する。
JNLP入力部111は、CPU911などの処理装置を用いて、ブラウザから与えられたJNLPファイル602「def.jnlp」を入力する。
JNLPファイル602は、サーバ装置300からダウンロードすべきアプリケーションプログラム521やリソース531〜533やディレクトリマッピングファイルなどに関する情報や、アプリケーションプログラム521の起動オプションなどを記述したものである。
JNLP記憶部112は、磁気ディスク装置920などの記憶装置を用いて、JNLP入力部111が入力したJNLPファイル602を記憶する。
JNLP解析部113は、CPU911などの処理装置を用いて、JNLP記憶部112が記憶したJNLPファイル602を解析する。
この例において、JNLP解析部113は、JNLPファイル602を解析して、ディレクトリマッピングファイル603「ghi.txt」、JARファイル604「jkl.jar」、JARファイル605「mno.jar」のダウンロードが必要であることを判別する。
要求送信部121は、CPU911などの処理装置を用いて、JNLP解析部113がJNLPファイル602を解析した結果に基づいて、ダウンロードが必要なファイルの送信を要求する情報を、サーバ装置300に対して送信する。
なお、同じファイルが既にダウンロードされている場合、要求送信部121は、CPU911などの処理装置を用いて、版の更新があるか否かを判定し、更新されている場合のみ、送信要求を送信することとしてもよい。
ファイル受信部122は、CPU911などの処理装置を用いて、要求送信部121が送信した要求に応じてサーバ装置300が送信したファイル(ディレクトリマッピングファイル603「ghi.txt」、JARファイル604「jkl.jar」、JARファイル605「mno.jar」)を受信する。
なお、URLが間違っているなどして、ファイル受信部122がファイルの受信に失敗した場合、ファイル受信部122は、CPU911などの処理装置を用いて、エラー処理を行う。
配置情報入力部114は、CPU911などの処理装置を用いて、配置情報を入力する。
この例において、配置情報入力部114は、ファイル受信部122が受信したディレクトリマッピングファイル603を入力する。
ディレクトリマッピングファイル603は、配置情報を含み、例えば、リソース531〜533と、ディレクトリとの対応付けを記述したものである。
なお、配置情報は、JNLPファイル602に含まれていてもよい。その場合、配置情報入力部114は、JNLP解析部113がJNLPファイル602を解析した結果から、配置情報を入力する。
配置情報記憶部115は、磁気ディスク装置920などの記憶装置を用いて、配置情報入力部114が入力した配置情報を記憶する。
図7は、この実施の形態における実行装置100の機能ブロックの詳細の一例を示す詳細ブロック図である。
領域設定部130は、配置情報解析部131、ディレクトリ生成部132を有する。
ファイル配置部140は、ファイル解凍部141、ファイル格納部142を有する。
配置情報解析部131は、CPU911などの処理装置を用いて、配置情報記憶部115が記憶した配置情報(ディレクトリマッピングファイル603)を解析する。
ディレクトリ生成部132は、CPU911などの処理装置を用いて、配置情報解析部131が配置情報を解析した結果に基づいて、磁気ディスク装置920に仮想ディレクトリを生成する。
例えば、ディレクトリ生成部132は、サブディレクトリ611「VM」の下に、サブディレクトリ613「VDir」を生成する。なお、サブディレクトリ613「VDir」が既に存在する場合は、内容を消去して再利用してもよい。次に、ディレクトリ生成部132は、配置情報解析部131の解析結果に基づいて、生成したサブディレクトリ613の下にサブディレクトリ621「etc」を生成し、更に、生成したサブディレクトリ621の下にサブディレクトリ622「icon」を生成する。
このようにして、ディレクトリ生成部132は、ディレクトリマッピングファイル603に記述されたディレクトリ構造と同じディレクトリ構造を、サブディレクトリ613「VDir」の下に生成する。
ファイル解凍部141は、CPU911などの処理装置を用いて、ファイル受信部122が受信したファイル(JARファイル604「jkl.bar」、JARファイル605「mno.jar」)を解凍する。
解凍とは、ファイル受信部122が受信したファイルが、1以上のリソースを圧縮した書庫ファイルである場合、そのなかからリソースを復元して取得することである。
なお、ファイル解凍部141は、ファイル受信部122が受信したファイルのうち、書庫ファイルであるファイルをすべて解凍してもよいし、指定された書庫ファイルのみを解凍してもよい。書庫ファイルを解凍するか否かは、例えば、JNLPファイル602内に「uncompress=”true”」または「uncompress=”false”」という記述(リソース解凍情報)を加えることにより指定する。
また、書庫ファイルを解凍した場合、その書庫ファイルに含まれるすべてのリソースを取り出してもよいし、指定されたリソースだけを取り出してもよい。例えば、ディレクトリマッピングファイル603において、仮想ディレクトリ内に配置する必要があるリソースを指定し、ファイル解凍部141は、指定されたリソースを書庫ファイルから取得する。
ファイル格納部142は、磁気ディスク装置920(記憶装置)を用いて、ファイル受信部122が受信したファイルやファイル解凍部141が解凍して取得したリソースを記憶する。ファイル格納部142は、ディレクトリマッピングファイル603で格納場所を指定されたリソースについて、ディレクトリ生成部132が生成したサブディレクトリ内の対応する場所に記憶する。
例えば、この例において、ディレクトリマッピングファイル603は、書庫ファイル「jkl.jar」を解凍して取得したリソース「Aaa.properties」と、書庫ファイル「mno.jar」を解凍して取得したリソース「Bbb.dot」とを、クラスパスが通ったディレクトリに配置し、書庫ファイル「mno.jar」を解凍して取得したリソース「folder.jpg」を、クラスパスが通ったディレクトリのサブディレクトリ「etc」の更にサブディレクトリ「icon」に配置すべきことを示している。
これを受けて、ファイル解凍部141は、CPU911などの処理装置を用いて、JARファイル604「jkl.jar」を解凍して、リソース「Aaa.properties」を取得し、JARファイル605「mno.jar」を解凍して、リソース「Bbb.dot」及びリソース「folder.jpg」を取得する。ファイル格納部142は、磁気ディスク装置920を用いて、ファイル解凍部141が取得したリソース「Aaa.properties」とリソース「Bbb.dot」とを、ディレクトリ生成部132が生成したサブディレクトリ613「VDir」内のリソースファイル631「Aaa.propeerties」及びリソースファイル632「Bbb.dot」として記憶し、ファイル解凍部141が取得したリソース「folder.jpg」を、ディレクトリ生成部132が生成したサブディレクトリ622「icon」内のリソースファイル633「folder.jpg」として記憶する。
また、ファイル格納部142は、ファイル受信部122が受信したJARファイル604「jkl.jar」及びJARファイル605「mno.jar」を、磁気ディスク装置920内の所定の場所(この例では、サブディレクトリ612「cache」)に記憶する。
なお、ファイル格納部142は、ファイル受信部122が受信したJARファイルすべてをサブディレクトリ612「cache」に記憶してもよいし、ファイル解凍部141が解凍しなかったJARファイルだけをサブディレクトリ612「cache」に記憶してもよい。また、ファイル格納部142は、ファイル解凍部141が解凍したJARファイルに含まれるリソースのうち、ディレクトリマッピングファイル603で格納場所を指定されていないリソースを、サブディレクトリ612「cache」に記憶してもよい。
なお、ディレクトリマッピングファイル603は、必ずしもディレクトリ構造を記述したものでなくてもよく、アプリケーションプログラム521が想定しているリソースの名前とリソースの所在との対応を示すものであればよい。
また、ディレクトリ生成部132は、仮想ディレクトリ内にサブディレクトリを生成せず、ファイル格納部142が仮想ディレクトリ内にリソースを記憶してもよい。その場合、アプリケーションプログラム521が想定しているリソースの所在を示す情報を、ファイル格納部142がリソースを記憶した場所を示す情報に変換するテーブルを生成しておき、リソースにアクセスできるようにしてもよい。
このようにして、リソースの配置が終わったあと、プログラム実行部170がアプリケーションプログラム521を実行する。
図8は、この実施の形態における実行装置100の機能ブロックの詳細の一例を示す詳細ブロック図である。
リソース利用部160は、ユーザリソース読込部161、システムリソース読込部162を有する。
システムリソース読込部162(システムクラスローダー)は、CPU911などの処理装置を用いて、プログラム実行部170が実行しているアプリケーションプログラム521などからの要求を受け、リソースをRAM914などの記憶装置に読み込む。システムリソース読込部162は、CPU911などの処理装置を用いて、読み込んだリソースへの参照をプログラム実行部170に通知することにより、アプリケーションプログラム521がリソースを利用できるようにする。システムリソース読込部162は、同じリソースに対して再度読み込みを要求された場合に重複して読み込まないよう、RAM914などの記憶装置に読み込んだリソースを管理する。
システムリソース読込部162が読み込むリソースには、アプリケーションプログラム521の実行に必要な基本的なリソースとしてあらかじめ磁気ディスク装置920が記憶しているJARファイル606「rt.jar」などに含まれるリソースや、アプリケーションプログラム521がパス名で指定した磁気ディスク装置920内のファイルなどがある。
ユーザリソース読込部161(クラスローダー)は、基本的にシステムリソース読込部162と同様の機能を有する。すなわち、ユーザリソース読込部161は、CPU911などの処理装置を用いて、プログラム実行部170が実行しているアプリケーションプログラム521などからの要求を受け、リソースをRAM914などの記憶装置に読み込む。ユーザリソース読込部161は、CPU911などの処理装置を用いて、読み込んだリソースへの参照をプログラム実行部170に通知することにより、アプリケーションプログラム521がリソースを利用できるようにする。ユーザリソース読込部161は、同じリソースに対して再度読み込みを要求された場合に重複して読み込まないよう、RAM914などの記憶装置に読み込んだリソースを管理する。
ユーザリソース読込部161が読み込むリソースには、JNLPファイル602に記述されたファイル(JARファイル604「jkl.jar」及びJARファイル605「mno.jar」)に含まれるリソースなどがある。
また、ユーザリソース読込部161は、アプリケーションプログラム521から読み込みを要求されたリソースがシステムリソース読込部162で読込み可能なものである場合、システムリソース読込部162にリソースの読み込みを依頼(委譲)する。例えば、ユーザリソース読込部161は、要求されたリソースが読込済でない限り、システムリソース読込部162に読み込みを要求し、システムリソース読込部162から読み込みに失敗した旨の通知があった場合に、ユーザリソース読込部161がリソースの読み込みを試みる。
これに対し、システムリソース読込部162は、ユーザリソース読込部161に対してリソースの読み込みを依頼しない。このため、ユーザリソース読込部161に対して要求すれば、ユーザリソース読込部161が読み込むリソース及びシステムリソース読込部162が読み込むリソースの双方にアクセス可能であるのに対して、システムリソース読込部162に対して要求すると、システムリソース読込部162が読み込むリソースにはアクセスできるが、ユーザリソース読込部161が読み込むリソース(例えば、JARファイル604「jkl.jar」やJARファイル605「mno.jar」に含まれるリソース)にはアクセスできない。
このように、リソース読込部として、ユーザリソース読込部161とシステムリソース読込部162との2つを用意する理由は、アプリケーションプログラム521とともにダウンロードしてきたリソースと、もともとローカル記憶領域701などに記憶されていたリソースとを区別するためである。
アプリケーションプログラム521が信頼できないと信頼性判定部150が判定した場合、システムリソース読込部162は、磁気ディスク装置920が記憶したリソースへのアクセスを制限する。一方、アプリケーションプログラム521とともにダウンロードしてきたリソースに対するアクセスは自由に許可してよいので、ユーザリソース読込部161がリソースへのアクセスを提供する。
また、アプリケーションプログラム521とともにダウンロードしてきたリソースが磁気ディスク装置920内のどこに記憶されるか、アプリケーションプログラム521にはわからない。システムリソース読込部162に対しては、リソースが存在する磁気ディスク装置920内の場所を指定してリソースの読み込みを要求する。これに対して、ユーザリソース読込部161に対しては、磁気ディスク装置920内の場所を指定せずリソースの読み込みを要求し、ユーザリソース読込部161が、アプリケーションプログラム521とともにダウンロードしてきたリソースを探して読み込みをする。
この例において、アプリケーションプログラム521の最初に実行するメソッドは、「jkl.jar」に含まれるクラス「jp.co.abc.Pqr」のメソッドであることが、図6に示したJNLPファイル602に記述されている。
まず、ユーザリソース読込部161は、CPU911などの処理装置を用いて、磁気ディスク装置920が記憶したJARファイル604「jkl.jar」を解凍し、RAM914などの記憶装置にクラス「jp.co.abc.Pqr」を読み込む。このとき、クラス「jp.co.abc.Pqr」が承継しているクラスやクラス「jp.co.abc.Pqr」が実装しているインタフェースやクラス「jp.co.abc.Pqr」のメンバ変数のクラスなど、クラス「jp.co.abc.Pqr」の読み込みに必要なクラスなどがあれば、ユーザリソース読込部161(あるいはユーザリソース読込部161から要求を受けたシステムリソース読込部162)が、必要なクラスなどを読み込む。
次に、プログラム実行部170は、CPU911などの処理装置を用いて、RAM914などの記憶装置に読み込まれたクラス「jp.co.abc.Pqr」の「main」メソッドを実行する。
図9は、この実施の形態におけるプログラム実行部170が実行するアプリケーションプログラム521のソースコードの一例を示す図である。
ソースコード651は、システムリソース読込部162に対してリソース「Aaa.properties」の読み込みを要求するプログラムの一部である。
ソースコード652は、それが含まれるクラスを読み込んだリソース読込部に対して、リソース「Aaa.properties」の読み込みを要求するプログラムの一部である。この場合、リソースの読み込みを要求されるリソース読込部は、ユーザリソース読込部161となる。
ここで、リソース「Aaa.properties」は、JARファイル604「jkl.jar」に含まれるリソースである。ソースコード652のようにユーザリソース読込部161に対して読み込みを要求すれば、JARファイル604「jkl.jar」に含まれるリソース「Aaa.properties」にアクセスできるが、ソースコード651のようにシステムリソース読込部162に対して読み込みを要求すると、JARファイル604「jkl.jar」に含まれるリソース「Aaa.properties」にアクセスできない。
アプリケーションプログラム521には、このようにサーバ装置300からダウンロードして自動実行する使い方を想定していないものがある。すなわち、利用者がアプリケーションプログラム521を手動でインストールして、実行するタイプのプログラムである。
そのような使い方をするアプリケーションプログラム521においては、利用者がインストールした時点で、そのアプリケーションプログラム521を信頼しているので、この実施の形態における実行装置100のようにアプリケーションプログラム521が信頼できるか否かに配慮しなくてもよい。また、アプリケーションプログラム521をインストールした時点で、リソースを、アプリケーションプログラム521が想定している磁気ディスク装置920内の場所に記憶させることができる。
そのため、そのような使い方をするアプリケーションプログラム521を実行する実行装置は、システムリソース読込部162があればよく、ユーザリソース読込部161を有する必要はない。
その場合、そのクラスを読み込んだリソース読込部は、システムリソース読込部162なので、ソースコード651のように記述してもソースコード652のように記述しても違いがない。したがって、ソースコード651のような記述を含むアプリケーションプログラム521が多数存在する。
この実施の形態において、システムリソース読込部162は、CPU911などの処理装置を用いて、領域設定部130が設定したリソース記憶領域702のなかを探して、要求されたリソースを読み込む。この例において、システムリソース読込部162は、ディレクトリ生成部132が生成したサブディレクトリ612「VDir」のなかを探して、ファイル格納部142が記憶したリソースファイル631「Aaa.properties」を見つけ、リソースを読み込む。このため、システムリソース読込部162がJARファイル604「jkl.jar」に含まれるリソースを読み込めなくても、リソース「Aaa.properties」の読み込みに成功する。
このため、ソースコード651のような記述を含む既存のアプリケーションプログラム521を修正せず、そのまま実行することができる。
これにより、手間をかけず、既存のアプリケーションプログラム521を有効に利用することができる。
図10は、この実施の形態におけるプログラム実行部170が実行するアプリケーションプログラム521のソースコードの別の例を示す図である。
ソースコード653は、システムリソース読込部162に対して、リソース「folder.jpg」の読み込みを要求するプログラムの一部である。ここで、リソース「folder.jpg」は、クラスパスが通ったディレクトリのサブディレクトリ「etc」の更にサブディレクトリ「icon」のなかにあることが想定されている。
ソースコード654は、それが含まれるクラスを読み込んだリソース読込部(実行装置100においてはユーザリソース読込部161)に対して、リソース「folder.jpg」の読み込みを要求するプログラムの一部である。
ここで、リソース「folder.jpg」は、JARファイル605「mno.jar」に含まれるリソースである。JARファイル605「mno.jar」に適切な階層構造が設定されていたとしても、システムリソース読込部162は、JARファイル605「mno.jar」にアクセスできないので、JARファイル605「mno.jar」に含まれるリソース「folder.jpg」を読み込むことはできない。
しかし、システムリソース読込部162は、CPU911などの処理装置を用いて、ディレクトリ生成部132が生成したサブディレクトリ622「icon」のなかを探して、ファイル格納部142が記憶したリソースファイル633「folder.jpg」を見つけるので、ここからリソース「folder.jpg」を読み込むことができる。
したがって、ソースコード653のような記述を含む既存のアプリケーションプログラム521を修正せず、そのまま実行することができる。
図11は、この実施の形態における実行装置100がアプリケーションプログラム521を実行する準備をする実行準備処理の流れの一例を示すフローチャート図である。
実行準備処理は、JNLP入力工程S11、JNLP記憶工程S12、JNLP解析工程S13、要求送信工程S14、ファイル受信工程S15、配置情報入力工程S16、配置情報記憶工程S17、配置情報解析工程S18、ディレクトリ生成工程S19、ファイル解凍工程S20、ファイル格納工程S21、信頼性判定工程S22を有する。
JNLP入力工程S11において、JNLP入力部111は、CPU911などの処理装置を用いて、ブラウザなどが出力したJNLPファイル602を入力する。
JNLP入力部111が入力するJNLPファイル602には、実行すべきアプリケーションプログラム521がインターネット940(ネットワーク)上に存在する場所を記述したプログラムURL情報(プログラム所在情報)や、アプリケーションプログラム521が利用するリソース531〜533がインターネット940(ネットワーク)上に存在する場所を記述したリソースURL情報(リソース所在情報)や、インターネット940(ネットワーク)上に存在するJARファイル(書庫ファイル)のなかにアプリケーションプログラム521が利用するリソース531〜533が圧縮された形式で存在する場合にリソース531〜533をあらかじめ解凍しておくか否かを記述したリソース解凍情報などが含まれている。
JNLP記憶工程S12において、JNLP記憶部112は、磁気ディスク装置920などの記憶装置を用いて、JNLP入力工程S11でJNLP入力部111が入力したJNLPファイル602の内容を一時的に記憶する。JNLP記憶部112は、磁気ディスク装置920内のあらかじめ定めた所定のディレクトリなどに、JNLPファイル602を書き込む。
JNLP解析工程S13において、JNLP解析部113は、CPU911などの処理装置を用いて、JNLP記憶工程S12でJNLP記憶部112が記憶したJNLPファイル602の内容を解析する。JNLP解析部113は、CPU911などの処理装置を用いて、JNLPファイル602の内容を解析して、ダウンロード部120が取得すべきファイル(ディレクトリマッピングファイル603及びJARファイル604,605)のURL(ディレクトリマッピングURL情報・プログラムURL情報・リソースURL情報)やリソース解凍情報を取得する。
要求送信工程S14において、要求送信部121は、CPU911などの処理装置を用いて、JNLP解析工程S13でJNLP解析部113が取得したURLに基づいて、サーバ装置300に対して、ディレクトリマッピングファイル603及びJARファイル604,605の送信要求を送信する。
ファイル受信工程S15において、ファイル受信部122は、CPU911などの処理装置を用いて、要求送信工程S14で要求送信部121が送信した送信要求に応じてサーバ装置300が送信したディレクトリマッピングファイル603及びJARファイル604,605を受信する。
これにより、ダウンロード部120は、JNLP解析工程S13でJNLP解析部113が取得したURLが記述したインターネット940(ネットワーク)上の場所から、JARファイル604,605に含まれるアプリケーションプログラム521やリソース531〜533を取得する。
配置情報入力工程S16において、配置情報入力部114は、CPU911などの処理装置を用いて、ファイル受信工程S15でファイル受信部122が受信したディレクトリマッピングファイル603を入力する。
配置情報入力部114が入力するディレクトリマッピングファイル603には、アプリケーションプログラム521がリソース531〜533を利用する際にリソース531〜533が存在すべき磁気ディスク装置920(記憶装置)内の場所を記述したディレクトリマッピング情報(配置情報)が含まれている。
配置情報記憶工程S17において、配置情報記憶部115は、磁気ディスク装置920などの記憶装置を用いて、配置情報入力工程S16で配置情報入力部114が入力したディレクトリマッピングファイル603の内容を一時的に記憶する。
配置情報解析工程S18において、配置情報解析部131は、CPU911などの処理装置を用いて、配置情報記憶工程S17で配置情報記憶部115が記憶したディレクトリマッピングファイル603の内容を解析する。配置情報解析部131は、CPU911などの処理装置を用いて、ディレクトリマッピングファイル603の内容を解析して、ディレクトリ生成部132が生成すべきディレクトリ構造や、ディレクトリ生成部132が生成したサブディレクトリにファイル格納部142が記憶すべきリソースを示す情報などを取得する。
ディレクトリ生成工程S19において、ディレクトリ生成部132は、CPU911などの処理装置を用いて、配置情報解析工程S18で配置情報解析部131が取得したディレクトリ構造に基づいて、サブディレクトリを生成する。
ファイル解凍工程S20において、ファイル解凍部141は、CPU911などの処理装置を用いて、JNLP解析工程S13でJNLP解析部113が取得したリソース解凍情報に基づいて、ファイル受信工程S15でファイル受信部122が受信したJARファイル604,605の全部または一部を解凍する。ファイル解凍部141は、CPU911などの処理装置を用いて、JARファイル604,605を解凍し、JARファイル604,605に含まれるリソースの全部または一部を取得する。
ファイル格納工程S21において、ファイル格納部142は、磁気ディスク装置920(記憶装置)を用いて、配置情報解析工程S18で配置情報解析部131が取得した情報に基づいて、ディレクトリ生成工程S19でディレクトリ生成部132が生成したサブディレクトリに、ファイル受信工程S15でファイル受信部122が受信したJARファイル604,605や、ファイル解凍工程S20でファイル解凍部141が取得したリソースを記憶する。
信頼性判定工程S22において、信頼性判定部150は、CPU911などの処理装置を用いて、アプリケーションプログラム521が信頼できるか否かを判定する。信頼性判定部150は、例えば、JARファイル604,605の署名を検証することにより、JARファイル604,605に含まれるアプリケーションプログラム521が信頼できるか否かを判定する。
このようにして、アプリケーションプログラム521が利用するリソースが、リソース記憶領域702に配置され、アプリケーションプログラム521を実行する準備が整う。
その後、ユーザリソース読込部161は、CPU911などの処理装置を用いて、アプリケーションプログラム521を読み込む。プログラム実行部170は、CPU911などの処理装置を用いて、ユーザリソース読込部161が読み込んだアプリケーションプログラム521を実行する。
また、プログラム実行部170は、アプリケーションプログラム521の実行に伴い、ユーザリソース読込部161やシステムリソース読込部162に対して、リソースの読み込みを要求する。
図12は、この実施の形態におけるユーザリソース読込部161がリソースを読み込むユーザリソース読込処理の流れの一例を示すフローチャート図である。
ユーザリソース読込み処理は、パス取得工程S31、読込済判定工程S32、システムリソース読込工程S33、リソース探索工程S34、リソース読込工程S35、参照通知工程S36、失敗通知工程S37を有する。
パス取得工程S31において、ユーザリソース読込部161は、CPU911などの処理装置を用いて、リソース読込みを要求した要求元から、利用リソースパス情報を取得する。利用リソースパス情報とは、アプリケーションプログラム521が利用しようとするリソースが磁気ディスク装置920内に存在する(と想定されている)場所を記述した情報である。利用リソースパス情報は、例えば、クラスパスの通ったディレクトリからの相対パス名である。リソース読込みを要求する要求元には、アプリケーションプログラム521を実行しているプログラム実行部170などがある。
読込済判定工程S32において、ユーザリソース読込部161は、CPU911などの処理装置を用いて、パス取得工程S31で取得した利用リソースパス情報に基づいて、読み込みを要求されたリソースを既に読み込み済であるか否かを判定する。
読み込み済であると判定した場合、参照通知工程S36へ進む。
まだ読み込んでいないと判定した場合、システムリソース読込工程S33へ進む。
システムリソース読込工程S33において、ユーザリソース読込部161は、CPU911などの処理装置を用いて、システムリソース読込部162に対して、パス取得工程S31で取得した利用リソースパス情報を通知し、リソースの読み込みを要求する。
システムリソース読込部162は、CPU911などの処理装置を用いて、要求されたリソースの読み込みを試みる。
システムリソース読込部162がリソースの読み込みに成功した場合、システムリソース読込部162は、CPU911などの処理装置を用いて、ユーザリソース読込部161に対して、読み込んだリソースへの参照を通知する。ユーザリソース読込部161は、CPU911などの処理装置を用いて、通知されたリソースへの参照を取得し、参照通知工程S36へ進む。
システムリソース読込部162がリソースの読み込みに失敗した場合、システムリソース読込部162は、CPU911などの処理装置を用いて、ユーザリソース読込部161に対して、読み込み失敗を通知する。ユーザリソース読込部161は、CPU911などの処理装置を用いて、読み込み失敗の通知を取得し、リソース探索工程S34へ進む。
リソース探索工程S34において、ユーザリソース読込部161は、CPU911などの処理装置を用いて、パス取得工程S31で取得した利用リソースパス情報に基づいて、リソースを探す。例えば、ユーザリソース読込部161は、CPU911などの処理装置を用いて、ファイル格納部142が記憶したJARファイル604,605のなかでリソースを探す。JARファイル604,605のなかは、ディレクトリと同様の階層構造になっていて、ユーザリソース読込部161は、利用リソースパス情報が記述した階層でリソースを探す。
リソースを発見した場合、リソース読込工程S35へ進む。
リソースを発見しなかった場合、失敗通知工程S37へ進む。
リソース読込工程S35において、ユーザリソース読込部161は、CPU911などの処理装置を用いて、リソース探索工程S34で発見したリソースを、RAM914などの記憶装置に読み込む。
参照通知工程S36において、ユーザリソース読込部161は、CPU911などの処理装置を用いて、リソース読み込みを要求した要求元に対して、読み込んだ(もしくは読み込み済の)リソースへの参照を通知し、ユーザリソース読込処理を終了する。
失敗通知工程S37において、ユーザリソース読込部161は、CPU911などの処理装置を用いて、リソース読み込みを要求した要求元に対して、リソース読み込みに失敗したことを通知し、ユーザリソース読込処理を終了する。
図13は、この実施の形態におけるシステムリソース読込部162がリソースを読み込むシステムリソース読込処理の流れの一例を示すフローチャート図である。
システムリソース読込処理は、パス取得工程S41、読込済判定工程S42、第一リソース探索工程S43、第二リソース探索工程S44、リソース読込工程S45、参照通知工程S46、失敗通知工程S47を有する。
パス取得工程S41において、システムリソース読込部162は、CPU911などの処理装置を用いて、リソース読込みを要求した要求元から、利用リソースパス情報を取得する。リソース読込みを要求する要求元には、アプリケーションプログラム521を実行しているプログラム実行部170や、ユーザリソース読込部161などがある。
読込済判定工程S42において、システムリソース読込部162は、CPU911などの処理装置を用いて、パス取得工程S41で取得した利用リソースパス情報に基づいて、読み込みを要求されたリソースを既に読み込み済であるか否かを判定する。
読み込み済であると判定した場合、参照通知工程S46へ進む。
まだ読み込んでいないと判定した場合、第一リソース探索工程S43へ進む。
第一リソース探索工程S43において、システムリソース読込部162は、CPU911などの処理装置を用いて、パス取得工程S41で取得した利用リソースパス情報に基づいて、リソースを探す。例えば、システムリソース読込部162は、CPU911などの処理装置を用いて、磁気ディスク装置920のなかでリソースを探す。システムリソース読込部162は、クラスパスが通ったディレクトリを基準として、利用リソースパス情報が記述した相対パスが示す場所でリソースを探す。
リソースを発見した場合、リソース読込工程S45へ進む。
リソースを発見しなかった場合、第二リソース探索工程S44へ進む。
なお、アプリケーションプログラム521が信頼できないと信頼性判定部150が判定した場合、第一リソース探索工程S43を行わず、第二リソース探索工程S44へ進むこととしてもよい。
第二リソース探索工程S44において、システムリソース読込部162は、CPU911などの処理装置を用いて、ディレクトリ生成部132が生成した仮想ディレクトリのなかで、利用リソースパス情報に基づいて、リソースを探す。ユーザリソース読込部161は、利用リソースパス情報が記述した場所に対応するサブディレクトリでリソースを探す。
なお、システムリソース読込部162は、CPU911などの処理装置を用いて、ディレクトリ生成部132が生成した仮想ディレクトリのなかを検索して、リソースがあるか否かを判定してもよいし、リソースがディレクトリマッピングファイル603で格納場所を指定されているか否かを判定することにより、ディレクトリ生成部132が生成した仮想ディレクトリのなかにリソースがあるか否かを判定してもよい。
リソースを発見した場合、リソース読込工程S45へ進む。
リソースを発見しなかった場合、失敗通知工程S47へ進む。
リソース読込工程S45において、システムリソース読込部162は、CPU911などの処理装置を用いて、第一リソース探索工程S43または第二リソース探索工程S44で発見したリソースを、RAM914などの記憶装置に読み込む。
参照通知工程S46において、システムリソース読込部162は、CPU911などの処理装置を用いて、リソース読み込みを要求した要求元に対して、読み込んだ(もしくは読み込み済の)リソースへの参照を通知し、システムリソース読込処理を終了する。
失敗通知工程S47において、システムリソース読込部162は、CPU911などの処理装置を用いて、リソース読み込みを要求した要求元に対して、リソース読み込みに失敗したことを通知し、システムリソース読込処理を終了する。
アプリケーションプログラム521のなかに、リソースが磁気ディスク装置920内の所定の場所にあることを想定したコードが含まれている場合、2つの可能性がある。
一つは、アプリケーションプログラム521が実行装置100にダウンロードされて自動実行されることを想定し、実行装置100の磁気ディスク装置920が記憶したリソースにアクセスしようとしている場合である。
この場合、リソースは、利用リソースパス情報が記述したとおりの場所に存在するはずなので、第一リソース探索工程S43で発見される。
もう一つは、アプリケーションプログラム521が実行装置100にインストールされてから実行されることを想定し、インストール時に実行装置100の磁気ディスク装置920が記憶したリソースにアクセスしようとしている場合である。
このようなアプリケーションプログラム521を実行装置100がダウンロードして自動実行しようとすると、アプリケーションプログラム521が実行装置100にインストールされていないので、リソースは、利用リソースパス情報が記述したとおりの場所には存在せず、第一リソース探索工程S43では発見されない。
そのようなリソースは、JNLPファイル602の記述に基づいて、ダウンロード部120がアプリケーションプログラム521とともにダウンロードし、ディレクトリマッピングファイル603の記述に基づいて、ディレクトリ生成部132が生成した仮想ディレクトリ内に、ファイル格納部142が記憶するので、第二リソース探索工程S44で発見される。
このように、一つの利用リソースパス情報に基づいて、磁気ディスク装置920内の2箇所を探索することにより、アプリケーションプログラム521が想定している実行環境がいずれであっても、リソースを発見し、利用することができる。
したがって、実行装置100がダウンロードして自動実行することを意図せずに作成されたアプリケーションプログラム521について、なんらの修正を加えることなしに、実行装置100がダウンロードして自動実行することができる。
アプリケーションプログラム521を修正した場合、コンパイルをやり直したり、エラーが発生しないかチェックしたりする必要が生じる。
この実施の形態における実行装置100は、アプリケーションプログラム521を修正せずに実行できるので、そのような手間がかけずに既存のアプリケーションプログラム521を利用でき、アプリケーションプログラム521開発のコストを削減することができる。
この実施の形態における実行装置100は、
情報を処理するCPU911などの処理装置と、情報を記憶する磁気ディスク装置920などの記憶装置と、起動情報入力部110と、プログラム取得部(ダウンロード部120)と、プログラム記憶部(ファイル配置部140)と、リソース取得部(ダウンロード部120)と、リソース配置部(ファイル配置部140)と、プログラム実行部(プログラム実行部170)とを有することを特徴とする。
上記起動情報入力部110は、上記処理装置を用いて、実行すべきアプリケーションプログラム521がネットワーク(インターネット940)上に存在する場所を記述したプログラム所在情報と、上記アプリケーションプログラム521が利用するリソース531〜533が上記ネットワーク(インターネット940)上に存在する場所を記述したリソース所在情報と、上記アプリケーションプログラム521が上記リソース531〜533を利用する際に上記リソース531〜533が存在すべき上記記憶装置(磁気ディスク装置920)内の場所を記述したリソース配置情報とを入力することを特徴とする。
上記プログラム取得部(ダウンロード部120)は、上記処理装置を用いて、上記起動情報入力部110が入力したプログラム所在情報に基づいて、上記ネットワーク(インターネット940)上からアプリケーションプログラム521を取得することを特徴とする。
上記プログラム記憶部(ファイル配置部140)は、上記記憶装置(磁気ディスク装置920)を用いて、上記プログラム取得部(ダウンロード部120)が取得したアプリケーションプログラム521を記憶することを特徴とする。
上記リソース取得部(ダウンロード部120)は、上記処理装置を用いて、上記起動情報入力部110が入力したリソース所在情報に基づいて、上記ネットワーク(インターネット940)上からリソース531〜533を取得することを特徴とする。
上記リソース配置部(ファイル配置部140)は、上記記憶装置(磁気ディスク装置920)を用いて、上記起動情報入力部110が入力したリソース配置情報に基づいて、上記リソース取得部(ダウンロード部120)が取得したリソース531〜533を記憶することを特徴とする。
上記プログラム実行部170は、上記処理装置を用いて、上記プログラム記憶部(ファイル配置部140)が記憶したアプリケーションプログラム521を実行することを特徴とする。
この実施の形態における実行装置100によれば、アプリケーションプログラム521が利用するリソース531〜533を、リソース取得部(ダウンロード部120)がネットワーク(インターネット940)上から取得し、リソース配置部(ファイル配置部140)が記憶装置(磁気ディスク装置920)を用いて記憶して、プログラム実行部170がアプリケーションプログラム521を実行するので、アプリケーションプログラム521になんらの修正を加えることなく、アプリケーションプログラム521がリソース531〜533を利用できるという効果を奏する。
この実施の形態における実行装置100は、更に、領域設定部130と、リソース利用部160とを有することを特徴とする。
上記領域設定部130は、上記記憶装置(磁気ディスク装置920)を用いて、上記リソース531〜533を記憶するための領域(リソース記憶領域702)を設定することを特徴とする。
上記リソース配置部(ファイル配置部140)は、上記記憶装置(磁気ディスク装置920)を用いて、上記起動情報入力部110が入力したリソース配置情報に基づいて、上記領域設定部130が設定した領域(リソース記憶領域702)に上記リソース取得部(ダウンロード部120)が取得したリソース531〜533を記憶することを特徴とする。
上記リソース利用部160は、上記処理装置を用いて、上記プログラム実行部170が実行するアプリケーションプログラム521に、上記領域設定部130が設定した領域(リソース記憶領域702)に記憶したリソース531〜533を利用させることを特徴とする。
この実施の形態における実行装置100によれば、領域設定部130が記憶装置(磁気ディスク装置920)を用いて設定した領域(リソース記憶領域702)に、リソース取得部(ダウンロード部120)が取得したリソースを、リソース配置部(ファイル配置部140)が記憶するので、磁気ディスク装置920があらかじめ記憶していたリソースと、リソース取得部(ダウンロード部120)が取得したリソースとの衝突を避けることができるという効果を奏する。
この実施の形態における実行装置100は、
情報を処理するCPU911などの処理装置と、情報を記憶する磁気ディスク装置920などの記憶装置と、起動情報入力部110と、プログラム取得部(ダウンロード部120)と、プログラム記憶部(ファイル配置部140)と、領域設定部130と、リソース取得部(ダウンロード部120)と、リソース配置部(ファイル配置部140)と、プログラム実行部170とを有することを特徴とする。
上記起動情報入力部110は、上記処理装置を用いて、実行すべきアプリケーションプログラム521がインターネット940(ネットワーク)上に存在する場所を記述したプログラムURL情報(プログラム所在情報)と、上記アプリケーションプログラム521が利用するリソース531〜533が上記インターネット940(ネットワーク)上に存在する場所を記述したリソースURL情報(リソース所在情報)と、上記アプリケーションプログラム521が上記リソース531〜533を利用する際に上記リソース531〜533が存在すべき上記記憶装置(磁気ディスク装置920)内の場所を記述したディレクトリマッピング情報とを入力することを特徴とする。
上記プログラム取得部(ダウンロード部120)は、上記処理装置を用いて、上記起動情報入力部110が入力したプログラムURL情報(プログラム所在情報)が記述したインターネット940(ネットワーク)上の場所から、アプリケーションプログラム521をダウンロードして取得することを特徴とする。
上記プログラム記憶部(ファイル配置部140)は、上記記憶装置(磁気ディスク装置920)を用いて、上記プログラム取得部(ダウンロード部120)が取得したアプリケーションプログラム521を記憶することを特徴とする。
上記領域設定部130は、上記記憶装置(磁気ディスク装置920)を用いて、仮想ディレクトリ(サブディレクトリ613「VDir」)を生成し、上記リソース531〜533を記憶するための領域(リソース記憶領域702)として、生成した仮想ディレクトリ(サブディレクトリ613「VDir」)を設定することを特徴とする。
上記リソース取得部(ダウンロード部120)は、上記処理装置を用いて、上記起動情報入力部110が入力したリソースURL情報(リソース所在情報)が記述したインターネット940(ネットワーク)上の場所から、リソース531〜533をダウンロードして取得することを特徴とする。
上記リソース配置部(ファイル配置部140)は、上記記憶装置(磁気ディスク装置920)を用いて、上記起動情報入力部110が入力したディレクトリマッピング情報が記述した記憶装置(磁気ディスク装置920)内の場所に対応して、上記領域設定部130が生成した仮想ディレクトリ(サブディレクトリ613「VDir」)からの相対パスにより指定される場所(サブディレクトリ613〜622)に、上記リソース取得部(ダウンロード部120)が取得したリソース531〜533(リソースファイル631〜633)を記憶することを特徴とする。
上記プログラム実行部170は、上記処理装置を用いて、上記プログラム記憶部(ファイル配置部140)が記憶したアプリケーションプログラム521を実行することを特徴とする。
上記リソース利用部160は、上記処理装置を用いて、上記プログラム実行部170が実行するアプリケーションプログラム521から、上記アプリケーションプログラム521が利用しようとする上記記憶装置(磁気ディスク装置920)内に存在するリソース531〜533の場所を記述した利用リソースパス情報を取得し、取得した利用リソースパス情報が記述した場所に対応して、上記領域設定部130が生成した仮想ディレクトリ(サブディレクトリ613「VDir」)からの相対パスにより指定される場所(サブディレクトリ613〜622)から、リソース531〜533(リソースファイル631〜633)を取得し、取得したリソース531〜533(リソースファイル631〜633)を上記アプリケーションプログラム521に利用させることを特徴とする。
この実施の形態における実行装置100によれば、ディレクトリマッピング情報が記述した記憶装置(磁気ディスク装置920)内の場所に対応する場所として、領域設定部130が生成した仮想ディレクトリ(サブディレクトリ613「VDir」)を設定し、領域設定部130が生成した仮想ディレクトリ(サブディレクトリ613「VDir」)内のサブディレクトリ613〜622に、ファイル配置部140がリソース531〜533(リソースファイル631〜633)を記憶するので、リソース利用部160がリソース531〜533(リソースファイル631〜633)を容易に発見でき、アプリケーションプログラム521に利用させることができるという効果を奏する。
この実施の形態における実行装置100は、更に、信頼性判定部150を有することを特徴とする。
上記信頼性判定部150は、上記処理装置を用いて、上記プログラム記憶部(ファイル配置部140)が記憶したアプリケーションプログラム521が信頼できるか否かを判定することを特徴とする。
上記リソース利用部160は、上記処理装置を用いて、上記プログラム記憶部(ファイル配置部140)が記憶したアプリケーションプログラム521が信頼できないと上記信頼性判定部150が判定した場合、上記プログラム実行部170が実行するアプリケーションプログラム521に、上記領域設定部130が設定した領域(リソース記憶領域702)以外に記憶したリソースを利用させないことを特徴とする。
この実施の形態における実行装置100によれば、信頼できないアプリケーションプログラム521には、領域設定部130が設定した領域(リソース記憶領域702)以外に記憶したリソースを利用させないので、セキュリティを保ちつつ、信頼できないアプリケーションプログラム521を実行することができるという効果を奏する。
また、この実施の形態における実行装置100は、以下の特徴を有する。
上記起動情報入力部110は、上記処理装置を用いて、更に、上記ネットワーク(インターネット940)上に存在する書庫ファイル(JARファイル)のなかに上記アプリケーションプログラム521が利用するリソース531〜533が圧縮された形式で存在する場合に上記リソース531〜533をあらかじめ解凍しておくか否かを記述したリソース解凍情報を入力することを特徴とする。
上記リソース取得部(ダウンロード部120、ファイル解凍部141)は、上記処理装置を用いて、上記起動情報入力部110が入力したリソース所在情報に基づいて、上記ネットワーク(インターネット940)上から上記リソースを含む書庫ファイル(JARファイル604,605)を取得し、上記起動情報入力部110が入力したリソース解凍情報に基づいて、取得した書庫ファイル(JARファイル604,605)を解凍して上記リソースを取得することを特徴とする。
この実施の形態における実行装置100によれば、リソースが書庫ファイル(JARファイル604,605)のなかに圧縮された形式で存在する場合、リソース取得部(ファイル解凍部141)が書庫ファイル(JARファイル604,605)を解凍してリソースを取得するので、プログラム実行部170が実行するアプリケーションプログラム521が、リソースを利用できるという効果を奏する。
この実施の形態における実行装置100は、情報を処理するCPU911などの処理装置と情報を記憶する磁気ディスク装置920などの記憶装置とを有するコンピュータを実行装置100として機能させるプログラムを、コンピュータが実行することにより、実現することができる。
情報を処理するCPU911などの処理装置と情報を記憶する磁気ディスク装置920などの記憶装置とを有するコンピュータを実行装置100として機能させるプログラムによれば、アプリケーションプログラム521を修正することなく、ネットワーク(インターネット940)上からアプリケーションプログラム521を取得して自動実行できる実行装置100を実現できるという効果を奏する。
この実施の形態における実行装置100がアプリケーションプログラム521を実行する実行方法は、
上記処理装置が、実行すべきアプリケーションプログラム521がネットワーク(インターネット940)上に存在する場所を記述したプログラム所在情報と、上記アプリケーションプログラム521が利用するリソース531〜533が上記ネットワーク(インターネット940)上に存在する場所を記述したリソース所在情報と、上記アプリケーションプログラム521が上記リソース531〜533を利用する際に上記リソース531〜533が存在すべき上記記憶装置(磁気ディスク装置920)内の場所を記述したリソース配置情報とを入力することを特徴とする。
上記処理装置が、入力したプログラム所在情報に基づいて、上記ネットワーク(インターネット940)上からアプリケーションプログラム521を取得することを特徴とする。
上記記憶装置(磁気ディスク装置920)が、上記処理装置が取得したアプリケーションプログラム521を記憶することを特徴とする。
上記処理装置が、入力したリソース所在情報に基づいて、上記ネットワーク(インターネット940)上からリソース531〜533を取得することを特徴とする。
上記記憶装置(磁気ディスク装置920)が、上記処理装置が入力したリソース配置情報に基づいて、上記処理装置が取得したリソース531〜533を記憶することを特徴とする。
上記処理装置が、上記記憶装置(磁気ディスク装置920)が記憶したアプリケーションプログラム521を実行することを特徴とする。
この実施の形態における実行装置100がアプリケーションプログラム521を実行する実行方法によれば、アプリケーションプログラム521を修正することなく、ネットワーク(インターネット940)上からアプリケーションプログラム521を取得して自動実行できるという効果を奏する。
実施の形態2.
実施の形態2について、図14を用いて説明する。
この実施の形態における自動実行システム800のシステム構成、実行装置100の外観、ハードウェア資源、ブロック構成は、実施の形態1で説明したものと同様なので、ここでは説明を省略する。
図14は、この実施の形態における実行装置100の機能ブロックの詳細の一例を示す詳細ブロック図である。
なお、実施の形態1で説明した実行装置100と共通する部分については、同一の符号を付し、ここでは説明を省略する。
ディレクトリ生成部132は、CPU911などの処理装置を用いて、磁気ディスク装置920に仮想ディレクトリを生成する。
ディレクトリ生成部132は、サブディレクトリ613「VDir」を生成する。実施の形態1と異なり、ディレクトリ生成部132は、サブディレクトリ613「VDir」の下にサブディレクトリを生成しない。なお、ディレクトリ生成部132は、サブディレクトリ613「VDir」の下にサブディレクトリを生成してもよいが、ディレクトリ生成部132がサブディレクトリ613「VDir」の下に生成するディレクトリ構造は、ディレクトリマッピングファイル603に記述されたディレクトリ構造と必ずしも一致しない。
ファイル格納部142は、磁気ディスク装置920(記憶装置)を用いて、ファイル受信部122が受信したファイルやファイル解凍部141が解凍して取得したリソースを記憶する。ファイル格納部142は、ディレクトリマッピングファイル603で格納場所を指定されたリソースについて、ディレクトリ生成部132が生成したサブディレクトリ613「VDir」に記憶する。
ここで、ディレクトリ生成部132はサブディレクトリ613「VDir」の下にサブディレクトリを生成していないので、ファイル格納部142は、リソースファイル631〜633を、一つのサブディレクトリ613「VDir」のなかに記憶する。この例では、リソースファイル631〜633のファイル名が衝突するのを避けるため、ファイル格納部142は、リソースファイル631〜633のファイル名を「001.tmp」「002.tmp」「003.tmp」のように変更し、リソースファイル641〜643として記憶している。なお、ファイル格納部142は、ファイル名を変更せずリソースを記憶してもよい。
ファイル格納部142は、更に、CPU911などの処理装置を用いて、配置対応情報550を生成する。
配置対応情報550は、1以上の仮想パス情報551と、仮想パス情報551それぞれに対応する実パス情報552とのペアからなる。仮想パス情報551は、リソース531〜533が存在するとアプリケーションプログラム521が想定している場所を記述した情報である。実パス情報552は、ファイル格納部142がリソース531〜533を実際に記憶した場所を記述した情報である。
例えば、仮想パス情報551「Aaa.properties」と実パス情報552「/VM/VDir/001.tmp」とのペアは、アプリケーションプログラム521が利用するリソース「Aaa.properties」を、絶対パス「/VM/VDir/001.tmp」で表わされるファイルとして磁気ディスク装置920が記憶していることを表わしている。
ファイル格納部142は、磁気ディスク装置920などの記憶装置を用いて、生成した配置対応情報550を記憶する。
次に、システムリソース読込処理について説明する。
この実施の形態におけるシステムリソース読込部162がリソースを読み込むシステムリソース読込処理の流れは、実施の形態1で説明したものと同様なので、図13を参照して説明する。
なお、実施の形態1で説明したシステムリソース読込処理と共通する工程については、説明を省略する。
第二リソース探索工程S44において、システムリソース読込部162は、CPU911などの処理装置を用いて、ファイル格納部142が記憶した配置対応情報550に基づいて、リソースを探す。
システムリソース読込部162は、CPU911などの処理装置を用いて、仮想パス情報551を検索して、利用リソースパス情報と一致するものを抽出する。
仮想パス情報551のなかに利用リソースパス情報と一致するものがない場合、失敗通知工程S47へ進む。
仮想パス情報551のなかに利用リソースパス情報と一致するものがある場合、システムリソース読込部162は、CPU911などの処理装置を用いて、抽出した仮想パス情報551に対応する実パス情報552を取得し、リソース読込工程S45へ進む。
リソース読込工程S45において、システムリソース読込部162は、CPU911などの処理装置を用いて、第二リソース探索工程S44で取得した実パス情報552に基づいて、磁気ディスク装置920からリソースを読み込む。
このように、ファイル格納部142が配置対応情報550を生成し、ファイル格納部142が生成した配置対応情報550に基づいて、システムリソース読込部162がリソースを探すので、アプリケーションプログラム521が想定しているディレクトリ構造と同じディレクトリ構造を、ディレクトリ生成部132が生成する必要がない。
以上説明した実行装置100(アプリケーション実行装置)は、
ダウンロードするディレクトリマッピングファイル603およびJARファイル604,605の情報(リソース所在情報)、JARファイル解凍の有無(リソース解凍情報)、アプリケーションの起動方法などを記述した拡張JNLPファイルをサーバ装置300からダウンロードしてクライアント(実行装置100)の外部記憶装置(磁気ディスク装置920)に書き込む拡張JNLPファイル書込部(JNLP記憶部112)と、
ダウンロードした拡張JNLPファイルを解析して各種情報を取り出す拡張JNLPファイル解析部(JNLP解析部113)と、
ダウンロードするJARファイル604,605の署名検証および版管理を行い不正なJARファイルや同じ版のJARファイルをダウンロードさせないJARファイル管理部(ダウンロード部120、信頼性判定部150)と、
拡張JNLPファイル602に記述されたJARファイル604,605をサーバ装置300からクライアント(実行装置100)にダウンロードするJARファイルダウンロード部(ダウンロード部120)と、
ダウンロードしたJARファイル604,605を解凍してクライアント(実行装置100)の外部記憶装置(磁気ディスク装置920)の特定のディレクトリ(サブディレクトリ613)に格納するJARファイル解凍部(ファイル配置部140)と、
拡張JNLPファイル602に記載された方法でダウンロードしたアプリケーションを起動するVM起動部(プログラム実行部170)と、
それらをコントロールするアプリケーション実行装置制御部(処理装置)とを備えたことを特徴とする。
以上説明したアプリケーション実行装置(実行装置100)によれば、これまでクライアント上で動作していたアプリケーションをブラウザ経由でサーバ装置300からダウンロードし、クライアントにインストールして修正なしに動作させることができる。
以上説明したアプリケーション実行装置(実行装置100)は、
拡張JNLPファイル602に記載されているディレクトリマッピングファイル603をサーバ装置300からダウンロードしてクライアント(実行装置100)の外部記憶装置(磁気ディスク装置920)に書込むディレクトリマッピングファイル書込部(配置情報記憶部115)と、
ダウンロードされたディレクトリマッピングファイル603を解析してファイル名と仮想ディレクトリ名のペアを取り出すディレクトリマッピングファイル解析部(配置情報解析部131)と、
クライアント(実行装置100)の外部記憶装置(磁気ディスク装置920)上に仮想ディレクトリに対応した実ディレクトリを生成する仮想ディレクトリ生成部(ディレクトリ生成部132)と、
拡張JNLPファイル602に記載の解凍の有無(リソース解凍情報)とディレクトリマッピングファイル603に記載の内容に従って、ダウンロードしたJARファイル604,605を解凍し、仮想ディレクトリを生成して格納するJARファイル解凍部(ファイル配置部140)と、
それらを制御するJARファイル解凍制御部(処理装置)を備えたことを特徴とする。
以上説明したアプリケーション実行装置(実行装置100)によれば、これまでクライアント(実行装置100)の外部記憶装置(磁気ディスク装置920)の特定のディレクトリ上にJARファイルのまま格納されていたが、拡張JNLPファイル602でのJARファイル解凍の有無の指定と、ディレクトリマッピングファイル603での仮想ディレクトリ名の指定によって外部記憶装置(磁気ディスク装置920)上の任意の場所にダウンロードしたファイルを格納できるようになり、アプリケーションからのアクセス方法の自由度が高くなる。
以上説明したアプリケーション実行装置(実行装置100)は、
入力パラメータ(利用リソースパス情報)を取り出し、クライアント(実行装置100)の外部記憶装置(磁気ディスク装置920)上にファイルが存在するかどうか確認する入力パラメータ解析部(システムリソース読込部162)と、
動的にディレクトリをマッピングするために、クライアント(実行装置100)の外部記憶装置(磁気ディスク装置920)上に格納されているディレクトリマッピングファイル(配置対応情報550)を解析するディレクトリマッピングファイル解析部(システムリソース読込部162)およびディレクトリマッピングファイルに記載の内容から新しいディレクトリ名を生成するディレクトリ生成部(システムリソース読込部162)と、
元の入力パラメータまたは上で生成した新しいディレクトリ名でライブラリを呼び出すライブラリ呼出し部(システムリソース読込部162)を備えたことを特徴とする。
以上説明したアプリケーション実行装置(実行装置100)によれば、入力パラメータ(利用リソースパス情報)で指定されたリソースファイルの存在確認を元の入力パラメータの場所とディレクトリマッピングファイルに指定された仮想ディレクトリの二つで行うことにより、ファイルが見つからない旨のエラーの発生をなくすことができる。
以上説明したアプリケーション実行装置によれば、サーバ装置300からダウンロードして実行する際にファイルが見つからない旨のエラーが発生しないので、ソースコードを修正し、コンパイルし、試験を行って、再度サーバ装置300上に配備する必要がない。
したがって、クライアントにインストールされその上で動作していた既存のアプリケーションをサーバ装置300に格納し、ブラウザを使用してサーバ装置300からダウンロードし、インストールして起動可能にする場合に、アプリケーションの修正が不要となる。
以上説明したアプリケーション実行装置(実行装置100)によれば、サーバ装置300上に格納されている拡張JNLPファイル602、ディレクトリマッピングファイル603およびjar形式に圧縮されているアプリケーション、リソースファイル604,605を、ブラウザ経由でクライアント(実行装置100)にダウンロードし、アプリケーション実行装置(実行装置100)により拡張JNLPファイル602およびディレクトリマッピングファイル603の内容に基づきダウンロードしたJARファイル604,605をクライアント(実行装置100)の外部記憶装置(磁気ディスク装置920)上に解凍して格納し、アプリケーションを起動することができる。
また、以上説明したアプリケーション実行装置(実行装置100)によれば、入力パラメータ(利用リソースパス情報)として渡ってくるディレクトリ名をファイルの存在結果に応じて仮想ディレクトリと動的に切替えることにより、ファイルが見つからない旨のエラーの発生を抑止し、ソースコードの修正なしにアプリケーションが動作させることができる。
実施の形態1における自動実行システム800の全体構成の一例を示すシステム構成図。 実施の形態1における実行装置100の外観の一例を示す図。 実施の形態1における実行装置100のハードウェア資源の一例を示す図。 実施の形態1における実行装置100の機能ブロックの構成の一例を示すブロック構成図。 実施の形態1におけるアプリケーション実行の契機の一例を示す図。 実施の形態1における実行装置100の機能ブロックの詳細の一例を示す詳細ブロック図。 実施の形態1における実行装置100の機能ブロックの詳細の一例を示す詳細ブロック図。 実施の形態1における実行装置100の機能ブロックの詳細の一例を示す詳細ブロック図。 実施の形態1におけるプログラム実行部170が実行するアプリケーションプログラム521のソースコードの一例を示す図。 実施の形態1におけるプログラム実行部170が実行するアプリケーションプログラム521のソースコードの別の例を示す図。 実施の形態1における実行装置100がアプリケーションプログラム521を実行する準備をする実行準備処理の流れの一例を示すフローチャート図。 実施の形態1におけるユーザリソース読込部161がリソースを読み込むユーザリソース読込処理の流れの一例を示すフローチャート図。 実施の形態1におけるシステムリソース読込部162がリソースを読み込むシステムリソース読込処理の流れの一例を示すフローチャート図。 実施の形態2における実行装置100の機能ブロックの詳細の一例を示す詳細ブロック図。
符号の説明
100 実行装置、110 起動情報入力部、111 JNLP入力部、112 JNLP記憶部、113 JNLP解析部、114 配置情報入力部、115 配置情報記憶部、120 ダウンロード部、121 要求送信部、122 ファイル受信部、130 領域設定部、131 配置情報解析部、132 ディレクトリ生成部、140 ファイル配置部、141 ファイル解凍部、142 ファイル格納部、150 信頼性判定部、160 リソース利用部、161 ユーザリソース読込部、162 システムリソース読込部、170 プログラム実行部、300 サーバ装置、511 起動情報、521 アプリケーションプログラム、531〜533 リソース、550 配置対応情報、551 仮想パス情報、552 実パス情報、601 HTMLファイル、602 JNLPファイル、603 ディレクトリマッピングファイル、604〜606 JARファイル、611〜622 サブディレクトリ、631〜643 リソースファイル、651〜654 ソースコード、701 ローカル記憶領域、702 リソース記憶領域、703 プログラム記憶領域、800 自動実行システム、901 表示装置、902 キーボード、903 マウス、904 FDD、905 CDD、906 プリンタ装置、907 スキャナ装置、910 システムユニット、911 CPU、912 バス、913 ROM、914 RAM、915 通信装置、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群、931 電話器、932 ファクシミリ機、940 インターネット、941 ゲートウェイ、942 LAN。

Claims (7)

  1. 情報を処理する処理装置と、情報を記憶する記憶装置と、起動情報入力部と、プログラム取得部と、プログラム記憶部と、リソース取得部と、リソース配置部と、プログラム実行部とを有し、
    上記起動情報入力部は、上記処理装置を用いて、実行すべきアプリケーションプログラムがネットワーク上に存在する場所を記述したプログラム所在情報と、上記アプリケーションプログラムが利用するリソースが上記ネットワーク上に存在する場所を記述したリソース所在情報と、上記アプリケーションプログラムが上記リソースを利用する際に上記リソースが存在すべき上記記憶装置内の場所を記述したリソース配置情報とを入力し、
    上記プログラム取得部は、上記処理装置を用いて、上記起動情報入力部が入力したプログラム所在情報に基づいて、上記ネットワーク上からアプリケーションプログラムを取得し、
    上記プログラム記憶部は、上記記憶装置を用いて、上記プログラム取得部が取得したアプリケーションプログラムを記憶し、
    上記リソース取得部は、上記処理装置を用いて、上記起動情報入力部が入力したリソース所在情報に基づいて、上記ネットワーク上からリソースを取得し、
    上記リソース配置部は、上記記憶装置を用いて、上記起動情報入力部が入力したリソース配置情報に基づいて、上記リソース取得部が取得したリソースを記憶し、
    上記プログラム実行部は、上記処理装置を用いて、上記プログラム記憶部が記憶したアプリケーションプログラムを実行する
    ことを特徴とする実行装置。
  2. 上記実行装置は、更に、領域設定部と、リソース利用部とを有し、
    上記領域設定部は、上記記憶装置を用いて、上記リソースを記憶するための領域を設定し、
    上記リソース配置部は、上記記憶装置を用いて、上記起動情報入力部が入力したリソース配置情報に基づいて、上記領域設定部が設定した領域に上記リソース取得部が取得したリソースを記憶し、
    上記リソース利用部は、上記処理装置を用いて、上記プログラム実行部が実行するアプリケーションプログラムに、上記領域設定部が設定した領域に記憶したリソースを利用させる
    ことを特徴とする請求項1に記載の実行装置。
  3. 情報を処理する処理装置と、情報を記憶する記憶装置と、起動情報入力部と、プログラム取得部と、プログラム記憶部と、領域設定部と、リソース取得部と、リソース配置部と、プログラム実行部とを有し、
    上記起動情報入力部は、上記処理装置を用いて、実行すべきアプリケーションプログラムがインターネット上に存在する場所を記述したプログラムURL情報と、上記アプリケーションプログラムが利用するリソースが上記インターネット上に存在する場所を記述したリソースURL情報と、上記アプリケーションプログラムが上記リソースを利用する際に上記リソースが存在すべき上記記憶装置内の場所を記述したディレクトリマッピング情報とを入力し、
    上記プログラム取得部は、上記処理装置を用いて、上記起動情報入力部が入力したプログラムURL情報が記述したインターネット上の場所から、アプリケーションプログラムをダウンロードして取得し、
    上記プログラム記憶部は、上記記憶装置を用いて、上記プログラム取得部が取得したアプリケーションプログラムを記憶し、
    上記領域設定部は、上記記憶装置を用いて、仮想ディレクトリを生成し、上記リソースを記憶するための領域として、生成した仮想ディレクトリを設定し、
    上記リソース取得部は、上記処理装置を用いて、上記起動情報入力部が入力したリソースURL情報が記述したインターネット上の場所から、リソースをダウンロードして取得し、
    上記リソース配置部は、上記記憶装置を用いて、上記起動情報入力部が入力したディレクトリマッピング情報が記述した記憶装置内の場所に対応して、上記領域設定部が生成した仮想ディレクトリからの相対パスにより指定される場所に、上記リソース取得部が取得したリソースを記憶し、
    上記プログラム実行部は、上記処理装置を用いて、上記プログラム記憶部が記憶したアプリケーションプログラムを実行し、
    上記リソース利用部は、上記処理装置を用いて、上記プログラム実行部が実行するアプリケーションプログラムから、上記アプリケーションプログラムが利用しようとする上記記憶装置内に存在するリソースの場所を記述した利用リソースパス情報を取得し、取得した利用リソースパス情報が記述した場所に対応して、上記領域設定部が生成した仮想ディレクトリからの相対パスにより指定される場所から、リソースを取得し、取得したリソースを上記アプリケーションプログラムに利用させる
    ことを特徴とする実行装置。
  4. 上記実行装置は、更に、信頼性判定部を有し、
    上記信頼性判定部は、上記処理装置を用いて、上記プログラム記憶部が記憶したアプリケーションプログラムが信頼できるか否かを判定し、
    上記リソース利用部は、上記処理装置を用いて、上記プログラム記憶部が記憶したアプリケーションプログラムが信頼できないと上記信頼性判定部が判定した場合、上記プログラム実行部が実行するアプリケーションプログラムに、上記領域設定部が設定した領域以外に記憶したリソースを利用させない
    ことを特徴とする請求項2または請求項3に記載の実行装置。
  5. 上記起動情報入力部は、上記処理装置を用いて、更に、上記ネットワーク上に存在する書庫ファイルのなかに上記アプリケーションプログラムが利用するリソースが圧縮された形式で存在する場合に上記リソースをあらかじめ解凍しておくか否かを記述したリソース解凍情報を入力し、
    上記リソース取得部は、上記処理装置を用いて、上記起動情報入力部が入力したリソース所在情報に基づいて、上記ネットワーク上から上記リソースを含む書庫ファイルを取得し、上記起動情報入力部が入力したリソース解凍情報に基づいて、取得した書庫ファイルを解凍して上記リソースを取得する
    ことを特徴とする請求項1乃至請求項4のいずれかに記載の実行装置。
  6. 情報を処理する処理装置と情報を記憶する記憶装置とを有するコンピュータを、請求項1乃至請求項5のいずれかに記載の実行装置として機能させることを特徴とするプログラム。
  7. 情報を処理する処理装置と情報を記憶する記憶装置とを有する実行装置がアプリケーションプログラムを実行する実行方法において、
    上記処理装置が、実行すべきアプリケーションプログラムがネットワーク上に存在する場所を記述したプログラム所在情報と、上記アプリケーションプログラムが利用するリソースが上記ネットワーク上に存在する場所を記述したリソース所在情報と、上記アプリケーションプログラムが上記リソースを利用する際に上記リソースが存在すべき上記記憶装置内の場所を記述したリソース配置情報とを入力し、
    上記処理装置が、入力したプログラム所在情報に基づいて、上記ネットワーク上からアプリケーションプログラムを取得し、
    上記記憶装置が、上記処理装置が取得したアプリケーションプログラムを記憶し、
    上記処理装置が、入力したリソース所在情報に基づいて、上記ネットワーク上からリソースを取得し、
    上記記憶装置が、上記処理装置が入力したリソース配置情報に基づいて、上記処理装置が取得したリソースを記憶し、
    上記処理装置が、上記記憶装置が記憶したアプリケーションプログラムを実行する
    ことを特徴とする実行方法。
JP2007273096A 2007-10-19 2007-10-19 実行装置及びプログラム及び実行方法 Pending JP2009104250A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007273096A JP2009104250A (ja) 2007-10-19 2007-10-19 実行装置及びプログラム及び実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007273096A JP2009104250A (ja) 2007-10-19 2007-10-19 実行装置及びプログラム及び実行方法

Publications (1)

Publication Number Publication Date
JP2009104250A true JP2009104250A (ja) 2009-05-14

Family

ID=40705884

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007273096A Pending JP2009104250A (ja) 2007-10-19 2007-10-19 実行装置及びプログラム及び実行方法

Country Status (1)

Country Link
JP (1) JP2009104250A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014010598A (ja) * 2012-06-29 2014-01-20 Dainippon Printing Co Ltd 情報処理装置
JP2015531948A (ja) * 2012-10-19 2015-11-05 マカフィー, インコーポレイテッド セキュアディスクアクセス制御
CN106557343A (zh) * 2015-09-30 2017-04-05 阿里巴巴集团控股有限公司 生成功能应用及加载资源的方法及装置
JP2019021310A (ja) * 2017-07-20 2019-02-07 Line株式会社 実行可能な圧縮ファイルを保護するためのファイル保護方法およびシステム
US20230388379A1 (en) * 2014-11-25 2023-11-30 Auth0, Inc. Multi-tenancy via code encapsulated in server requests

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014010598A (ja) * 2012-06-29 2014-01-20 Dainippon Printing Co Ltd 情報処理装置
JP2015531948A (ja) * 2012-10-19 2015-11-05 マカフィー, インコーポレイテッド セキュアディスクアクセス制御
US20230388379A1 (en) * 2014-11-25 2023-11-30 Auth0, Inc. Multi-tenancy via code encapsulated in server requests
CN106557343A (zh) * 2015-09-30 2017-04-05 阿里巴巴集团控股有限公司 生成功能应用及加载资源的方法及装置
JP2019021310A (ja) * 2017-07-20 2019-02-07 Line株式会社 実行可能な圧縮ファイルを保護するためのファイル保護方法およびシステム
JP7140581B2 (ja) 2017-07-20 2022-09-21 Line株式会社 実行可能な圧縮ファイルを保護するためのファイル保護方法およびシステム

Similar Documents

Publication Publication Date Title
US6996599B1 (en) System and method providing multi-tier applications architecture
US9317681B2 (en) Information processing apparatus, information processing method, and computer program product
US7281047B2 (en) System and method for automatic provision of an application
US10496350B2 (en) Handling external content in web applications
AU2002325054B2 (en) Method and apparatus for smart directories for application deployment
US8880660B2 (en) Information-processing device, communication system, computer readable medium, and information-processing method
US9747117B2 (en) System and methods for loading an application and its modules in a client device
US20030110264A1 (en) Accessing remote stores of source and symbol data for use by computing tools
US8046757B2 (en) Method for installing ActiveX control
JP5483116B2 (ja) メンテナンスシステム、メンテナンス方法、及びメンテナンス用プログラム
US11553035B2 (en) Cross-platform module for loading across a plurality of device types
JP5166318B2 (ja) 情報を処理する装置、方法およびプログラム
US20030093508A1 (en) System for installing and launching network applications
JP2004532481A (ja) ウェブベースのファイル操作システム
JP4023803B2 (ja) ウェブアプリケーション開発支援装置、データ処理方法及びプログラム
CN108256014B (zh) 页面展示方法及装置
JP6942509B2 (ja) 情報処理装置及び情報処理装置の制御方法
US20150046451A1 (en) Information processing system, information processing method, and program
JP2009104250A (ja) 実行装置及びプログラム及び実行方法
KR20010107572A (ko) 신뢰성 기반의 링크 액세스 제어 방법, 장치 및 프로그램제품
US20080275963A1 (en) Dynamically Modifying A Universal Resource Indicator
JP2011175461A (ja) 通信システム及びサーバ及び端末装置及び通信システムの通信方法及びサーバ用プログラム及び端末用プログラム
US8103651B2 (en) Auto-updating reader program for document files
US20220035613A1 (en) Information processing apparatus, method of activating an application and storage medium
JP4391766B2 (ja) マルチプラットフォームアプリケーションのためのブラウザセッションモビリティシステム