(57)【要約】      （修正有）【課題】遠隔手続き呼び出しに関連して実行される複数のコンポーネントにおける各処理結果の関連性を容易に識別可能とする技術を提供する。【解決手段】第１のコンポーネント２０１のアプリケーション２０５が第２のコンポーネント２０２の機能関数２２３に対し遠隔手続き呼び出しを行う情報処理システムにおいて、アプリケーション２０５からの遠隔手続き呼び出しを受け付けた第１のコンポーネント２０１内のスタブ２０３は、遠隔手続き呼び出しに対して設定したシーケンス識別子をヘッダに埋め込んだ遠隔手続き呼び出しメッセージ２０６を生成して送信し、第２のコンポーネント２０２内のスケルトン２０４は、遠隔手続き呼び出しメッセージ２０６を受信すると、遠隔手続き呼び出しメッセージ２０６のヘッダからシーケンス識別子を抽出して格納して所定の機能の実行を制御する。【選択図】図２
2014194636.tif 000002
【特許請求の範囲】
【請求項１】
第１のコンポーネントのアプリケーションが第２のコンポーネントの機能関数に対し遠隔手続き呼び出しを行う情報処理システムであって、
前記アプリケーションからの遠隔手続き呼び出しを受け付け前記第２のコンポーネントに遠隔手続き呼び出しメッセージを送信する前記第１のコンポーネント内のスタブと、
前記スタブから遠隔手続き呼び出しメッセージを受け付け、所定の機能の実行を制御する前記第２のコンポーネント内のスケルトンと、
を含み、
前記スタブは、
シーケンス識別子を格納する第１の管理手段と、
前記アプリケーションからの遠隔手続き呼び出しに対して前記第１の管理手段から取得したシーケンス識別子を設定する設定手段と、
前記設定されたシーケンス識別子をヘッダに埋め込んだ遠隔手続き呼び出しメッセージを生成する生成手段と、
前記生成した遠隔手続き呼び出しメッセージを送信する送信手段と、
を有し、
前記スケルトンは、
遠隔手続き呼び出しメッセージを受信する受信手段と、
前記受信した遠隔手続き呼び出しメッセージのヘッダからシーケンス識別子を抽出する抽出手段と、
前記抽出したシーケンス識別子を格納する第２の管理手段と、
を有する
ことを特徴とする情報処理システム。
【請求項２】
前記スケルトンは、
前記受信した遠隔手続き呼び出しメッセージに基づいて前記機能関数を実行し実行結果を取得する実行制御手段と、
前記第２の管理手段から取得したシーケンス識別子をヘッダに埋め込むと共に前記実行結果を格納する遠隔手続き呼び出し返信メッセージを生成する返信メッセージ生成手段と
前記生成した遠隔手続き呼び出し返信メッセージを送信する返信メッセージ送信手段と、
を更に有し、
前記スタブは、
遠隔手続き呼び出し返信メッセージを受信する受信手段と、
前記受信した遠隔手続き呼び出し返信メッセージからシーケンス識別子を抽出する返信識別子抽出手段と、
を更に有し、
前記スタブは、前記抽出したシーケンス識別子を前記第１の管理手段に格納する
ことを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記第１の管理手段は、前記スタブのスレッド固有領域として構成され、前記第２の管理手段は、前記スケルトンのスレッド固有領域として構成される
ことを特徴とする請求項１又は２に記載の情報処理システム。
【請求項４】
前記スタブは、前記遠隔手続き呼び出しの実行結果と前記第１の管理手段に格納されたシーケンス識別子とを関連付けてログ出力する第１の出力手段を更に有し、前記スケルトンは、前記機能関数の実行結果と前記第２の管理手段に格納されたシーケンス識別子とを関連付けてログ出力する第２の出力手段を更に有する、
ことを特徴とする請求項１乃至３の何れか一項に記載の情報処理システム。
【請求項５】
前記スタブは、前記第１の管理手段に格納するシーケンス識別子の指定をユーザから受け付ける受付手段を更に有する
ことを特徴とする請求項１乃至４の何れか一項に記載の情報処理システム。
【請求項６】
前記スタブは、前記アプリケーションからの遠隔手続き呼び出しに基づいてシーケンス識別子を生成し前記第１の管理手段に格納する識別子生成手段を更に有する
ことを特徴とする請求項１乃至５の何れか一項に記載の情報処理システム。
【請求項７】
前記第１の管理手段は、前記遠隔手続き呼び出しが非同期呼出の場合、前記送信手段による遠隔手続き呼び出しメッセージの送信の後、前記第１の管理手段に格納されたシーケンス識別子を削除する削除手段を更に有する
ことを特徴とする請求項１乃至６の何れか一項に記載の情報処理システム。
【請求項８】
前記第１の管理手段は、関連する複数のシーケンス識別子を１つのリスト構造として格納し、前記設定手段は、前記アプリケーションからの遠隔手続き呼び出しに対して前記第１の管理手段から取得した１つのリスト構造を設定し、前記生成手段は、前記設定された１つのリスト構造をヘッダに埋め込んだ遠隔手続き呼び出しメッセージを生成する
ことを特徴とする請求項１乃至６の何れか一項に記載の情報処理システム。
【請求項９】
第１のコンポーネントのアプリケーションが第２のコンポーネントの機能関数に対し遠隔手続き呼び出しを行う情報処理システムにおける前記第１のコンポーネント内のスタブとして機能する情報処理装置であって、
シーケンス識別子を格納する第１の管理手段と、
前記アプリケーションからの遠隔手続き呼び出しに対して前記第１の管理手段から取得したシーケンス識別子を設定する設定手段と、
前記設定されたシーケンス識別子をヘッダに埋め込んだ遠隔手続き呼び出しメッセージを生成する生成手段と、
前記生成した遠隔手続き呼び出しメッセージを送信する送信手段と、
を有する
ことを特徴とする情報処理装置。
【請求項１０】
第１のコンポーネントのアプリケーションが第２のコンポーネントの機能関数に対し遠隔手続き呼び出しを行う情報処理システムにおける前記第２のコンポーネント内のスケルトンとして機能する情報処理装置であって、
前記第１のコンポーネントからの遠隔手続き呼び出しメッセージを受信する受信手段と、
前記受信した遠隔手続き呼び出しメッセージのヘッダから、前記アプリケーションからの遠隔手続き呼び出しに対して設定されたシーケンス識別子を抽出する抽出手段と、
前記抽出したシーケンス識別子を格納する第２の管理手段と、
を有する
ことを特徴とする情報処理装置。
【請求項１１】
第１のコンポーネントのアプリケーションが第２のコンポーネントの機能関数に対し遠隔手続き呼び出しを行う情報処理システムの制御方法であって、
前記情報処理システムは、
前記アプリケーションからの遠隔手続き呼び出しを受け付け前記第２のコンポーネントに遠隔手続き呼び出しメッセージを送信する前記第１のコンポーネント内のスタブと、
前記スタブから遠隔手続き呼び出しメッセージを受け付け、所定の機能の実行を制御する前記第２のコンポーネント内のスケルトンと、
を含んでおり、前記制御方法は、
前記第１のコンポーネント内の第１の格納手段にシーケンス識別子を格納する第１の格納工程と、
前記スタブが、前記アプリケーションからの遠隔手続き呼び出しに対して前記第１の格納手段から取得したシーケンス識別子を設定する設定工程と、
前記スタブが、前記設定されたシーケンス識別子をヘッダに埋め込んだ遠隔手続き呼び出しメッセージを生成する生成工程と、
前記スタブが、前記生成した遠隔手続き呼び出しメッセージを送信する送信工程と、
前記スケルトンが、前記遠隔手続き呼び出しメッセージを受信する受信工程と、
前記スケルトンが、前記受信した遠隔手続き呼び出しメッセージのヘッダからシーケンス識別子を抽出する抽出工程と、
前記スケルトンが、前記抽出したシーケンス識別子を前記第２のコンポーネント内の第２の格納手段にシーケンス識別子を格納する第２の格納工程と、
を含む
ことを特徴とする情報処理システムの制御方法。
【請求項１２】
第１のコンポーネントのアプリケーションが第２のコンポーネントの機能関数に対し遠隔手続き呼び出しを行う情報処理システムにおける前記第１のコンポーネント内のスタブとして機能する情報処理装置の制御方法であって、
前記第１のコンポーネント内の格納手段にシーケンス識別子を格納する格納工程と、
前記アプリケーションからの遠隔手続き呼び出しに対して前記格納手段から取得したシーケンス識別子を設定する設定工程と、
前記設定されたシーケンス識別子をヘッダに埋め込んだ遠隔手続き呼び出しメッセージを生成する生成工程と、
前記生成した遠隔手続き呼び出しメッセージを送信する送信工程と、
を含むことを特徴とする情報処理装置の制御方法。
【請求項１３】
第１のコンポーネントのアプリケーションが第２のコンポーネントの機能関数に対し遠隔手続き呼び出しを行う情報処理システムにおける前記第２のコンポーネント内のスケルトンとして機能する情報処理装置の制御方法であって、
前記第１のコンポーネントからの遠隔手続き呼び出しメッセージを受信する受信工程と、
前記受信した遠隔手続き呼び出しメッセージのヘッダから、前記アプリケーションからの遠隔手続き呼び出しに対して設定されたシーケンス識別子を抽出する抽出工程と、
前記抽出したシーケンス識別子を前記第２のコンポーネント内の格納手段にシーケンス識別子を格納する格納工程と、
を含むことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、遠隔手続き呼び出しを利用する情報処理技術に関するものである。
【背景技術】
【０００２】
外部の機能コンポーネントにより提供される機能をアプリケーションが利用するための技術として、遠隔手続き呼び出し（ＲＰＣ）がある。遠隔手続き呼び出しでは、機能コンポーネントにより提供される機能を利用するための関数インターフェイスを呼び出し側のコンポーネント（以下、呼出コンポーネント）で規定する。当該関数インターフェイスをアプリケーションが呼び出すことで、機能コンポーネントに対し遠隔手続き呼び出しメッセージが送信され、機能が実行される。そして、場合によっては機能コンポーネントは呼出コンポーネントに対し返信メッセージを送信する。
【０００３】
また、遠隔手続き呼び出しの際に呼出コンポーネントは宛先判断をし、適切にメッセージが送受信されるよう制御する。これにより、呼出コンポーネントと機能コンポーネントとのプロセス上の関係に依存せずに呼び出しが可能になる。つまり、同一のプロセスにある場合、異なるプロセスにある場合、あるいは異なるＣＰＵに割り当てられている場合を問わずに、呼び出し可能になる。そのため、アプリケーション開発者は、コンポーネント間メッセージ送受信に関する記述する必要が無くなり、開発が容易となる。
【０００４】
ところで、遠隔手続き呼び出しにおいては、呼出コンポーネントが呼び出した機能コンポーネントの処理から、更に別の機能コンポーネントを呼び出すこともある。このような場合、アプリケーション開発においては、１つの処理シーケンスに対応するそれぞれのコンポーネントでの処理、および処理結果の関連付けを行う必要がある。
【０００５】
特許文献１は、ひとつの処理単位を複数の計算機で分割処理する技術が開示されている。具体的には、分割処理するにあたって、それぞれ分割後の処理に対して同一の処理シーケンスであることを識別するリクエスト番号を付与し、ログ出力に利用する方法を開示している。また、リクエスト番号が、物理的な装置間を跨って送信される際は、遠隔手続き呼び出しの引数として追加されて送信する方法を開示している。これらの処理により、あるリクエストに基づく処理結果を突き合わせる事を可能としている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１１０３３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１などの従来の手法では、呼び出した先のコンポーネントから、更に、他のコンポーネントの呼び出しを行った場合、識別子が引き継がれない。詳細には、呼び出した先のコンポーネントが自身の識別子を使って他のコンポーネントを別途に呼び出すだけである。つまり、遠隔手続き呼び出しを用いた処理シーケンスを複数のコンポーネントに跨がって実行する場合、識別子が伝播しない。そのため、各コンポーネントにおける動作ログを参照しても、当該各コンポーネントにおける処理結果の関連性を識別することが困難となる。
【０００８】
本発明は上述の問題点に鑑みなされたものであり、遠隔手続き呼び出しに関連して実行される複数のコンポーネントにおける各処理結果の関連性を容易に識別可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述の問題点を解決するため、本発明に係る情報処理システムは以下の構成を備える。すなわち、第１のコンポーネントのアプリケーションが第２のコンポーネントの機能関数に対し遠隔手続き呼び出しを行う情報処理システムにおいて、前記アプリケーションからの遠隔手続き呼び出しを受け付け前記第２のコンポーネントに遠隔手続き呼び出しメッセージを送信する前記第１のコンポーネント内のスタブと、前記スタブから遠隔手続き呼び出しメッセージを受け付け、所定の機能の実行を制御する前記第２のコンポーネント内のスケルトンと、を含み、前記スタブは、シーケンス識別子を格納する第１の管理手段と、前記アプリケーションからの遠隔手続き呼び出しに対して前記第１の管理手段から取得したシーケンス識別子を設定する設定手段と、前記設定されたシーケンス識別子をヘッダに埋め込んだ遠隔手続き呼び出しメッセージを生成する生成手段と、前記生成した遠隔手続き呼び出しメッセージを送信する送信手段と、を有し、前記スケルトンは、遠隔手続き呼び出しメッセージを受信する受信手段と、前記受信した遠隔手続き呼び出しメッセージのヘッダからシーケンス識別子を抽出する抽出手段と、前記抽出したシーケンス識別子を格納する第２の管理手段と、を有する。
【発明の効果】
【００１０】
本発明によれば、着目している遠隔手続き呼び出しから派生して実行される処理結果の関連性を容易に識別することができる。
【図面の簡単な説明】
【００１１】
【図１】第１実施形態に係る情報処理装置の構成図である。
【図２】機能ブロックを示す図である。
【図３】処理の流れを示すフローチャートである。
【図４】遠隔手続き呼び出しメッセージの一例を示す図である。
【図５】シーケンス識別子の一例を示す図である。
【図６】実行結果出力の一例を示す図である。
【図７】実行結果出力の他の例を示す図である。
【図８】シーケンス識別子のリストの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【００１３】
（第１実施形態）
本発明に係る情報処理システムの第１実施形態として、情報処理装置１０１を例に挙げて以下に説明する。特に、第１実施形態では、呼出コンポーネントから機能コンポーネントに対して機能実行要求を出した場合に返答が返る遠隔手続き呼び出し（所謂同期呼出）の場合に関して説明する。
【００１４】
＜装置構成＞
図１は、第１実施形態に係る情報処理装置の概略構成を示すブロック図である。ここでは、情報処理装置を単一のコンピュータ装置として示しているが、複数のコンピュータ装置により構成してもよい。その場合は、複数のコンピュータ装置は互いに通信可能なようにローカルエリアネットワーク（ＬＡＮ）やバスなどで接続される。
【００１５】
情報処理装置１０１は、装置全体を制御するＣＰＵ（Central Processing Unit）１０２、ＲＯＭ（Read Only Memory）１０３、ＲＡＭ（Random Access Memory）１０４を含んでいる。ＲＯＭ１０３は、変更を必要としないプログラムやパラメータを格納する。一方、ＲＡＭ１０４は、プログラムやデータの一時記憶やワークメモリとして利用される。バス１０５は、これらの各部を互いに通信可能に接続するシステムバスである。
【００１６】
なお、情報処理装置１０１は、ユーザの操作を受け、ポインティングデバイスやキーボードなど、データを入力する入力インターフェイス（不図示）を備えていても良い。また、情報処理装置１０１は、保持するデータや供給されたデータを表示出力するための表示部（不図示）や、ネットワーク回線に接続するためのネットワークインタフェース（不図示）を備えていても良い。また、情報処理装置１０１は、ハードディスクやメモリカードなどを含む外部記憶装置（不図示）を備えていても良い。また、情報処理装置１０１は、磁気ディスク、光ディスク、半導体メモリなどの着脱可能媒体を読み取る読取装置（不図示）を備えていても良い。
【００１７】
ＣＰＵ１０２は、情報処理装置１０１の起動に沿ってＲＯＭ１０３に格納される各種プログラムをＲＡＭ１０４にロードし、ロードされた各種プログラムを実行することによって、後述の各種機能を実現する。
【００１８】
図２は、第１実施形態に係る情報処理装置の機能ブロック図である。以下の各部は、ＣＰＵ１０２が、ＲＯＭ１０３に格納される各種プログラムを実行することにより実現される。
【００１９】
コンポーネント２０１及び２０２は、それぞれ、所定の処理を行うコンポーネントである。以下の説明においては、コンポーネント２０１が、コンポーネント２０２の機能を遠隔手続き呼び出しを用いて呼び出すことを想定する。そこで、以下では、コンポーネント２０１を呼出コンポーネント、コンポーネント２０２を機能コンポーネントと呼ぶ。つまり、ここでは、機能コンポーネント２０２は、呼出コンポーネント２０１からの呼び出しに応じて、所定の処理を実行し機能を提供する。
【００２０】
ここでは、呼出コンポーネント２０１、機能コンポーネント２０２の実行単位は、オペレーティングシステム（ＯＳ）からメモリ領域の割り当てを受けて、所定の処理を実行するプログラム単位（以下、プロセス）とする。また、情報処理装置１０１では、複数のプロセスが動作するものとする。
【００２１】
呼出コンポーネント２０１内（第１のコンポーネント内）には、スタブ２０３、アプリケーション２０５、識別子管理部２０９、識別子付与部２１０が配置される。
【００２２】
スタブ２０３は、遠隔手続き呼び出しにおけるスタブである。具体的には、アプリケーション２０５が遠隔手続き呼び出しにより機能コンポーネント２０２を呼び出す場合、スタブが保持する呼出関数（不図示）を呼び出す。このときスタブ２０３は、呼び出し先の機能コンポーネント２０２内のスケルトン２０４に対して、機能実行を要求する遠隔手続き呼び出しメッセージ２０６を送信する。
【００２３】
識別子管理部２０９（第１の管理手段、第１の格納手段）は、後述するシーケンス識別子を管理する機能部であり、シーケンス識別子を保持する。識別子付与部２１０は、シーケンス識別子を生成する機能部である。
【００２４】
さらに、スタブ２０３は、送信部２０７、受信部２０８、識別子取得部２１１、識別子格納部２１２、識別子埋込部２１３、識別子抽出部２１４を含んでいる。
【００２５】
送信部２０７は、スケルトン２０４に対して遠隔手続き呼び出しメッセージを送信する機能部であり、受信部２０８は、スケルトン２０４からの遠隔手続き呼び出しメッセージを受信する機能部である。
【００２６】
識別子取得部２１１は、識別子管理部２０９よりシーケンス識別子を取得する機能部である。識別子格納部２１２は、識別子管理部２０９に対してシーケンス識別子を格納するよう制御する機能部である。
【００２７】
識別子埋込部２１３は、後述する遠隔手続き呼び出しメッセージ２０６に対しシーケンス識別子を埋め込む機能部である。識別子抽出部２１４は、スケルトン２０４から受信した遠隔手続き呼び出し返信メッセージ２１５からシーケンス識別子を抽出する機能部（返信識別子抽出手段）である。
【００２８】
機能コンポーネント２０２内（第２のコンポーネント内）には、スケルトン２０４、識別子管理部２１８、機能関数２２３が配置される。
【００２９】
スケルトン２０４は、スタブ２０３からの遠隔手続き呼び出しメッセージを受信し、当該メッセージで指定された機能に対応する機能関数２２３を呼び出す（実行制御する）機能部である。
【００３０】
識別子管理部２１８（第２の管理手段、第２の格納手段）は、機能コンポーネントにおけるシーケンス識別子を管理する機能部である。機能関数２２３は、スケルトン２０４を介して所定の機能を提供する。
【００３１】
さらに、スケルトン２０４は、受信部２１６、送信部２１７、識別子取得部２１９、識別子格納部２２０、識別子埋込部２２１、識別子抽出部２２２を含んでいる。
【００３２】
受信部２１６は、スタブ２０３から送信された遠隔手続き呼び出しメッセージ２０６を受信する機能部である。また、送信部２１７は、スタブ２０３に遠隔手続き呼び出し返信メッセージ２１５を送信する機能部（返信メッセージ送信手段）である。
【００３３】
識別子取得部２１９は、識別子管理部２１８よりシーケンス識別子を取得する機能部である。識別子格納部２２０は、識別子管理部２１８に対してシーケンス識別子を格納するよう制御する機能部である。
【００３４】
識別子埋込部２２１は、後述する遠隔手続き呼び出し返信メッセージ２１５に対しシーケンス識別子を埋め込む機能部である。識別子抽出部２２２は、スタブ２０３から受信した遠隔手続き呼び出しメッセージ２０６からシーケンス識別子を抽出する機能部である。
【００３５】
ここでは、識別子管理部２０９および識別子管理部２１８は、ＯＳの提供するスレッド固有領域（スレッドが個別に持つデータ領域）として実現されるものとする。なお、呼出コンポーネント２０１および機能コンポーネント２０２は、単一のコンピュータ装置上に配置するよう構成しても良いし、異なるコンピュータ装置上に配置するよう構成しても良い。
【００３６】
また、遠隔手続き呼び出しメッセージ２０６は、呼出コンポーネント２０１においてＯＳがプロセスに割り当てるメモリ領域（ヒープ領域）に配置されるものとする。同様に遠隔手続き呼び出し返信メッセージ２１５は、機能コンポーネント２０２においてＯＳがプロセスに割り当てるメモリ領域（ヒープ領域）に配置されるものとする。
【００３７】
なお、呼出コンポーネント２０１と機能コンポーネント２０２が単一のコンピュータ装置で実行される場合、遠隔手続き呼び出しメッセージ２０６及び遠隔手続き呼び出し返信メッセージ２１５は、ＯＳが提供する共有メモリ領域に置かれ得る。
【００３８】
＜装置の動作＞
図３は、第１実施形態に係る呼び出し処理の流れを説明するフローチャートである。なお、以下では説明を簡単にするために、呼出コンポーネント２０１及び機能コンポーネント２０２は、双方とも、単一の情報処理装置１０１のＣＰＵ１０２により実行されるものとして説明する。ただし、上述のように、呼出コンポーネント２０１及び機能コンポーネント２０２を、それぞれ、互いに通信可能に構成された異なる２台の情報処理装置で実行する形態でも良い。
【００３９】
ステップＳ３０１では、ＣＰＵ１０２は、呼出コンポーネント２０１の処理を開始する。ここで、呼出コンポーネント２０１の処理は、アプリケーション２０５が持つスレッドにより実行されるものとする。また、ステップＳ３０２では、ＣＰＵ１０２は、機能コンポーネント２０２の処理を開始する。ここで、機能コンポーネント２０２の処理は、スケルトン２０４が持つスレッドにより実行されるものとする。
【００４０】
ステップＳ３０３では、アプリケーション２０５は、遠隔手続き呼び出しを開始するため、スタブ２０３を呼出関数を介して呼び出す。
【００４１】
ステップＳ３０４では、スタブ２０３は、識別子管理部２０９に対して、シーケンス識別子の保持状況を問い合わせる。そして、ステップＳ３０５では、スタブ２０３は、識別子管理部２０９が、シーケンス識別子を保持しているか否かを判定する。シーケンス識別子を保持しているならステップＳ３０８へ、保持していないならステップＳ３０９へ進む。例えば、識別子管理部２０９（つまりスレッド固有領域）を読みに行き、”ＮＵＬＬ”出会った場合は”保持していない”と判定し、それ以外であれば”保持している”と判定する。
【００４２】
ステップＳ３０６では、識別子管理部２０９は、識別子付与部２１０に対し、シーケンス識別子の発行を依頼する。識別子付与部２１０（識別子生成手段）では、例えば、タイマ（不図示）から取得した現在時刻に基づいて３２ｂｉｔ長の乱数を生成し、これをシーケンス識別子として返す。なお、シーケンス識別子の生成方法としては、その他にも文字列、呼び出し元アプリケーションの識別子、日時などが考えられる。なお、シーケンス識別子は、当該シーケンスを一意に識別可能なものであればよく、ユーザからシーケンス識別子の指定を受付けるよう構成しても良い。
【００４３】
ステップＳ３０７では、識別子付与部２１０は、生成したシーケンス識別子を、識別子管理部２０９（スレッド固有領域）に書き込む。なお、生成したシーケンス識別子の格納制御を、識別子格納部２１２に依頼するよう構成しても良い。
【００４４】
ステップＳ３０８では、スタブ２０３は、スケルトン２０４に送信することになる遠隔手続き呼び出しメッセージ２０６をヒープ領域に確保する。そして、スタブ２０３は、ヒープ領域に確保された遠隔手続き呼び出しメッセージ２０６に対して、機能コンポーネント２０２を示すあて先情報４０２、呼出コンポーネント２０１自身を示す呼出元情報４０３を書き込む。また、併せて、呼出関数の引数である引数情報４０５、呼び出し対象の機能を示す呼出機能情報４０４を書き込む。
【００４５】
図４は、遠隔手続き呼び出しメッセージの一例を示す図である。なお、機能コンポーネント２０２が、呼出コンポーネント２０１とは異なるコンピュータ装置に配置される場合、機能コンポーネント２０２のプラットフォームに合わせ、引数情報４０５のエンディアン変換などが併せて実行される。なお、後述する遠隔手続き呼び出し返信メッセージ２１５のフォーマットは、遠隔手続き呼び出しメッセージ２０６と同じである。
【００４６】
ステップＳ３０９では、識別子取得部２１１は、識別子管理部２０９からシーケンス識別子を取得する。そして、ステップＳ３１０では、識別子埋込部２１３は、取得したシーケンス識別子を、遠隔手続き呼び出しメッセージ２０６に埋め込む。ここでは、シーケンス識別子を遠隔手続き呼び出しメッセージ２０６のヘッダ部分４０１に埋め込む。
【００４７】
ステップＳ３１１では、送信部２０７は、生成された遠隔手続き呼び出しメッセージ２０６を機能コンポーネント２０２を宛先として送信する。送信後、生成された遠隔手続き呼び出しメッセージはヒープ領域から削除される。なお、送信部２０７は、あて先情報４０２に応じて通信経路選択を行う。送信後、呼出コンポーネント２０１は、機能コンポーネント２０２からの返答を待つため、受信待ち状態に入る。
【００４８】
ステップＳ３１２では、受信部２１６は、呼出コンポーネント２０１からの遠隔手続き呼び出しメッセージ２０６を受信しヒープ領域に書き込む。そして、ステップＳ３１３では、識別子抽出部２２２は、ヒープ領域に書き込まれた遠隔手続き呼び出しメッセージ２０６から、シーケンス識別子を抽出する。
【００４９】
ステップＳ３１４では、識別子格納部２２０は、抽出したシーケンス識別子を、識別子管理部２１８に格納する。このとき、シーケンス識別子は遠隔手続き呼び出しメッセージ２０６と関連付けて格納される。例えば、呼出コンポーネント２０１における識別子管理部２０９の場合と同様に、シーケンス識別子はスレッド固有領域に置かれる。
【００５０】
ステップＳ３１５では、スケルトン２０４は、遠隔手続き呼び出しメッセージ２０６に埋め込まれている呼出機能情報４０４、引数情報４０５を元に、機能関数２２３を呼び出す。そして、機能関数２２３が戻り値を返す場合、戻り値を受け取り、スタブ２０３に返信することになる遠隔手続き呼び出し返信メッセージ２１５に書き込む（返信メッセージ生成手段）。なお、遠隔手続き呼び出し返信メッセージ２１５は、ステップＳ３１２で書き込んだヒープ領域の遠隔手続き呼び出しメッセージ２０６に対して上書きを行うことにより生成しても良い。あるいは、新たにヒープ領域を確保して、新規に生成した遠隔手続き呼び出し返信メッセージ２１５に対して書き込みを行っても良い。例えば、機能関数２２３に対する入力と出力との間でデータ構造が異なる場合、新たに領域を確保する必要が生じる。
【００５１】
ここでは、新たに遠隔手続き呼び出し返信メッセージ２１５用のヒープ領域を確保するものとする。呼出コンポーネント２０１より受信した遠隔手続き呼び出しメッセージ２０６から呼出元情報４０３を読み込み一時的に保存した後、ステップＳ３１２で受信し格納した遠隔手続き呼び出しメッセージ２０６のヒープ領域を開放する。その後、新たにヒープ領域に遠隔手続き呼び出し返信メッセージ２１５を、戻り値の形式にあわせて確保し、あて先情報４０２に一時的に記憶した呼出元情報４０３を書き込む。
【００５２】
ステップＳ３１６では、識別子取得部２１９は、識別子管理部２１８から、遠隔手続き呼び出し返信メッセージ２１５に対応するシーケンス識別子を取得する。そして、ステップＳ３１７では、識別子埋込部２２１は、シーケンス識別子を遠隔手続き返信呼び出し返信メッセージ２１５に埋め込む。
【００５３】
ステップＳ３１８では、送信部２１７は、遠隔手続き呼び出し返信メッセージ２１５をスタブ２０３に送信する。その後、機能コンポーネント２０２は再びメッセージ受信待ち状態（Ｓ３０２）となる。
【００５４】
ステップＳ３１９では、受信部２０８は、機能コンポーネント２０２からの遠隔手続き呼び出し返信メッセージ２１５を受信しヒープ領域に書き込む。そして、ステップＳ３２０では、識別子抽出部２１４は、ステップＳ３１９でヒープ領域に書き込んだ遠隔手続き呼び出し返信メッセージ２１５から、シーケンス識別子を抽出する。更に、ステップＳ３２１では、識別子格納部２１２は、抽出したシーケンス識別子を、識別子管理部２０９に格納する。
【００５５】
ステップＳ３２２では、スタブ２０３は、遠隔手続き呼び出しを行ったアプリケーション２０５に対して呼出関数の結果を返す。この際に、機能関数２２３に戻り値がある場合、遠隔手続き呼び出し返信メッセージ２１５から戻り値を読み込み、アプリケーション２０５に対して渡す。
【００５６】
なお、アプリケーション２０５に対して呼出関数の結果を返した後、識別子管理部２０９は、関連するシーケンス識別子を削除しても良い。なお、削除しない場合、アプリケーション２０５は、識別子取得部２１１を介してシーケンス識別子を取得することが出来る。
【００５７】
例えば、ステップＳ３０５にて、シーケンス識別子を保持しておらず、ステップＳ３０６〜Ｓ３０７にて生成し格納した場合は、シーケンス識別子を削除し、そうでない場合は、保持したままにしても良い。スタブ２０３の呼出関数が、異なる組み合わせの機能関数２２３から呼ばれている場合、シーケンス識別子は、識別子管理部２０９（スレッド固有領域）に格納されている。この場合、ステップＳ３０５にて”Ｙｅｓ”とし、格納済みのシーケンス識別子を引き継いで利用することで、遠隔手続き呼び出しの呼び出しが多重に行われた場合にも、当該シーケンス識別子を関連する全ての処理で参照可能となる。
【００５８】
以上説明したとおり第１実施形態によれば、シーケンス識別子を、関数処理の最中はスレッド固有領域に格納し、メッセージ通信の際にはメッセージヘッダに格納するよう制御する。これにより、例えば、スタブ内での関数呼出し、メッセージ送信・受信、スケルトン内での関数呼び出し、遠隔手続き呼び出しされた処理からの遠隔手続き呼び出しなどにおいて、シーケンス識別子を引き継ぐことが可能となる。そのため、当該シーケンス識別子を、複数のコンポーネントに跨がる複数の処理の処理結果の付きあわせ、解析ツールによる処理の可視化などを補助する情報として利用することが可能となる。
【００５９】
（変形例１）
以下では、呼出コンポーネントが機能コンポーネントからの応答を待たない場合（所謂非同期呼出）について説明する。
【００６０】
非同期呼出の場合、図３を参照して説明した処理の流れのうち、以下の点が異なってくる。まず、ステップＳ３０８では、スケルトン２０４に送信する遠隔手続き呼び出しメッセージに対してスケルトン２０４は返答を行わないため、呼出元情報４０３を書き込まない。そして、ステップＳ３１１のメッセージの送信の後、ステップＳ３２２へ飛び、アプリケーション２０５に返答を返す。この時、シーケンス識別子を識別子管理部２０９（スレッド固有領域）から削除するかどうかは、第１実施形態のステップＳ３２２と同様の判断で良い。また、ステップＳ３１５で機能関数２２３を実行した後、識別子格納部２２０を用いて、空のシーケンス識別子を書き込む。これにより、シーケンス識別子は識別子管理部２１８から削除される。その後、機能コンポーネント２０２はメッセージ受信待ち状態となる。
【００６１】
（変形例２）
変形例２では、呼出コンポーネントにて、アプリケーションがシーケンス識別子を付与した後、機能コンポーネントに機能実行要求を出す遠隔手続き呼び出しを行う場合について説明する。また、アプリケーションおよび機能関数において実行結果を出力する。以下では、図３を参照して説明した上述の処理と異なる部分のみ説明する。
【００６２】
ステップＳ３０３では、アプリケーション２０５は、スタブ２０３の呼出関数を呼ぶ前に、シーケンス識別子を設定し、当該シーケンス識別子を識別子管理部２０９に格納する。
【００６３】
図５は、シーケンス識別子の一例を示す図である。シーケンス識別子５０１は、識別子格納部２１２に格納されたシーケンス識別子を例示的に示しており、ここでは、値として文字列”ＪＯＢ００１”が設定されているものとする。
【００６４】
また、ステップＳ３０３にて、スタブ２０３は、実行結果（アプリケーションによるスタブ呼び出しの結果）をファイル６０１にログ出力する（第１の出力手段）。図６は、実行結果出力の一例を示す図である。例えば、シーケンス識別子６０２は”ＪＯＢ００１”であり、日時６０３は”１２／０４ １７：２０”であり、内容６０４は”Ｓｔａｒｔ Ａｐｐｌｉｃａｔｉｏｎ”となる。つまり、呼出コンポーネント２０１において、シーケンス識別子”ＪＯＢ００１”に関連して、時刻”１２／０４ １７：２０”に”Ａｐｐｌｉｃａｔｉｏｎ”が開始されたことを示している。
【００６５】
一方、ステップＳ３１５において、機能コンポーネント２０２において機能関数を実行中に、スケルトン２０４は、実行結果をファイル７０１にログ出力する（第２の出力手段）。図７は、機能コンポーネントで出力される実行結果出力の例を示す図である。書きだしたシーケンス識別子７０２の値は”ＪＯＢ００１”、日時７０３の値は”１２／０４ １７：２２”、内容７０４の値は”Ｅｘｅｃ  Ｆｕｎｃｔｉｏｎ”となる。つまり、機能コンポーネント２０２において、シーケンス識別子”ＪＯＢ００１”に関連して、時刻”１２／０４ １７：２２”に”Ｆｕｎｃｔｉｏｎ”が実行されたことを示している。
【００６６】
ステップＳ３２２において、スタブ２０３は、返答を受けたアプリケーション２０５は、実行結果をファイル６０１にログ出力する。書きだしたシーケンス識別子６０２の値は”ＪＯＢ００１”、日時６０３の値は”１２／０４ １７：２３”、内容６０４の値は”Ｅｎｄ  Ａｐｐｌｉｃａｔｉｏｎ”となる。つまり、呼出コンポーネント２０１において、シーケンス識別子”ＪＯＢ００１”に関連して、時刻”１２／０４ １７：２３”に”Ａｐｐｌｉｃａｔｉｏｎ”が終了されたことを示している。
【００６７】
一連の処理が全て終了した後、スタブ２０３により生成されたファイル６０１およびスケルトン２０４により生成されたファイル７０１から、各コンポーネントで実行された複数の処理結果を一覧することが可能となる。例えば、シーケンス識別子の値が”ＪＯＢ００１”のものを抽出しマージすることで、”ＪＯＢ００１”に関連付けられた遠隔手続き呼び出しに関する複数の処理結果を一覧することが可能となる。
【００６８】
（変形例３）
変形例３では、複数のシーケンス識別子を識別子管理部が保持する形態を説明する。以下では、上述の第１実施形態と異なる点のみ説明する。
【００６９】
識別子管理部２０９では、シーケンス識別子をリスト構造を用いて複数個保持可能に構成されている。図８は、３つのシーケンス識別子を含むリスト構造を例示的に示す図である。そのため、ステップＳ３０３の後、ステップＳ３０４及びＳ３０５はスキップし、ステップＳ３０６、ステップＳ３０７の順で実施する。ステップＳ３０７において、生成したシーケンス識別子を格納する際に、識別子管理部２０９で保持しているシーケンス識別子のリストの末尾に追加する。リスト構造は、識別子管理部２０９により管理されており、例えば、新たに追加したシーケンス識別子８０３は、既存のシーケンス識別子８０１、８０２の後に追加されている。
【００７０】
ステップＳ３１０では、識別子埋込部２１３は、シーケンス識別子のリスト全体を、遠隔手続き呼び出しメッセージ２０６に埋め込む。また、機能コンポーネント２０２で実行されるステップＳ３１３、Ｓ３１４、Ｓ３１６、Ｓ３１７においても、シーケンス識別子のリスト全体を抽出、格納、取得、埋め込みの対象とする。ただし、ステップＳ３２２にて、スタブ２０３は、アプリケーション２０５に返答を行う際に、末尾のシーケンス識別子８０３を削除する。これにより、アプリケーション２０５による遠隔手続き呼び出しに関連（派生）したシーケンス識別子を、当該遠隔手続き呼び出しの終了をトリガに好適に削除することが可能となる。
【図１】
2014194636.tif 000003
【図２】
2014194636.tif 000004
【図３】
2014194636.tif 000005
【図４】
2014194636.tif 000006
【図５】
2014194636.tif 000007
【図６】
2014194636.tif 000008
【図７】
2014194636.tif 000009
【図８】
2014194636.tif 000010