(57)【要約】【課題】関連のあるウェブサービスによる複合的なサービスの効果的な提供を実現し、ウェブサービスの信頼性の向上を図る。【解決手段】リクエスタとして他のサーバの処理を呼び出して、かかる処理を実行させる第１のサーバＷＳ１と、リプライアとして他のサーバからのリクエストに応じて所定の処理を実行する第２のサーバＷＳ２、ＷＳ３とを備え、第１のサーバＷＳ１は、第２のサーバＷＳ２、ＷＳ３の処理におけるセッションタイムアウトの管理時間を指定し、第２のサーバＷＳ２、ＷＳ３は、第１のサーバＷＳ１にて指定された管理時間に基づいて自装置の処理におけるセッションタイムアウトを設定する。【選択図】        図１
2004310298.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された複数のサーバを協働させて所定の処理を実行する情報処理システムにおいて、
リクエスタとして他のサーバの処理を呼び出して、当該処理を実行させる第１のサーバと、
リプライアとして他のサーバからのリクエストに応じて所定の処理を実行する第２のサーバとを備え、
前記第１のサーバは、前記第２のサーバの処理におけるセッションタイムアウトの管理時間を指定し、
前記第２のサーバは、前記第１のサーバにて指定された前記管理時間に基づいて自装置の処理におけるセッションタイムアウトを設定することを特徴とする情報処理システム。
【請求項２】
前記第２のサーバは、前記ネットワーク上に複数存在し、前記第１のサーバは、各々の前記第２のサーバに対して個別に前記管理時間を指定することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記第１のサーバは、指定した前記第２のサーバの処理における管理時間を、前記ネットワーク上の所定の記憶手段に構築されたテーブルに登録し、
前記第２のサーバは、前記テーブルを参照して前記管理時間を取得することを特徴とする請求項１に記載の情報処理システム。
【請求項４】
前記テーブルは、前記ネットワーク上に独立に設けられた第３のサーバのメモリに構築されたことを特徴とする請求項３に記載の情報処理システム。
【請求項５】
前記第２のサーバは、前記ネットワーク上に複数存在し、前記第１のサーバは、呼び出して処理を実行させる順番で各々の前記第２のサーバの前記管理時間を前記テーブルに登録することを特徴とする請求項３に記載の情報処理システム。
【請求項６】
ネットワークに接続し、当該ネットワークを介して接続された所定のサーバの処理を呼び出して実行させる情報処理装置において、
所定の処理を実行し、当該処理において前記所定のサーバの処理を呼び出すアプリケーション実行部と、
前記アプリケーション実行部が前記所定のサーバの処理を呼び出す場合に、当該所定のサーバにおける処理のセッションタイムアウトの管理時間を指定し、当該所定のサーバが参照可能な前記ネットワーク上の所定の記憶手段に当該管理時間を格納するセッションタイムアウト制御部と
を備えることを特徴とする情報処理装置。
【請求項７】
前記セッションタイムアウト制御部は、前記所定の記憶手段として、前記ネットワーク上に独立に設けられ、かつ前記所定のサーバからアクセス可能な他のサーバのメモリに前記管理時間を格納することを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記アプリケーション実行部は、複数の前記所定のサーバの処理を呼び出し、
前記セッションタイムアウト制御部は、前記所定のサーバにおける処理の実行順を考慮して、当該所定のサーバに対して個別に前記管理時間を指定することを特徴とする請求項６に記載の情報処理装置。
【請求項９】
ネットワークに接続し、当該ネットワークを介してなされたリクエストに応じて所定の処理を実行する情報処理装置において、
情報処理装置の処理におけるセッションタイムアウトの管理時間を格納して保持するデータ格納手段と、
前記ネットワークに接続された第１の情報処理装置からのリクエストを受け付けて、当該リクエストと共に送られた前記管理時間を前記データ格納手段に格納し、前記ネットワークに接続された第２の情報処理装置からのリクエストを受け付けて、前記データ格納手段に格納されている前記管理時間を当該第２の情報処理装置に返すデータ管理手段と
を備えることを特徴とする情報処理装置。
【請求項１０】
前記データ管理手段は、
前記第１の情報処理装置からのリクエストに従う順番で前記管理時間を前記データ格納手段に格納し、
前記第２の情報処理装置からのリクエストを受けた順番に従って、当該第２の情報処理装置に、前記データ格納手段に格納されている前記管理時間を返すことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
ネットワークに接続し、当該ネットワークを介してなされたリクエストに応じて所定の処理を実行する情報処理装置において、
前記ネットワークに接続された所定の情報処理装置からのリクエストに応じて前記所定の処理を実行するアプリケーション実行部と、
前記アプリケーション実行部が前記所定の処理を実行する場合に、前記ネットワーク上の所定の記憶手段に格納されている自装置用のセッションタイムアウトの管理時間を取得し、当該管理時間に基づいて当該所定の処理におけるセッションタイムアウトを設定するセッションタイムアウト設定部と
を備えることを特徴とする情報処理装置。
【請求項１２】
前記セッションタイムアウト設定部は、
前記ネットワーク上に独立に設けられた所定のサーバに対して前記管理時間を取得するためのリクエストを発行し、当該リクエストに対するレスポンスとして当該管理時間を取得することを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
ネットワークを介して接続された複数のコンピュータにて行われる処理を管理するセッション管理方法において、
所定のコンピュータの処理で他のコンピュータの処理を呼び出す場合に、当該他のコンピュータにおける処理のセッションタイムアウトの管理時間を設定するステップと、
設定された前記管理時間を、所定の記憶手段に格納するステップと、
前記他のコンピュータの処理を呼び出して、当該処理を実行させるステップとを含むことを特徴とするセッション管理方法。
【請求項１４】
ネットワークを介して接続された複数のコンピュータにて行われる処理を管理するセッション管理方法において、
自装置の処理を実行するリクエストを他のコンピュータから受信した場合に、所定の記憶手段に格納された自装置の処理に対するセッションタイムアウトの管理時間を取得するステップと、
取得した前記管理時間に基づいて、自装置の処理におけるセッションタイムアウトの設定を行うステップと、
前記セッションタイムアウトの設定の下で、前記リクエストにて呼び出された処理を実行するステップと
を含むことを特徴とするセッション管理方法。
【請求項１５】
ネットワークに接続されたコンピュータを制御して、当該ネットワークを介して接続された所定のサーバの処理を呼び出して実行させるプログラムであって、
所定のコンピュータの処理で他のコンピュータの処理を呼び出す場合に、当該他のコンピュータにおける処理のセッションタイムアウトの管理時間を設定する機能と、
設定された前記管理時間を、所定の記憶手段に格納する機能と、
前記他のコンピュータの処理を呼び出して、当該処理を実行させる機能とを
前記コンピュータに実現することを特徴とするプログラム。
【請求項１６】
前記管理時間を記憶手段に格納する機能では、前記ネットワーク上に独立に設けられたサーバに対してリクエストを発行し、当該サーバのメモリに前記管理時間を格納する処理を前記コンピュータに実行させることを特徴とする請求項１５に記載のプログラム。
【請求項１７】
ネットワークに接続されたコンピュータを制御して、当該ネットワークを介してなされたリクエストに応じて所定の処理を実行するプログラムであって、
前記ネットワークに接続された第１の情報処理装置からのリクエストを受け付けて、当該リクエストと共に送られた前記セッションタイムアウトの管理時間を記憶手段に格納する機能と、
前記ネットワークに接続された第２の情報処理装置からのリクエストを受け付けて、前記記憶手段に格納されている前記管理時間を返す機能とを
前記コンピュータに実現することを特徴とするプログラム。
【請求項１８】
前記管理時間を記憶手段に格納する機能では、前記第１の情報処理装置からのリクエストに従う順番で前記管理時間を前記記憶手段に格納し、
前記管理時間を返す機能では、前記第２の情報処理装置からのリクエストを受けた順番に従って、当該第２の情報処理装置に、前記記憶手段に格納されている前記管理時間を返すことを特徴とする請求項１７に記載のプログラム。
【請求項１９】
ネットワークに接続されたコンピュータを制御して、当該ネットワークを介してなされたリクエストに応じて所定の処理を実行するプログラムであって、
自装置の処理を実行するリクエストを他のコンピュータから受信した場合に、所定の記憶手段に格納された自装置の処理に対するセッションタイムアウトの管理時間を取得する機能と、
取得した前記管理時間に基づいて、自装置の処理におけるセッションタイムアウトの設定を行う処理と、
前記セッションタイムアウトの設定の下で、前記リクエストにて呼び出された処理を実行する機能とを
前記コンピュータに実現することを特徴とするプログラム。
【請求項２０】
前記管理時間を取得する機能では、前記ネットワーク上に独立に設けられた所定のサーバに対して前記管理時間を取得するためのリクエストを発行し、当該リクエストに対するレスポンスとして当該管理時間を取得する処理を前記コンピュータに実行させることを特徴とする請求項１９に記載のプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータ間の情報通信に関し、特に複数のコンピュータ間でのセッションを効果的に行う通信制御に関する。
【０００２】
【従来の技術】
今日、インターネットの普及に伴い、ネットワークを介して行われるサービスが多様化している。その中に、ネットワークを介して接続されたコンピュータのアプリケーション間で連携して機能を利用し、サービスを提供するウェブサービスがある。このウェブサービスの利用環境では、所定のコンピュータのアプリケーションから他のコンピュータにおけるアプリケーションの機能（サービス）を呼び出すことができ、提供されるサービスによっては複数の他のコンピュータにおける機能を呼び出すことも想定される。
【０００３】
図１１は、ウェブサービスにおいて所定のサーバから他の複数のサーバを呼び出す様子を示す図である。
図１１において、呼び出し元のウェブサービス（ＷＳ１）と呼び出されるウェブサービス（ＷＳ２、ＷＳ３）との間には、ＷＳ１−ＷＳ２間、ＷＳ１−ＷＳ３間で、それぞれＨＴＴＰセッションが作成される。
具体例を挙げると、ＷＳ１が旅行予約、ＷＳ２が飛行機予約、ＷＳ３がレンタカー予約といったウェブサービスを提供している場合を考える。この場合、エンドユーザがＷＳ１に旅行予約のリクエストを発行すると、これに応じて、旅行予約のＨＴＴＰセッションが発生する。そして、ＷＳ１からＷＳ２へ飛行機予約のリクエストが発行され、同様にＷＳ１からＷＳ３へレンタカー予約のリクエストが発行され、それぞれ飛行機予約、レンタカー予約のＨＴＴＰセッションが発生する。
【０００４】
ところで、ウェブサービスにおいて、サーバは、サービスにおけるセッションの終了を明確に認識するため、セッションタイムアウトを設定し、サービス開始から一定時間経過後に処理を終了するのが一般的である（例えば、特許文献１参照）。上記のように所定のウェブサービス（図１１の例ではＷＳ１）をコントロールポイントとして他の複数のウェブサービス（図１１の例ではＷＳ２、ＷＳ３）を呼び出す場合、各ＨＴＴＰセッションは、ＷＳ１からみてアプリケーション的には関連があるものの、ＨＴＴＰセッションとしては独立して存在している。そのため、それぞれのＨＴＴＰセッションがいつセッションタイムアウトを発生するかは、各ウェブサービスを提供する個々のサーバの実装に依存する。
【０００５】
【特許文献１】
特開平１１−１６１５０７号公報（第５頁−第６頁）
【０００６】
【発明が解決しようとする課題】
上述したように、所定のウェブサービスをコントロールポイントとして他の複数のウェブサービスを呼び出す場合、各ＨＴＴＰセッションがいつセッションタイムアウトを発生するかは、各ウェブサービスを提供する個々のサーバの実装に依存する。そのため、一方のウェブサービスでＨＴＴＰセッションを実行中に他方のウェブサービスのＨＴＴＰセッションがセッションタイムアウトにより終了してしまう場合があった。
先の旅行予約の例で説明する。ＷＳ１からのリクエストにより、ＷＳ２において飛行機予約が行われ、ＷＳ３でレンタカー予約が行われている場合を考える。この場合、ＷＳ２で仮予約がなされ、その情報がＨＴＴＰセッションに保持されていても、ＷＳ３における処理が行われている間にＷＳ２のＨＴＴＰセッションがセッションタイムアウトを発生すると、ＷＳ１やＷＳ３の状態に関わらず、予約確定を待たずにＷＳ２の処理が終了してしまう。そして、ＷＳ２における仮予約した飛行機予約の情報が失われ無効となってしまう。この場合、ＷＳ１は、エンドユーザに対して再度飛行機予約のための入力を促すこととなる。
【０００７】
このように、従来は、ウェブサービスにおけるＨＴＴＰセッションにおけるセッションタイムアウトのタイミングがサーバごとに独立であるため、アプリケーション的に関連のあるウェブサービスであっても、有機的に連動せずに一部のウェブサービスが脱落してしまうという問題があった。
また、上述した旅行予約の例のように、エンドユーザに対して煩雑な作業を要求することは、ウェブサービスの信頼性の面で好ましくなかった。
そこで本発明は、上記の問題に鑑み、関連のあるウェブサービスによる複合的なサービスの効果的な提供を実現することを目的とする。
また、これにより、ウェブサービスの信頼性の向上を図ることを目的とする。
【０００８】
【課題を解決するための手段】
上記の目的を達成する本発明は、ネットワークを介して接続された複数のサーバを協働させて所定の処理を実行する、次のように構成された情報処理システムとして実現される。この情報処理システムは、リクエスタとして他のサーバの処理を呼び出して、かかる処理を実行させる第１のサーバと、リプライアとして他のサーバからのリクエストに応じて所定の処理を実行する第２のサーバとを備え、第１のサーバは、第２のサーバの処理におけるセッションタイムアウトの管理時間を指定し、第２のサーバは、第１のサーバにて指定された管理時間に基づいて自装置の処理におけるセッションタイムアウトを設定することを特徴とする。
【０００９】
ここで、より詳細には、この第２のサーバの処理におけるセッションタイムアウトの管理時間は、第２のサーバが複数存在する場合は、個別に設定される。また、この管理時間は、ネットワーク上の第３のサーバに構築されたテーブルに、第２のサーバを呼び出して処理を実行させる順番で登録される。
【００１０】
ここでさらに、第１のサーバを構成する情報処理装置は、所定の処理を実行し、この処理において第２のサーバの処理を呼び出すアプリケーション実行部と、このアプリケーション実行部が第２のサーバの処理を呼び出す場合に、この第２のサーバにおける処理のセッションタイムアウトの管理時間を指定し、この第２のサーバが参照可能なネットワーク上の所定の記憶手段である第３のサーバに、この管理時間を格納するセッションタイムアウト制御部とを備えることを特徴とする。
【００１１】
また、第２のサーバを構成する情報処理装置は、ネットワークに接続された所定の情報処理装置からのリクエストに応じて所定の処理を実行するアプリケーション実行部と、このアプリケーション実行部が所定の処理を実行する場合に、ネットワーク上の所定の記憶手段である第３のサーバに格納されている自装置用のセッションタイムアウトの管理時間を取得し、この管理時間に基づいて所定の処理におけるセッションタイムアウトを設定するセッションタイムアウト設定部とを備えることを特徴とする。
【００１２】
さらに、第３のサーバを構成する情報処理装置は、情報処理装置の処理におけるセッションタイムアウトの管理時間をベクターテーブルに格納して保持するデータ格納手段としてのメモリと、ネットワークに接続された第１のサーバからのリクエストを受け付けて、このリクエストと共に送られた管理時間をデータ格納手段に格納し、ネットワークに接続された第２のサーバからのリクエストを受け付けて、データ格納手段に格納されている管理時間を当該第２のサーバに返すデータ管理手段であるベクターテーブル管理部とを備えることを特徴とする。
【００１３】
また、上記の目的を達成する他の本発明は、ネットワークを介して接続された複数のコンピュータにて行われる処理を管理する、次のようなセッション管理方法としても実現される。このセッション管理方法は、所定のコンピュータの処理で他のコンピュータの処理を呼び出す場合に、かかる他のコンピュータにおける処理のセッションタイムアウトの管理時間を設定するステップと、設定された管理時間を、所定の記憶手段に格納するステップと、他のコンピュータの処理を呼び出して、処理を実行させるステップとを含むことを特徴とする。
【００１４】
さらに本発明の他のセッション管理方法は、自装置の処理を実行するリクエストを他のコンピュータから受信した場合に、所定の記憶手段に格納された自装置の処理に対するセッションタイムアウトの管理時間を取得するステップと、取得した管理時間に基づいて、自装置の処理におけるセッションタイムアウトの設定を行うステップと、セッションタイムアウトの設定の下で、リクエストにて呼び出された処理を実行するステップとを含むことを特徴とする。
【００１５】
また本発明は、コンピュータを制御して上述した各サーバの機能を実現させるプログラム、またはコンピュータに上記のセッション管理方法における各ステップに相当する処理を実行させるプログラムとしても実現される。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
【００１６】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
図１は、本実施の形態のＨＴＴＰセッションコントロールが適用されるネットワークシステムの全体構成を示した図である。
図１に示すネットワークシステムでは、ウェブサービスを提供するサーバＷＳ１、ＷＳ１ａ、ＷＳ２、ＷＳ３およびエンドユーザの使用するクライアントＣ１とが、インターネット等のネットワークを介して接続されている。このネットワークシステムにおいて、クライアントＣ１は、エンドユーザが使用するネットワーク端末であり、ウェブブラウザを介してサーバＷＳ１にアクセスし、サーバＷＳ１の提供するウェブサービスをリクエストする。
クライアントＣ１からサーバＷＳ１へウェブサービスのリクエストがなされると、サーバＷＳ１は、このリクエストに応じてＨＴＴＰセッションを作成してサービスを実行する。このサーバＷＳ１のウェブサービス処理の中からサーバＷＳ２、ＷＳ３によるウェブサービスが呼び出される。サーバＷＳ２、ＷＳ３では、この呼び出し（リクエスト）に応じてそれぞれＨＴＴＰセッションを作成し、サービスを実行する。すなわち、サーバＷＳ１、ＷＳ２、ＷＳ３の間の関係では、サーバＷＳ１がリクエスタ（ｒｅｑｕｅｓｔｅｒ：呼び側）であり、サーバＷＳ２およびＷＳ３がリプライア（ｒｅｐｌｉｅｒ：呼ばれ側）である。
【００１７】
また、サーバＷＳ１は、サーバＷＳ２、ＷＳ３のウェブサービスの呼び出しに先立って、サーバＷＳ１ａのウェブサービスを呼び出し、サーバＷＳ２、ＷＳ３のウェブサービスにおけるＨＴＴＰセッションのセッションタイムアウトの設定値（すなわち、セッションタイムアウトによりＨＴＴＰセッションを終了するまでの設定時間。以下、管理時間と称す）を登録する。サーバＷＳ２、ＷＳ３は、ウェブサービスを開始する前にサーバＷＳ１ａにアクセスし、この管理時間を取得して、自身のセッションタイムアウトの設定を行う。これらの動作および各サーバＷＳ１、ＷＳ１ａ、ＷＳ２、ＷＳ３の機能の詳細については後述する。
【００１８】
図２は、図１に示した本実施の形態におけるサーバＷＳ１、ＷＳ１ａ、ＷＳ２、ＷＳ３およびクライアントＣ１を実現するコンピュータ装置のハードウェア構成の例を模式的に示した図である。
図２に示すコンピュータ装置は、演算手段であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置）１０１と、Ｍ／Ｂ（マザーボード）チップセット１０２及びＣＰＵバスを介してＣＰＵ１０１に接続されたメインメモリ１０３と、同じくＭ／Ｂチップセット１０２及びＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）を介してＣＰＵ１０１に接続されたビデオカード１０４と、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを介してＭ／Ｂチップセット１０２に接続されたハードディスク１０５、ネットワークインターフェイス１０６及びＵＳＢポート１０７と、さらにこのＰＣＩバスからブリッジ回路１０８及びＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バスなどの低速なバスを介してＭ／Ｂチップセット１０２に接続されたフロッピーディスクドライブ１０９及びキーボード／マウス１１０とを備える。
なお、図２は本実施の形態を実現するコンピュータ装置のハードウェア構成を例示するに過ぎず、本実施の形態を適用可能であれば、他の種々の構成を取ることができる。例えば、ビデオカード１０４を設ける代わりに、ビデオメモリのみを搭載し、ＣＰＵ１０１にてイメージデータを処理する構成としても良いし、外部記憶装置として、ＡＴＡ（ＡＴ  Ａｔｔａｃｈｍｅｎｔ）などのインターフェイスを介してＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＤＶＤ−ＲＯＭ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）のドライブを設けても良い。また、クライアントＣ１としては、図２に示すようなコンピュータ装置の他、ネットワーク機能を備えたＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）や携帯電話といった種々の情報端末を用いることができる。
【００１９】
図３は、本実施の形態によるサーバＷＳ１の機能構成を示す図である。
図３に示すように、リクエスタであるサーバＷＳ１は、ネットワークを介してクライアントＣ１およびサーバＷＳ１ａ、ＷＳ２、ＷＳ３と情報の送受信を行うための通信制御部１０と、サーバＷＳ１自身が提供するウェブサービスのＨＴＴＰセッションを管理するセッション管理部２０と、当該ウェブサービスにおける処理を実行するアプリケーション実行部３０と、サーバＷＳ１ａに対して管理時間を登録するセッションタイムアウト制御部４０とを備える。
【００２０】
上述した構成要素のうち、セッション管理部２０、アプリケーション実行部３０およびセッションタイムアウト制御部４０は、例えば、図２に示したメインメモリ１０３に展開されたプログラムにてＣＰＵ１０１を制御することにより実現される仮想的なソフトウェアブロックである。また、通信制御部１０は、プログラム制御されたＣＰＵ１０１およびネットワークインターフェイス１０６にて実現される。
ＣＰＵ１０１を制御してこれらの機能を実現させるプログラムは、具体的には、例えばＪａｖａ（米国サンマイクロシステムズ社の商標）サーブレットとして記述され、磁気ディスクや光ディスク、半導体メモリ、その他の記憶媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供される。本実施の形態では、図２に示したネットワークインターフェイス１０６やフロッピーディスクドライブ１０９、図示しないＣＤ−ＲＯＭドライブなどを介して当該プログラムを入力し、ハードディスク１０５に格納する。そして、ハードディスク１０５に格納されたプログラムをメインメモリ１０３に読み込んで展開し、ＣＰＵ１０１にて実行することにより、これらの機能を実現する。
【００２１】
上記の構成において、通信制御部１０は、インターネットを介してクライアントＣ１、サーバＷＳ２、ＷＳ３との間でパケット交換を行い、リクエスト（ＨＴＴＰリクエスト）やレスポンス（ＨＴＴＰレスポンス）の送受信を行う。
【００２２】
セッション管理部２０は、通信制御部１０にてクライアントＣ１からのリクエストを受信すると、このリクエストに応じてＨＴＴＰセッションを発生させる。そして、内蔵されたタイマーをカウントして計時する。ＨＴＴＰセッションに関しては、セッションタイムアウト機能が予め設けられており、タイマーのカウント値がタイムアウトの設定値に達したならば、セッション管理部２０は当該ＨＴＴＰセッションを終了させる。
【００２３】
アプリケーション実行部３０は、セッション管理部２０の管理下のＨＴＴＰセッションに対する処理を実行する。処理の内容は任意であるが、本実施の形態におけるサーバＷＳ１においては、この処理の中で、自身のウェブサービス（ＨＴＴＰセッション）に関連するウェブサービスを行う関連サーバであるサーバＷＳ２、ＷＳ３にリクエストを送信し、ウェブサービスを呼び出す。
【００２４】
セッションタイムアウト制御部４０は、アプリケーション実行部３０による処理の中で関連サーバである他のサーバＷＳ２、ＷＳ３のウェブサービスが呼ばれる場合に、リクエストの発行に先立って、サーバＷＳ１ａにリクエストを送信し、その処理を呼び出す。そして、サーバＷＳ２、ＷＳ３の各ＨＴＴＰセッションにおけるセッションタイムアウトの設定値である管理時間Ｔ２、Ｔ３を決定し、サーバＷＳ１ａに登録する。セッションタイムアウト制御部４０において決定される管理時間の値については、後で詳述する。
【００２５】
図４は、本実施の形態によるサーバＷＳ１ａの機能構成を示す図である。
図４に示すように、サーバＷＳ１ａは、ネットワークを介してサーバＷＳ１、ＷＳ２、ＷＳ３と情報の送受信を行うための通信制御部１０と、サーバＷＳ１からサーバＷＳ２、ＷＳ３における管理時間を受け付けて管理するためのベクターテーブル管理部５０およびベクターテーブル５１とを備える。なお、通信制御部１０は、サーバＷＳ１における通信制御部１０と同様であるため、同一の符号を付して説明を省略する。
【００２６】
ベクターテーブル管理部５０は、例えば図２に示したプログラムされたＣＰＵ１０１にて実現される仮想的なソフトウェアブロックである。ＣＰＵ１０１を制御するプログラムは、具体的には、例えばＪａｖａ（米国サンマイクロシステムズ社の商標）サーブレットとして記述され、磁気ディスクや光ディスク、半導体メモリ、その他の記憶媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供される。
ベクターテーブル５１は、サーバＷＳ１のＨＴＴＰセッションごとにサーバＷＳ２、ＷＳ３の処理における管理時間を保持するデータ構造（配列）であり、例えば図２のメインメモリ１０３上に構築される。
【００２７】
上記構成において、ベクターテーブル管理部５０は、通信制御部１０にてサーバＷＳ１からのリクエストを受信すると、このリクエストに応じてＨＴＴＰセッションを発生させ、当該ＨＴＴＰセッション用のベクターテーブル５１を生成する。そして、当該ベクターテーブル５１を特定するＩＤ情報と、管理時間Ｔ２、Ｔ３とを登録する。この登録値は、後にサーバＷＳ２、ＷＳ３にて利用されるが、サーバＷＳ２、ＷＳ３が参照しに来る順番で登録される。すなわち、ベクターテーブル５１には、サーバＷＳ２、ＷＳ３における処理の開始順の情報も保存される。なお、ＩＤ情報は、サーバＷＳ１において指定し、サーバＷＳ１ａを呼び出した際にサーバＷＳ１ａに与えても良いし、ベクターテーブル５１を生成した際にサーバＷＳ１ａにて指定し、サーバＷＳ１へ通知するようにしても良い。
【００２８】
図５は、本実施の形態におけるサーバＷＳ２、ＷＳ３の機能構成を示す図である。
図５に示すように、リプライアであるサーバＷＳ２、ＷＳ３は、ネットワークを介してサーバＷＳ１、ＷＳ１ａと情報の送受信を行うための通信制御部１０と、サーバＷＳ２、ＷＳ３自身が提供するウェブサービスのＨＴＴＰセッションを管理するセッション管理部２０と、当該ウェブサービスにおける処理を実行するアプリケーション実行部３０と、サーバＷＳ１ａからＨＴＴＰセッションの管理時間（登録値）を取得し、自身のセッションタイムアウトの設定を行うセッションタイムアウト設定部６０とを備える。なお、通信制御部１０、セッション管理部２０およびアプリケーション実行部３０は、サーバＷＳ１における対応する構成要素と同様であるため、同一の符号を付して説明を省略する。
【００２９】
セッションタイムアウト設定部６０は、例えば図２のプログラム制御されたＣＰＵ１０１にて実現される仮想的なソフトウェアブロックである。ＣＰＵ１０１を制御するプログラムは、具体的には、例えばＪａｖａ（米国サンマイクロシステムズ社の商標）サーブレットとして記述され、磁気ディスクや光ディスク、半導体メモリ、その他の記憶媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供される。
【００３０】
このセッションタイムアウト設定部６０は、セッション管理部２０によりＨＴＴＰセッションが発生すると、アプリケーション実行部３０による処理の開始に先立って、サーバＷＳ１ａを呼び出す。そして、自身のＨＴＴＰセッションに対応する管理時間の登録値（サーバＷＳ２であれば管理時間Ｔ２、サーバＷＳ３であれば管理時間Ｔ３）を取得する。そして、取得した管理時間によって、セッション管理部２０におけるセッションタイムアウトの設定を行う。
【００３１】
ここで、セッションタイムアウト制御部４０において決定されるセッションタイムアウトにおける管理時間の値について説明する。
図６は、サーバＷＳ１に呼ばれるサーバＷＳ２、ＷＳ３の処理の実行手順及び各処理に要する時間を示す図である。
図６に示すように、サーバＷＳ１における処理の中で、サーバＷＳ２の処理→サーバＷＳ３の処理→サーバＷＳ２の処理→サーバＷＳ３の処理という順で実行される場合、各処理に要する時間がそれぞれＴａ、Ｔｂ、Ｔｃ、Ｔｄとする。この場合、サーバＷＳ３の処理実行中にサーバＷＳ２の処理でセッションタイムアウトが発生しないためには、サーバＷＳ２におけるセッションタイムアウトの設定値Ｔ２を、
Ｔ２≧Ｔａ＋Ｔｂ＋Ｔｃ＋Ｔｄ
とする。また、サーバＷＳ３の処理実行中にサーバＷＳ２の処理でセッションタイムアウトが発生しないためには、サーバＷＳ３におけるセッションタイムアウトの設定値Ｔ３を、
Ｔ３≧Ｔｂ＋Ｔｃ＋Ｔｄ
とする。なお、サーバＷＳ１の処理におけるセッションタイムアウトの設定値Ｔ１は、サーバＷＳ２、ＷＳ３の全ての処理を包含する必要から、
Ｔ１≧Ｔ２≧Ｔａ＋Ｔｂ＋Ｔｃ＋Ｔｄ
であることは言うまでもない。このように、セッションタイムアウトのための管理時間はウェブサービスを提供するサーバごとに、あるいはサービスごとに個別に設定することが可能である。なお、処理に要する時間Ｔａ、Ｔｂ、Ｔｃ、Ｔｄは、サーバやネットワークの環境、トラフィックの状態等に大きく影響を受けるので、同種のウェブサービスにおける実態を参酌したり、実際のウェブサービスの稼働状況をフィードバックしたりすることによって、決めることが好ましい。
【００３２】
以上のように、本実施の形態では、所定のサーバ（サーバＷＳ１）のＨＴＴＰセッションにおいて他の複数の関連サーバ（サーバＷＳ２、ＷＳ３）を呼び出す場合に、これら関連サーバにおけるＨＴＴＰセッションのセッションタイムアウトの設定値（管理時間）をリクエスタ側で指定する。これにより、当該関連サーバにおけるＨＴＴＰセッション中に、他の関連サーバにおけるＨＴＴＰセッションがセッションタイムアウトによって終了してしまうことを防ぐことができる。したがって、本実施の形態は、リクエスタ側で指定された管理時間が、関連サーバにおけるデフォルトのセッションタイムアウトの設定値よりも長くなる場合（すなわちデフォルトのセッションタイムアウトを延長することとなる場合）に特に有効である。また、関連サーバにおけるＨＴＴＰセッションが短時間で実行できる処理である場合に、当該関連サーバにおけるデフォルトのセッションタイムアウトの設定値よりも短い管理時間を指定することも可能である（すなわちデフォルトのセッションタイムアウトを延長することとなる）。
【００３３】
なお、図１では、簡単のため、クライアントＣ１からアクセスするコントロールポイントとなるサーバをサーバＷＳ１の１台、セッションタイムアウトの管理時間を登録するサーバをサーバＷＳ１ａの１台、サーバＷＳ１から呼ばれるサーバをサーバＷＳ２、ＷＳ３の２台としたが、図示の構成に限定されるものでないことは言うまでもない。提供されるウェブサービスによっては、サーバＷＳ１から呼ばれるサーバは３台以上としても良い。また、サーバＷＳ２、ＷＳ３からさらに別のサーバにて提供されるウェブサービスを呼ぶこともできる。この場合、サーバＷＳ２、ＷＳ３は、リプライアとしての図５に示した構成を備えるほか、リクエスタとして図３に示した構成をも備えることとなる。同様に、サーバＷＳ１のウェブサービスが他のサーバにおけるウェブサービスから呼ばれることも可能であり、この場合は、サーバＷＳ１が図５に示したリプライアとしての構成を兼備することとなる。
【００３４】
さらに、サーバＷＳ１ａは、サーバＷＳ１もしくは他のサーバをコントロールポイントとする、関連のあるウェブサービスの組を複数、管理することができる。この場合、各ウェブサービスの組は、ベクターテーブル５１に登録されたＩＤ情報にて識別される。すなわちサーバＷＳ１ａは、ベクターテーブル管理部５０により複数のベクターテーブル５１を管理することにより、対応するウェブサービスの組を管理する。また図１では、サーバＷＳ１ａを独立したサーバとして図示しているが、物理的には例えばサーバＷＳ１と同一のサーバマシンにて構築することも可能である。
【００３５】
次に、本実施の形態によるＨＴＴＰセッションコントロールの実装例について説明する。
上述したサーバＷＳ１、ＷＳ１ａ、ＷＳ２、ＷＳ３の各機能はＪａｖａのサーブレットとして実装されているものとする。
サーバＷＳ１ａのサーブレットは、上述したベクターテーブル管理部５０の機能を実現するサービスメソッド（ｓｅｔＧｌｏｂａｌＳｅｓｓｉｏｎＴｉｍｅ／ｇｅｔＧｌｏｂａｌＳｅｓｓｉｏｎＴｉｍｅ）を持つ。これにより、所定のＨＴＴＰセッションにおける管理時間の設定や、当該設定値を外部から参照することが可能となる。ｓｅｔＧｌｏｂａｌＳｅｓｓｉｏｎＴｉｍｅ（）メソッドは、サーバＷＳ１ａの内部テーブル（ベクターテーブル５１）に、呼び出された順番に管理時間を保持する。また、ｇｅｔＧｌｏｂａｌＳｅｓｓｉｏｎＴｉｍｅ（）メソッドは、呼び出された順番に、登録ＩＤを引数にして内部テーブル（ベクターテーブル５１）に保持されている値（管理時間の登録値）をリターンする。
【００３６】
サーバＷＳ１のサーブレットは、サーバＷＳ２、ＷＳ３のサービス内容に応じて、サーバＷＳ２の管理時間Ｔ２と、サーバＷＳ３の管理時間Ｔ３とを決定する。そして、サーバＷＳ１ａのｓｅｔＧｌｏｂａｌＳｅｓｓｉｏｎＴｉｍｅ（）メソッドを呼び出す。これにより、サーバＷＳ１ａの内部テーブル（ベクターテーブル５１）に、管理時間Ｔ２、Ｔ３が登録される。また、アプリケーション実行部３０の機能を実現するサーバＷＳ１のサービスメソッドは、関連サーバであるサーバＷＳ２、ＷＳ３のサービスメソッドを順次呼び出す。
【００３７】
サーバＷＳ２、ＷＳ３のサーブレット（ＲｐｃＲｏｕｔｅｒＳｅｒｖｌｅｔ）は、アドインされたＨＴＴＰセッションのリスナークラスを持つ。すなわち、サーバＷＳ１からサーバＷＳ２、ＷＳ３への最初の呼び出しの時に、セッション管理部２０の機能を実現するメソッドにより、ＨＴＴＰセッション（オブジェクト）が作成される。そしてこの時、ＨｔｔｐＳｅｓｓｉｏｎＬｉｓｔｅｎｅｒクラスを実装したリスナークラス（ｓｅｓｓｉｏｎＴｉｍｅＳｅｔＬｉｓｔｅｎｅｒ）内のメソッド（ｓｅｓｓｉｏｎＣｒｅａｔｅｄ（））がＨＴＴＰセッション作成時にただ一度だけ呼び出される。このｓｅｓｓｉｏｎＣｒｅａｔｅｄ（）メソッドを利用してサーバＷＳ１ａのｇｅｔＧｌｏｂａｌＳｅｓｓｉｏｎＴｉｍｅを呼び出す。サーバＷＳ１のセッションタイムアウト制御部４０にて指定された管理時間Ｔ２、Ｔ３が、対応するサーバＷＳ２、ＷＳ３にそれぞれ伝播され、各々のＨＴＴＰセッションにおけるセッションタイムアウトの設定値として設定される。なお、ＨＴＴＰセッションのリスナークラスをアドインで追加することにより、ウェブモジュールのディプロイメント・ディスクリプタ（Ｗｅｂ．Ｘｍｌ）に定義を追加するだけで機能を実現できるため、サーバＷＳ２、ＷＳ３における既存のウェブサービスのプログラム自体には何ら変更を加えることなく、セッションタイムアウトの設定を行うことが可能である。
【００３８】
次に、本実施の形態の動作について、さらに詳細に説明する。
サーバＷＳ１が旅行予約、サーバＷＳ２が飛行機予約、サーバＷＳ３がレンタカー予約のウェブサービスを提供している場合を考える。
図７は、サーバＷＳ１の動作を説明するフローチャート、図８は、サーバＷＳ１ａの動作を説明するフローチャート、図１０は、サーバＷＳ２、ＷＳ３の動作を説明するフローチャートである。
図７に示すように、まずエンドユーザのクライアントＣ１から旅行予約のリクエストを受信すると（ステップ７０１）、サーバＷＳ１において、まず当該エンドユーザの認証を行い、そのユーザＩＤをメインメモリ１０３等に保存する（ステップ７０２）。このリクエストには旅行予約に必要なパラメータ（飛行機予約に必要なパラメータおよびレンタカー予約に必要なパラメータを含む）が含まれている。
【００３９】
次に、サーバＷＳ１は、サーバＷＳ２の管理時間Ｔ２とユーザＩＤとを引数にしてサーバＷＳ１ａのｓｅｔＧｌｏｂａｌＳｅｓｓｉｏｎＴｉｍｅ（）メソッドを呼び出す（ステップ７０３）。これにより、サーバＷＳ１ａのベクターテーブル５１に管理時間Ｔ２が登録される。この時点で、ベクターテーブル５１のインデックスカウンタのカウンタ値は１となる。さらにサーバＷＳ１は、サーバＷＳ３の管理時間Ｔ３とユーザＩＤとを引数にしてサーバＷＳ１ａのｓｅｔＧｌｏｂａｌＳｅｓｓｉｏｎＴｉｍｅ（）メソッドを呼び出す（ステップ７０４、７０３）。これにより、サーバＷＳ１ａのベクターテーブル５１に管理時間Ｔ２が登録される。この時点で、ベクターテーブル５１のインデックスカウンタのカウンタ値は２となる。なお、ベクターテーブル５１のＩＤは、サーバＷＳ１が所持する。このＩＤは、エンドユーザのユーザＩＤと同じ値出も良い。
【００４０】
関連サーバであるサーバＷＳ２、ＷＳ３のＨＴＴＰセッションに関する管理時間をサーバＷＳ１ａに登録した後、サーバＷＳ１は、エンドユーザのユーザＩＤと飛行機予約のためのパラメータを引数にして、サーバＷＳ２の飛行機予約サービスを呼び出す。また、エンドユーザのユーザＩＤとレンタカー予約のためのパラメータを引数にして、サーバＷＳ３のレンタカー予約サービスを呼び出す（ステップ７０４、７０５）。
この後、サーバＷＳ１は、サーバＷＳ２、ＷＳ３から仮予約の情報を含むレスポンスを受け付けると、この仮予約の情報を表示出力等の手段でエンドユーザに提示する（ステップ７０６）。そして、エンドユーザから予約内容を肯定する入力を受け付けると、サーバＷＳ２、ＷＳ３に対して予約確定を通知し（ステップ７０７）、必要な後処理を行う（ステップ７０８）。
【００４１】
サーバＷＳ１ａは、図８に示すように、サーバＷＳ１からのリクエストを受け付け、管理時間Ｔ２、Ｔ３をベクターテーブル５１に登録し内部変数として保持する（ステップ８０１）。図９は、このときに作成されるベクターテーブル５１の構成を示す図である。図９に示すように、ベクターテーブル５１には、ユーザＩＤ「ＩＤ１」と、管理時間Ｔ２、Ｔ３が登録されている。また、管理時間Ｔ２、Ｔ３は、リクエストを受け付けた順に登録されている。
次に、サーバＷＳ１ａは、ユーザＩＤを引数にしたサーバＷＳ２からのリクエストを受け付け、ベクターテーブル５１の最初に登録されている管理時間Ｔ２をサーバＷＳ２へ返す（ステップ８０２）。このとき、ベクターテーブル５１のインデックスカウンタのカウンタ値は２から１に変わる。
さらに、ユーザＩＤを引数にしたサーバＷＳ３からのリクエストを受け付けると、サーバＷＳ１ａは、ベクターテーブル５１の２番目に登録されている管理時間Ｔ３をサーバＷＳ３へ返す（ステップ８０３）。このとき、ベクターテーブル５１のインデックスカウンタのカウンタ値は１から０に変わる。
【００４２】
サーバＷＳ２は、図１０に示すように、サーバＷＳ１からのリクエストを受け付けると、飛行機予約のためのＨＴＴＰセッションを作成する（ステップ１００１）。そして、ＨｔｔｐＳｅｓｓｉｏｎＬｉｓｔｅｎｅｒクラスを実装したリスナークラス（ｓｅｓｓｉｏｎＴｉｍｅＳｅｔＬｉｓｔｅｎｅｒ）内のｓｅｓｓｉｏｎＣｒｅａｔｅｄ（）メソッドを呼び出す（ステップ１００２）。
ｓｅｓｓｉｏｎＣｒｅａｔｅｄ（）メソッドは、ＨＴＴＰセッションが作成された時にただ一度呼び出されるメソッドであり、このメソッドを利用してサーバＷＳ２は、ベクターテーブル５１のＩＤを引数にしてサーバＷＳ１ａに対してｇｅｔＧｌｏｂａｌＳｅｓｓｉｏｎＴｉｍｅ（）メソッドの呼び出しを行い、管理時間Ｔ２を取得する（ステップ１００３）。この管理時間Ｔ２を、ＨＴＴＰセッションにおけるｓｅｔＭａｘＩｎａｃｔｉｖｅＩｎｔｅｒｖａｌ（）メソッドの引数として渡し、当該ＨＴＴＰセッションのセッションタイムアウトを設定する（ステップ１００４）。なお、サーバＷＳ１ａのＵＲＬは、サーバＷＳ２のウェブディプロイメント・ディスクリプタ（Ｃｏｎｔｅｘｔ−Ｐａｒａｍ）から取得するため、サーバＷＳ１ａのＵＲＬが変更になった場合でも、アドインされたクラスにおけるプログラムの変更は不要である。
この後、当該ＨＴＴＰセッションにおける処理を行い、飛行機予約における仮予約の情報を保存する（ステップ１００５）。そして、サーバＷＳ１から予約確定の通知を受け取ったならば、仮予約の内容で飛行機予約を確定する（ステップ１００６）。
【００４３】
同様に、サーバＷＳ３は、サーバＷＳ１からのリクエストを受け付けると、レンタカー予約のためのＨＴＴＰセッションを作成する（ステップ１００１）。そして、ＨｔｔｐＳｅｓｓｉｏｎＬｉｓｔｅｎｅｒクラスを実装したリスナークラス（ｓｅｓｓｉｏｎＴｉｍｅＳｅｔＬｉｓｔｅｎｅｒ）内のｓｅｓｓｉｏｎＣｒｅａｔｅｄ（）メソッドを呼び出す（ステップ１００２）。
ｓｅｓｓｉｏｎＣｒｅａｔｅｄ（）メソッドを利用して、サーバＷＳ３はベクターテーブル５１のＩＤを引数にしてサーバＷＳ１ａに対してｇｅｔＧｌｏｂａｌＳｅｓｓｉｏｎＴｉｍｅ（）メソッドの呼び出しを行い、管理時間Ｔ３を取得する（ステップ１００３）。この管理時間Ｔ３を、ＨＴＴＰセッションにおけるｓｅｔＭａｘＩｎａｃｔｉｖｅＩｎｔｅｒｖａｌ（）メソッドの引数として渡し、当該ＨＴＴＰセッションのセッションタイムアウトを設定する（ステップ１００４）。
この後、当該ＨＴＴＰセッションにおける処理を行い、レンタカー予約における仮予約の情報を保存する（ステップ１００５）。そして、サーバＷＳ１から予約確定の通知を受け取ったならば、仮予約の内容でレンタカー予約を確定する（ステップ１００６）。
【００４４】
以上のようにして、本実施の形態では、ウェブサービスを提供する所定のサーバをコントロールポイントとして、さらに他のサーバによるウェブサービスを呼び出し協働させて複合的なサービスを提供する場合に、コントロールポイントとして動作するサーバにおいて、これら他のサーバにおけるＨＴＴＰセッションのセッションタイムアウトの設定値を指定する。これにより、当該関連サーバにおけるＨＴＴＰセッション中に、他の関連サーバにおけるＨＴＴＰセッションがセッションタイムアウトによって終了してしまうことを防ぐことができるため、関連のあるウェブサービスを効果的に連携して提供することができる。
また、本実施の形態は、セッションタイムアウトの管理時間を管理するサーバＷＳ１ａを別個に設け、アドイン等の手段でセッションタイムアウトを設定するため、ウェブサービスを提供するサーバにおける既存のアプリケーションの実装に依存しない。したがって、導入が容易である。
【００４５】
【発明の効果】
以上説明したように、本発明によれば、関連のあるウェブサービスによる複合的なサービスの効果的な提供を実現することができる。
また本発明によれば、ウェブサービスを効果的に提供することにより、ウェブサービスの信頼性の向上を図ることができる。
【図面の簡単な説明】
【図１】本実施の形態のＨＴＴＰセッションコントロールが適用されるネットワークシステムの全体構成を示した図である。
【図２】図１に示した本実施の形態における各サーバ及びクライアントを実現するコンピュータ装置のハードウェア構成の例を模式的に示した図である。
【図３】本実施の形態によるサーバＷＳ１の機能構成を示す図である。
【図４】本実施の形態によるサーバＷＳ１ａの機能構成を示す図である。
【図５】本実施の形態におけるサーバＷＳ２、ＷＳ３の機能構成を示す図である。
【図６】本実施の形態において、サーバＷＳ１に呼ばれるサーバＷＳ２、ＷＳ３の処理の実行手順及び各処理に要する時間を示す図である。
【図７】本実施の形態におけるサーバＷＳ１の動作を説明するフローチャートである。
【図８】本実施の形態におけるサーバＷＳ１ａの動作を説明するフローチャートである。
【図９】本実施の形態で用いられるベクターテーブルの構成例を示す図である。
【図１０】本実施の形態におけるサーバＷＳ２、ＷＳ３の動作を説明するフローチャートである。
【図１１】従来のウェブサービスにおいて所定のサーバから他の複数のサーバを呼び出す様子を示す図である。
【符号の説明】
１０…通信制御部、２０…セッション管理部、３０…アプリケーション実行部、４０…セッションタイムアウト制御部、５０…ベクターテーブル管理部、５１…ベクターテーブル、６０…セッションタイムアウト設定部、１０１…ＣＰＵ、１０３…メインメモリ、１０５…ハードディスク、１０６…ネットワークインターフェイス
【図１】
2004310298.tif 000003
【図２】
2004310298.tif 000004
【図３】
2004310298.tif 000005
【図４】
2004310298.tif 000006
【図５】
2004310298.tif 000007
【図６】
2004310298.tif 000008
【図７】
2004310298.tif 000009
【図８】
2004310298.tif 000010
【図９】
2004310298.tif 000011
【図１０】
2004310298.tif 000012
【図１１】
2004310298.tif 000013