(57)【要約】【課題】分散オブジェクト環境におけるソフトウェアコンポーネント通信システムのプロセス起動時間を短縮する。【解決手段】ノード毎のプロセスのポート配置情報及びシステム全体のポート配置情報を管理する管理手段と、前記管理手段により管理するシステム全体のポート配置情報を蓄積あるいは削除する蓄積削除手段と、前記管理手段によりプロセス毎のポート配置情報を切り替える切替え手段とを有する。【選択図】図１
2010140345.tif 000002
【特許請求の範囲】
【請求項１】
複数ノードに分散するソフトウェアのコンポーネント間でメッセージ交換する通信手段を備えた分散オブジェクト環境におけるコンポーネント通信装置であって、
ノード毎のプロセスのポート配置情報及びシステム全体のポート配置情報を管理する管理手段と、
前記管理手段により管理するシステム全体のポート配置情報を蓄積あるいは削除する蓄積削除手段と、
前記管理手段によりプロセス毎のポート配置情報を切り替える切替え手段とを有することを特徴とするコンポーネント通信装置。
【請求項２】
複数ノードに分散するソフトウェアのコンポーネント間でメッセージ交換する通信手段を備えた分散オブジェクト環境におけるコンポーネント通信方法であって、
ノード毎のプロセスのポート配置情報及びシステム全体のポート配置情報を管理する管理工程と、
前記管理工程により管理するシステム全体のポート配置情報を蓄積あるいは削除する蓄積削除工程と、
前記管理工程によりプロセス毎のポート配置情報を切り替える切替え工程とを有することを特徴とするコンポーネント通信方法。
【請求項３】
請求項２に記載のコンポーネント通信方法の各工程をコンピュータにて実施させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアをコンポーネントという機能単位で扱い、複数ノードに分散するコンポーネント間でメッセージ交換を行なう通信手段を備えた分散オブジェクト環境におけるソフトウェアコンポーネント通信装置等に関する。
【背景技術】
【０００２】
従来、ネットワーク上で分散したソフトウェアコンポーネント間で通信を行なうために、コンポーネント名と所在とを特定するための「ハンドル」（システム内でコンポーネントをユニークに識別するためのＩＤ）を「ネームサービス」に登録しておく。コンポーネント名をキーにしてネームサービスに問い合わせることによって、サーバ側コンポーネントの所在を特定し通信する、即ちクライアントからサービスを要求し応答を得ることができるようになっている。
【０００３】
代表的なネーミングサービスであるＤＮＳでは、多数のサービスを多数のネームサーバによって階層化して管理している。クライアントからのネームサービス問合せに自ネームサーバが解決できない場合には、他ネームサーバに問合せを転送し、解決するまで検索を続けるという形態を取る。
【０００４】
一方、組込みシステムの場合には、同じように分散コンポーネント間の通信をネームサービスを介して名前解決して行なうことが多いが、サービスコンポーネントの数も所在情報も予め特定されていることが多い。また、組込みシステムでは一般に軽量、高速な処理が要求されるため、ネームサービスに対する負荷を軽減するための工夫も、ＤＮＳなどの大規模なシステムよりシビアに要求されることになる。
【０００５】
ネームサービスに対する負荷としては、ネームサービスへのコンポーネント登録の初期化における負荷、登録済のネームサービスの検索における負荷が特に大きい影響を与える。組込みシステムにおけるネームサービスの効率化については、特許文献１のようにネームサービスを階層化させ、登録済のコンポーネントの検索効率化を目的とする発明などが既に考案されている。
【０００６】
【特許文献１】特開２００４−３０２５６４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来の技術例では登録済のネームサービスの検索効率化を実現することはできるものの、ネームサービスへのコンポーネント登録の初期化における負荷の軽減を実現することはできない。通常、ネームサービスにコンポーネント情報を登録するのは、コンポーネントを含むプロセスの起動時に集中して行なわれることが多い。従って、初期化時にネームサービスへの負荷が集中し、結果としてプロセス起動時間が増大するという課題があった。ネームサービスへの登録に関わらず、一般にコンポーネント間の通信は、１）同一プロセス内、２）同一ノード内、３）別個ノード間、という順で負荷が大きくなり、速度が低下する。
【０００８】
本発明は、分散オブジェクト環境におけるソフトウェアコンポーネント通信システムのプロセス起動時間を短縮することを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するために本発明は、複数ノードに分散するソフトウェアのコンポーネント間でメッセージ交換する通信手段を備えた分散オブジェクト環境におけるコンポーネント通信装置であって、ノード毎のプロセスのポート配置情報及びシステム全体のポート配置情報を管理する管理手段と、前記管理手段により管理するシステム全体のポート配置情報を蓄積あるいは削除する蓄積削除手段と、前記管理手段によりプロセス毎のポート配置情報を切り替える切替え手段とを有することを特徴とするコンポーネント通信装置等を提供する。
【発明の効果】
【００１０】
本発明によれば、システム終了時の配置構成情報をデータベースに記録し、次回起動時にその配置構成情報を参照することでプロセス間通信することなく起動できる。このためネームサービス初期化時のプロセス間通信の回数を削減することが可能になる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明にかかる実施形態においてソフトウェアコンポーネント通信装置を、図面を参照して詳細に説明する。
本発明に係るコンポーネント通信装置は、複数ノードに分散するソフトウェアのコンポーネント間でメッセージ交換する通信手段を備えた分散オブジェクト環境において使用される。そして、ノード毎のプロセスのポート配置情報及びシステム全体のポート配置情報を管理する管理手段を有する。更に、前記管理手段により管理するシステム全体のポート配置情報を蓄積あるいは削除する蓄積削除手段と、前記管理手段によりプロセス毎のポート配置情報を切り替える切替え手段とを有する。
【００１２】
図１は、本発明のソフトウェアコンポーネント通信装置(以下、本システム)のブロック図を示す。本システムは、LANなどのネットワークで接続された複数のコンピュータ(以下、ノード)で構成される。例として、複数のノード(ノード１(１０１a)、ノード２(１０１b)とノード３(１０１c))がある。
【００１３】
各ノードには複数のプロセスが存在する。ノード２(１０１b)には、プロセス１(１０４a)とプロセス２(１０４b)がある。
さらに、各プロセスには、複数のコンポーネントが存在する。プロセス１(１０４a)には、コンポーネント１(１０８a)とコンポーネント２(１０８b)がある。
各コンポーネントには、コンポーネント間通信の受信端であるポートを作成するポート作成手段(１０９a)と、作成したポートをプロセスのポート配置情報として登録するポート登録手段(１１０a)を持つ。ポート登録手段(１１０a)により登録したプロセス内のポート配置情報は、プロセス配置情報管理手段(１０７a)で管理する。
【００１４】
また、各ノードは、ノード内のプロセスを管理するノード配置情報管理手段(１０５a)と、コンポーネント追加削除手段(１０６a)を持つ。ノード３(１０１c)は、ノード２(１０１b)と同様な構成をもつ。しかし、ノード１(１０１a)は、システム全体のノード毎のポート配置情報を管理する手段(１０２)と、それらのポート配置情報を蓄積する配置情報蓄積削除手段(１０３)を持つ。ノード１(１０１a)は、本システムでは、１つ存在する。
【００１５】
本実施形態の動作を説明する。本システムを初めて起動した状態では、システム全体のポート配置情報が配置情報蓄積削除手段(１０３)に登録されていない。
先ず、本システム終了時のポート配置情報を記録する処理の手順について説明し、次にシステム起動時の処理の手順について説明する。
システム終了時あるいは利用者の指示があった場合に、配置情報管理手段(１０２)が、システム全体のポート配置情報を配置情報蓄積削除手段(１０３)に登録する。本システムでは、バンドルのマニュフェストを利用する。バンドルは、実行ファイルと構成情報などを含む配布単位である。このバンドルの構成情報が記されているのがマニュフェストである。
【００１６】
図２は、マニュフェストの記述内容を示す一例である。マニュフェストには、プロセスを構成するコンポーネントの一覧が記述してある。マニュフェストには、コンポーネント構成の他、個々のコンポーネントのバージョン情報、依存情報(コンポーネントが別のコンポーネントを利用する/利用されるという情報)、セキュリティ情報などが記載されている。図２では、説明のため不要な情報を削除したマニュフェストファイルの一例を示す。
【００１７】
なお、本システムでは前提条件として、インストールされたすべてのコンポーネントは必ず起動され、起動時にポート作成手段(１０９a〜h)でポートを作成し、ポート登録手段(１１９a〜h)でシステムにポートを登録しておくものとする。その前提条件のもとで本システムでは、終了時にシステムが取得したポート配置情報の各ポートが、すでにシステムに登録してあるか否かを検出する。
【００１８】
終了時にシステムが取得したすべてのポート配置情報の各ポートが登録してない場合、システムが登録したポート配置情報を配置情報蓄積削除手段(１０３)に保存せずに終了する。終了時にシステムが取得したすべてのポート配置情報の各ポートが登録してある場合には、システムが登録したポート配置情報を配置情報蓄積削除手段(１０３)に保存して終了する処理を行なう。
【００１９】
次に、システム終了時の処理手順を、図３を用いて説明する。
先ず、ノード配置情報管理手段(１０５a〜b)がコンポーネント追加削除手段(１０６a〜b)でコンポーネントを追加あるいは削除したか否かを判定する(ステップＳ３０２)。コンポーネントを追加あるいは削除した場合、現在のポート配置情報の状態を保存しないで、前回起動時のポート配置情報があれば、削除する処理を実行する(ステップＳ３０６)。コンポーネントを追加あるいは削除していない場合、次の処理へ移る。
【００２０】
次の処理では、ノード配置情報管理手段(１０５a〜b)が前回起動時のポート配置情報を利用したか否かを判定する(ステップＳ３０３)。前回起動時のポート配置情報を利用した場合、処理を終了する(ステップＳ３１５)。前回起動時のポート配置情報を利用していない場合、配置情報管理手段(ステップＳ１０２)が、マニュフェストを照合することですべてのコンポーネントが起動しているか否かを判定する(ステップＳ３０４)。
【００２１】
すべてのコンポーネントが起動していない場合、現在ポート配置情報の状態を保存しないで、前回起動時のポート配置情報があれば削除する処理を行う(ステップＳ３０６)。そして、配置情報管理手段（１０２）が、システムに配置情報の保存が完了していないノードがあるか否かの判定する処理に移る(ステップＳ３０７)。
【００２２】
すべてのコンポーネントが起動している場合、現在のポート配置情報の状態を保存し(ステップＳ３０５)、配置情報管理手段（１０２）が配置情報の保存が完了していないノードがあるか否かの判定する処理に移る(ステップＳ３０７)。システムに配置情報の保存が完了していないノードがない場合、システム全体のポート配置情報を配置情報管理手段(１０２)が配置情報蓄積削除手段(１０３)に保存し(ステップＳ３０８)、システム終了処理を完了する(ステップＳ３１５)。
【００２３】
ノードがある場合、次の処理へ移る。次の処理では、ノード配置情報管理手段(１０５a〜b)が、ノードにシステムに配置情報保存が完了していないバンドルが存在するか否かを判定する(ステップＳ３０９)。システムに配置情報の保存が完了していないバンドルがない場合、ノード配置情報管理手段(１０５a〜b)がノード内の全バンドルのポート配置情報をファイルシステムに保存する(ステップＳ３１０)。そして、システムに配置情報の保存が完了していないノードがあるか否かの判定処理に移る(ステップＳ３０７)。
【００２４】
システムに配置情報の保存が完了していないバンドルがある場合、次の処理へ移る。次の処理では、プロセス配置情報管理手段(１０７a〜d)で、図２に示したマニュフェストファイルを読み込み(ステップＳ３１１)、次の処理へ移る。次の処理では、プロセス配置情報管理手段(１０７a〜d)が、読み込んだマニュフェストファイルのコンポーネント一覧からシステムに配置情報の保存が完了していないコンポーネントが存在するか否かを判定する(ステップＳ３１２)。
【００２５】
システムに配置情報の保存が完了していないコンポーネントがない場合、プロセス配置情報管理手段(１０７a〜d)がプロセス内の全ポート配置情報をファイルシステムに保存する(ステップＳ３１３)。そして、次のシステムに配置情報の保存が完了していないバンドルあるか否かの判定に移る(ステップＳ３０９)。
【００２６】
コンポーネントがある場合、次の処理へ移る。次の処理では、システムに配置情報の保存が完了していないコンポーネントが配置情報蓄積削除手段(１０３)に蓄積してあるか否かを判定する(ステップＳ３１４)。コンポーネントが蓄積してある場合、次の、システムに配置情報の保存が完了していないコンポーネントがあるか否かの判断処理に移る(ステップＳ３１２)。コンポーネントが蓄積していない場合、システム内のポート配置情報を配置情報蓄積削除手段で蓄積せず、システム終了処理を完了する(ステップＳ３１５)。
【００２７】
本システム起動時の処理の手順を、図５を用いて説明する。
先ず、システムの起動を開始する(ステップＳ５０２)。次の処理へ移る。次の処理では、ネームサービスが起動する(ステップＳ５０３)。次の処理では、前回システム終了時のシステム全体のポート配置情報を配置情報管理手段(１０２)により、配置情報蓄積削除手段(１０３)に蓄積したシステム全体のポート配置情報(図４)があるか否かを判定する(ステップＳ５０４)。
【００２８】
図４のポート配置情報は、ポートごとに一意なＩＤが採番してある。各ポートには、作成元のコンポーネント名、プロセス名、ノード名を属性として持つ。前回システム終了時のシステム全体のポート配置情報がある場合、配置情報管理手段(１０２)により、ポート配置情報をメモリにロードし、前回システム終了時のシステム全体のポート配置情報を復元する(ステップＳ５０５)。
【００２９】
ポート配置情報を復元すると、ポート登録切替え手段(１１１a〜b)がプロセス間通信しない関数群からなるＤＬＬに存在するＡＰＩを用いて(Ｓ５０６)、コンポーネントの起動を許可し(ステップＳ５０８)、次の処理へ移る。これにより、コンポーネントの変更なしに本来登録するときに発生するプロセス間通信をしないでシステムを起動することが可能となる。
【００３０】
前回システム終了時のシステム全体のポート配置情報がない場合、ポート登録切替え手段(１１１a〜b)がプロセス間通信する関数群からなるＤＬＬに存在するＡＰＩを用いて(ステップＳ５０７)、ポート登録時にプロセス間通信を行ってシステムを起動する。そして、コンポーネントの起動を許可し(ステップＳ５０８)、次の処理へ移る。
【００３１】
次の処理では、システムがイベント待ちの状態となる(ステップＳＳ５０９)。システムが動作するイベントには、本発明の図３で示したシステムを終了する処理などがある。次の処理では、システムにイベントが発生したか否かを判定する(ステップＳ５１０)。イベントが発生していない場合、イベント待ちの状態へと戻る(ステップＳ５０９)。イベントが発生した場合、イベント処理を行い、システム終了のイベントであれば、システムを終了する処理(ステップＳ３０１)へ移る。
【００３２】
本システムはつまり、前回起動時のポート配置情報を利用することで起動速度が向上する。従って、本システムでプロセス間通信が行われるのは初回起動時とコンポーネント追加削除手段(１０６a〜b)を起動した場合に限られる。よって、プロセス間通信する頻度は通常あまりないので、本発明の効果が期待できる。
【００３３】
ここで、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステム或いは装置に供給し、そのシステム等のコンピュータが記憶媒体からプログラムコードを読み出し実行することによっても達成される。
【００３４】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００３５】
プログラムコードを供給するための記憶媒体としては、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【００３６】
また、コンピュータが読み出したプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００３７】
更に記憶媒体から読み出されたプログラムコードが、コンピュータに接続された機能拡張ユニット等に備わるメモリに書込まれた後、そのプログラムコードの指示に基づきＣＰＵ等が実際の処理を行い、前述した実施形態の機能が実現される場合も含まれる。
【００３８】
更にプログラムコードをインターネット等の通信媒体を介してコンピュータに供給される構成も本発明の範疇に含まれる。
【図面の簡単な説明】
【００３９】
【図１】本発明の実施形態にかかるソフトウェアコンポーネント通信装置のブロック図である。
【図２】本発明の実施形態にかかるマニュフェストファイルの記述例を示す図である。
【図３】本発明の実施形態にかかるシステム終了時のポート配置情報を記録する処理の手順を示すフローチャートである。
【図４】本発明の実施形態にかかる記録したシステム全体のポート配置情報の一例を示す図である。
【図５】本発明の実施の形態にかかるシステム起動時の処理の手順を示すフローチャートである。
【符号の説明】
【００４０】
１０１a・・・ノード１
１０１b・・・ノード２
１０１c・・・ノード３
１０２・・・配置情報管理手段
１０３・・・配置情報蓄積削除手段
１０４a・・・プロセス１
１０４b・・・プロセス２
１０４c・・・プロセス３
１０４d・・・プロセス４
１０５a・・・ノード配置情報管理手段
１０５b・・・ノード配置情報管理手段
１０６a・・・コンポーネント追加削除手段
１０６b・・・コンポーネント追加削除手段
１０７a・・・プロセス配置情報管理手段
１０７b・・・プロセス配置情報管理手段
１０７c・・・プロセス配置情報管理手段
１０７d・・・プロセス配置情報管理手段
１０８a・・・コンポーネント１
１０８b・・・コンポーネント２
１０８c・・・コンポーネント３
１０８d・・・コンポーネント４
１０８e・・・コンポーネント５
１０８f・・・コンポーネント６
１０８g・・・コンポーネント７
１０８h・・・コンポーネント８
１０９a・・・ポート作成手段
１０９b・・・ポート作成手段
１０９c・・・ポート作成手段
１０９d・・・ポート作成手段
１０９e・・・ポート作成手段
１０９f・・・ポート作成手段
１０９g・・・ポート作成手段
１０９h・・・ポート作成手段
１１０a・・・ポート登録手段
１１０b・・・ポート登録手段
１１０c・・・ポート登録手段
１１０d・・・ポート登録手段
１１０e・・・ポート登録手段
１１０f・・・ポート登録手段
１１０g・・・ポート登録手段
１１０h・・・ポート登録手段
１１１a・・・ポート登録切替え手段
１１１b・・・ポート登録切替え手段
【図１】
2010140345.tif 000003
【図２】
2010140345.tif 000004
【図３】
2010140345.tif 000005
【図４】
2010140345.tif 000006
【図５】
2010140345.tif 000007