(57)【要約】【課題】  情報システムの理解に要する時間の短縮を図る。【解決手段】システムは、処理の実行リクエストを発行するクライアント部と、サーバ部を有する。サーバ部は、クライアントからのリクエストに応じて処理を実行するアプリケーション実行部と、実行情報の取得を制御する実行時情報取得制御部を有する。クライアント部は、実行情報の取得開始要求を受信すると、これを記憶する。そしてクライアント部は、実行情報の取得開始要求の受信後にアプリケーション実行部に対する実行要求を受信した場合に、記憶した実行要求と共に実行情報の取得要求を前記サーバ部に送信する。アプリケーション実行部は前記実行要求に基づいて処理を実行し、実行情報取得制御部はアプリケーション実行部が実行した処理の実行情報を記憶装置に格納する。  【選択図】図１
2012027627.tif 000002
【特許請求の範囲】
【請求項１】
計算機で実行される処理の実行情報を取得するシステムであって、
処理の実行リクエストを発行するクライアント部と、
当該クライアントからのリクエストに応じて処理を実行するアプリケーション実行部と、前記実行情報の取得を制御する実行情報取得制御部を有するサーバ部を有しており、
前記クライアント部は、実行情報の取得開始要求を受信すると、これを記憶し、
前記クライアント部は、前記実行情報の取得開始要求の受信後に前記アプリケーション実行部に対する実行要求を受信する度に、記憶した前記実行情報の取得開始要求に基づいて、当該実行要求と共に実行情報の取得要求を前記サーバ部に送信し、
前記アプリケーション実行部は前記実行要求に基づいて処理を実行し、
前記実行情報取得制御部は前記実行情報の取得要求に基づいて前記アプリケーション実行部が実行した処理の実行情報を記憶装置に格納することを特徴とするシステム。
【請求項２】
請求項１記載のシステムであって、
前記クライアント部は、実行情報の取得終了要求を受信すると、これを記憶し、
前記クライアント部は、前記実行情報の取得終了要求の受信後に前記アプリケーション実行部に対する実行要求を受信する度に、記憶した前記実行情報の取得終了要求に基づいて、当該実行要求と共に実行情報取得不要を示す情報を前記サーバ部に送信し、
前記アプリケーション実行部は、前記実行要求に基づいて処理を実行し、
前記実行情報取得制御部は前記実行情報取得不要を示す情報に基づいて、前記アプリケーション実行部が実行した処理の実行情報を記憶装置に格納しないよう制御することを特徴とするシステム。
【請求項３】
請求項１記載のシステムであって、
前記クライアント部は、前記実行情報の取得開始要求を受信すると、前記実行情報の取得開始要求を識別するＩＤを記憶し、
前記実行情報の取得開始要求の受信後に前記アプリケーション実行部に対する実行要求を受信する度に、当該実行要求と共に実行情報の取得要求および前記取得開始要求を識別するＩＤを前記サーバ部に送信することを特徴とするシステム。
【請求項４】
請求項１記載のシステムであって、
前記サーバ部は、各々異なる処理を実行する複数のアプリケーション実行部を有しており、
前記クライアント部は、前記複数のアプリケーション実行部各々について、実行情報の取得要否を指定するためのインタフェースを表示することを特徴とするシステム。
【請求項５】
請求項１記載のシステムであって、
前記サーバ部は、各々異なる処理を実行する複数のアプリケーション実行部を有しており、
前記クライアント部が受信する前記実行情報の取得開始要求には、アプリケーション実行部の識別情報が含まれており、
前記実行情報取得制御部は前記クライアント部から受信する前記実行情報の取得要求に含まれるアプリケーション実行部の識別情報に基づいて、当該識別情報が示すアプリケーション実行部の実行情報を前記記憶装置に格納することを特徴とするシステム。
【請求項６】
計算機システムで実行されるプログラムであって
処理の実行リクエストを発行するクライアント部と、
当該クライアントからのリクエストに応じて処理を実行するアプリケーション実行部と、前記実行情報の取得を制御する実行時情報取得制御部を有するサーバ部を有しており、
前記クライアント部は、
実行情報の取得開始要求を受信するステップと、
受信した前記実行情報の取得開始要求を記憶するステップと、
前記実行情報の取得開始要求の受信後に前記アプリケーション実行部に対する実行要求を受信した場合に、記憶した前記実行情報の取得開始要求に基づいて、当該実行要求と共に実行情報の取得要求を前記サーバ部に送信するステップとを実行し、
前記アプリケーション実行部は前記実行要求に基づいて処理を実行し、
前記実行情報取得制御部は前記実行情報の取得要求に基づいて前記アプリケーション実行部が実行した処理の実行情報を記憶装置に格納するステップを実行することを特徴とするプログラム。
【請求項７】
請求項６記載のプログラムであって、
前記クライアント部は更に、
実行情報の取得終了要求を受信するステップと、
前記実行情報の取得終了要求を記憶するステップと、
前記実行情報の取得終了要求の受信後に前記アプリケーション実行部に対する実行要求を受信した場合に、記憶した前記実行情報の取得終了要求に基づいて、当該実行要求と共に実行情報取得不要を示す情報を前記サーバ部に送信するステップとを実行し、
前記アプリケーション実行部は、前記実行要求に基づいて処理を実行し、
前記実行情報取得制御部は前記実行情報取得不要を示す情報に基づいて、前記アプリケーション実行部が前記計算機システムに実行させた処理の実行情報を前記記憶装置に格納しないよう制御することを特徴とするプログラム。
【請求項８】
請求項６記載のプログラムであって、
前記クライアント部は、
前記実行情報の取得開始要求を受信すると、前記実行情報の取得開始要求を識別するＩＤを記憶するステップと、
前記実行情報の取得開始要求の受信後に、前記アプリケーション実行部に対する実行要求を受信した場合に、当該実行要求と共に実行情報の取得要求および前記実行情報の取得要求を識別するＩＤを前記サーバ部に送信するステップとを実行することを特徴とするプログラム。
【請求項９】
請求項６記載のプログラムであって、
前記サーバ部は、各々異なる処理を実行する複数のアプリケーション実行部を有しており、
前記クライアント部は、前記複数のアプリケーション実行部各々について、実行情報の取得要否を指定するためのインタフェースを前記計算機システムに表示させることを特徴とするプログラム。
【請求項１０】
請求項６記載のプログラムであって、
前記サーバ部は、各々異なる処理を実行する複数のアプリケーション実行部を有しており、
前記実行情報の取得開始要求には、アプリケーション実行部の識別情報が含まれており、
前記実行情報取得制御部は前記クライアント部から受信する前記実行情報の取得要求に含まれるアプリケーション実行部の識別情報に基づいて、当該識別情報が示すアプリケーション実行部の実行情報を前記記憶装置に格納するステップを実行することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報システムの保守・改善業務において、保守・改善作業担当者を支援する技術に関する。
【背景技術】
【０００２】
情報システムの保守改善作業担当者は、ビジネス環境の変化に伴う情報システムの、保守・改善の効率化（回転率のアップやコストダウンなど）が求められている。しかし、情報システムのソースコードとドキュメント類(設計書や仕様書など)の間の乖離、度重なる情報システムの保守・改善によるソースコードの複雑化のために、障害の原因調査／機能追加のための現行の情報システムの把握に要する工数が増大する傾向にあり、保守・改善の効率化の実現が困難となっている。
【０００３】
プログラムの実行時の情報を元に、プログラムのロジック解析やデータベースアクセス解析する技術が考えられており、保守・改善作業担当者の作業を支援している（以下、データベースをＤＢと略記する）。例えば、Ｗｅｂアプリケーションの(1)画面操作情報、(2)プログラム実行環境の実行履歴情報、(3)ＤＢアクセス情報を、リクエスト単位で紐付けて、(1)〜(3)の履歴情報をひとまとまりのもとのとして表示する仕組みを実現し、情報システムを保守・改善する担当者の理解促進を支援している。ここで、リクエストとは、クライアントＰＣからサーバへの仕事の依頼を示す１アクセスのことである。また、特許文献１は、Ｗｅｂアプリケーションの画面入力操作履歴の記録量の低減のために、予めソースコードに（例えば、コメントとして）記述された情報をサーバ側で読み取り、取得対象候補の入力操作の取得の有無をカスタマイズできる機能を実現している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２５９７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
複数のユーザがクライアントＰＣを用いて同時にサーバにアクセスし、同じプログラムを利用するなどの特徴を持つＷｅｂアプリケーション・システムにおいて、ユーザ単位で、もしくはリクエスト単位でサーバ内の実行時の情報を取得する方法がない。特許文献１においては、サーバ内の実行時の情報を常時取得することによるＷｅｂアプリケーションの性能劣化、記憶容量などの圧迫が考えられるため、上記方法の必要性がある。
【０００６】
また、ソースコードに手を加えることなく実行時の情報を選択的に取得する方法がない。特許文献２にあるように、ソースコードに追記された情報を元にサーバ側で実行時に取得する情報を選択する手段が考えられているが、実行時に取得する入力操作対象の候補を追加するなどソースコードに追記された情報を修正する場合には、その都度ソースコードのコンパイル、Ｗｅｂアプリケーションの再配置が必要となる。
【課題を解決するための手段】
【０００７】
システムは、処理の実行リクエストを発行するクライアント部と、サーバ部を有する。サーバ部は、クライアントからのリクエストに応じて処理を実行するアプリケーション実行部と、実行情報の取得を制御する実行時情報取得制御部を有する。クライアント部は、実行情報の取得開始要求を受信すると、これを記憶する。そしてクライアント部は、実行情報の取得開始要求の受信後にアプリケーション実行部に対する実行要求を受信した場合に、記憶した実行要求と共に実行情報の取得要求を前記サーバ部に送信する。アプリケーション実行部は前記実行要求に基づいて処理を実行し、実行情報取得制御部はアプリケーション実行部が実行した処理の実行情報を記憶装置に格納する。
【発明の効果】
【０００８】
情報システムの保守・改善業務において、Ｗｅｂアプリケーションの実行時情報をユーザ毎に取得したり、実行時情報の取得開始と終了をユーザ自身で決定したりできる。このため、取得した実行時情報から関係する情報とそうでない情報（例えば、関心のない実行時情報や他ユーザによる実行時情報）に切り分けるといった作業を削減することができ、障害時の原因調査や現行の情報システムの理解へのリードタイム短縮できる。また、実行時情報の取得による、Ｗｅｂアプリケーションの性能劣化や記憶容量の圧迫を低減できる。また、実行時情報の選択的に取得するための情報を予めソースコードに入れておく必要がない。
【図面の簡単な説明】
【０００９】
【図１】保守改善業務支援環境のシステム構成の一例である。
【図２】サーバのハードウェア構成の一例である。
【図３】実行時情報を取得する処理フローの一例を示すシーケンス図である。
【図４】実行時情報取得有無情報設定ページ（Ｐ００１）と業務ページ（Ｐ００２）の例を示す図である。
【図５】実行時情報取得有無情報（Ｃ００１）の例を示す図である。
【図６】実行時情報取得対象リスト（１７１）の例を示す図である。
【図７】実行時情報の取得のための、サーバのメモリ構成の一例を示す図である。
【図８】サーバにおける実行時情報取得処理フローの一例を示す図である。
【図９】実行時情報ＤＢ（１６１）に格納される、実行時情報の例を示す図である。
【図１０】実行時情報ＤＢ（１６１）に格納される、実行時情報の他の例を示す図である。
【図１１】実行時情報ＤＢ（１６１）に格納される、実行時情報の他の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、実施形態の一例を図面とあわせて詳細に説明する。
【００１１】
図１は、システムの構成の一例である。
【００１２】
システムは、複数のクライアントＰＣ（１０１、１０２）およびサーバ（１２０）が、ネットワーク（１１１）を介して連携するクライアント／サーバ構成を採る。尚、同一の計算機上に複数のクライアントおよびサーバに相当する機能をソフトウェアによって配置してもよい。
【００１３】
システムでは、Ｗｅｂアプリケーションの実行時の情報の取得に関して、Ｗｅｂアプリケーションのユーザ毎に、またはリクエスト毎に、実行時情報の取得を制御する。
【００１４】
サーバ（１２０）は、Ｗｅｂアプリケーション（１３０）、ミドルウェア（１４０）、プログラム実行基盤（１５０）を持つ。これらＷｅｂアプリケーション（１３０）、ミドルウェア（１４０）、プログラム実行基盤（１５０）の実体は、後述するサーバ（１２０）が有するソフトウェアであり、サーバ（１２０）のCPU（２０１）が外部記憶装置（２０４）に格納されているソフトウェアを主記憶装置（２０２）に読み込んで実行することによって、実現される。
【００１５】
Ｗｅｂアプリケーション（１３０）は、サーバ（１２０）に配置されたアプリケーション群を指す。Ｗｅｂアプリケーション（１３０）には少なくとも１つのアプリケーションが配置されているものとする。本実施例では、実行時情報取得有無情報設定アプリケーション（１３１）と複数の業務アプリケーション（１３２、１３３）が配置されている。
【００１６】
実行時情報取得有無情報設定アプリケーション（１３１）は、クライアントＰＣがサーバに送信するリクエストに付与されている実行時情報取得有無情報の読み込み／書き込みをする機能を持つ。
【００１７】
ミドルウェア（１４０）は、実行時情報取得制御装置（１４１）と実行時情報取得装置（１４２）を持つ。実行時情報取得制御装置（１４１）と実行時情報取得装置（１４２）の実体もミドルウエア（１４０）上に配置されたソフトウエアである。
【００１８】
実行時情報取得制御装置（１４１）は、クライアントＰＣよりネットワークを介して送信されるリクエストに付与される実行時情報取得有無情報を参照し、内容の確認を実施し、実行時情報取得装置（１４２）に対して、実行時情報の取得の開始／終了を指示する機能を備える。
【００１９】
実行時情報取得装置（１４２）は、サーバ（１２０）に配置されているＷｅｂアプリケーション（１３０）の実行時の情報（ログ情報）を取得する。本実施例では、実行時情報取得装置（１４２）は、Ｗｅｂコンテナ実行時情報取得装置（１４３）、プログラム実行時情報取得装置（１４４）とＤＢアクセス実行時情報取得装置（１４５）を持つが、これに限らないものとする。
【００２０】
Ｗｅｂコンテナ実行時情報取得装置（１４３）は、クライアントＰＣ（１０１、１０２）がサーバ（１２０）に対して送信したリクエストが保有する情報を取得する。例えば、リクエストを送信した（クライアントＰＣ上の）ページのＵＲＬなどが挙げられる。
【００２１】
プログラム実行時情報取得装置（１４４）は、Ｗｅｂアプリケーション（１３０）が、プログラム実行基盤（１５０）上で実行される際の情報を取得する。例えば、プログラム実行基盤（１５０）がＪａｖａ(登録商標) ＶＭの場合には、Ｃｌａｓｓファイルをインスタンス化した（メモリ上の）オブジェクト間の呼出し関係(呼出し元オブジェクトのパッケージ名、クラス名、メソッド名など、と呼出し先オブジェクトのパッケージ名、クラス名、メソッド名など)の情報などを取得することができる。
【００２２】
ＤＢアクセス実行時情報取得装置（１４５）は、Ｗｅｂアプリケーション（１３０）が、ＳＱＬなどを利用して、業務用ＤＢ（１６２）へのデータの参照・格納をする際の情報を取得する。例えば、業務用ＤＢ（１６２）に対して発行したＳＱＬ文、業務ＤＢ（１６２）のテーブルを参照し取得したデータの値などを取得することができる。
【００２３】
プログラム実行基盤（１５０）は、Ｗｅｂアプリケーション（１３０）を実行するためにメモリ上にオブジェクトを展開する際に、実行時情報を取得するための機械語を挿入する機能を備える。例えば、プログラム実行基盤（１５０）がＪａｖａ(登録商標)ＶＭの場合には、java.lang.instrumentパッケージが知られており、Ｃｌａｓｓファイルをインスタンス化しメモリ上にオブジェクトを配置する際にバイトコードを埋め込む機能を提供している。
【００２４】
実行時情報ＤＢ（１６１）は、実行時情報取得装置（１４２）において取得した実行時情報を格納するＤＢである。実行時情報DB(１６１)は後述するサーバ（１２０）の外部記憶装置（２４０）に実装されていてもよいし、サーバ（１２０）に接続される他の記憶装置に実装されていてもよい。実行時情報の格納先は、ＤＢの他にファイルなどでもよい。
【００２５】
業務用ＤＢ（１６２）は、業務アプリケーション（１３２、１３３）が参照する業務データを格納、管理しているＤＢである。業務用DB(１６２)は後述するサーバ（１２０）の外部記憶装置（２４０）に実装されていてもよいし、サーバ（１２０）に接続される他の記憶装置に実装されていてもよい。
【００２６】
実行時情報取得対象リスト（１７１）は、実行時情報の取得対象とするプログラム名の一覧を記録したリストである。本実施例では、実行時情報取得対象リスト（１７１）はファイルに格納されているものとしているが、ＤＢなどに格納する方法もある。実行時情報取得対象リスト（１７１）も後述するサーバ（１２０）の外部記憶装置（２４０）に実装されていてもよいし、サーバ（１２０）に接続される他の記憶装置に実装されていてもよい。
【００２７】
以下、構成要素それぞれについて詳細を説明する。
【００２８】
図２は、サーバ（１２０）のハードウェア構成の一例である。
【００２９】
サーバはＣＰＵ（２０１）、主記憶装置（２０２）、ネットワーク接続装置（２０３）、外部記憶装置（２０４）、ディスプレイ（２０５）、データ入力装置（２０６）、ネットワーク（２０７）などを持つ。尚、クライアントPC（１０１、１０２）もサーバ（１２０）と同様のハードウェア構成を有している。
【００３０】
図３は、実行時情報の取得のフローの一例を示すシーケンス図である。
【００３１】
また、図４は、実行時情報取得有無情報設定ページ（Ｐ００１）と業務ページ（Ｐ００２）を表示したクライアントＰＣ（１０１）の画面例（４００）である。
【００３２】
図３が示すフローでは、「ユーザ」がクライアントＰＣ（１０１）を利用して、サーバ（１２０）と通信する場合のみを取り上げているが、他の「ユーザ」が、同時にクライアントＰＣ（１０１）以外のクライアントＰＣを利用してサーバ（１２０）と通信する場合にも同様のフローに従う。
【００３３】
「ユーザ」からの入力（URLの入力等）に従ってクライアントＰＣは、実行時情報取得有無情報設定アプリケーション（１３１）がクライアントＰＣに提供する実行時情報取得有無情報設定ページ（Ｐ００１）を、クライアントＰＣ（１０１）上への表示するようサーバへ指示する（Ｓ３０１）。
【００３４】
サーバ（１２０）は、クライアントPC（１０１）からのリクエストに対して、リクエストに含まれる実行時情報取得有無情報（Ｃ００１）を参照して実行情報を取得する必要がないことを確認するとともに、レスポンスとして実行時情報取得有無情報設定ページ（Ｐ００１）を表示するための情報をクライアントPC(１０１)に返す（Ｓ３０２）。
【００３５】
実行時情報取得有無情報（Ｃ００１）に関しては後述するが、S302、S304、S307では、ユーザから実行時情報の取得が指示されていないため、実行時情報取得有無情報（C001）に含まれる情報取得の要否を表すkey「isOnRecordingOperation」の値は「false」になっている。従って、サーバ（１２０）は実行時情報の取得処理は行わない。  次に、「ユーザ」からの入力に従ってクライアントPC（１０１）は、実行時情報を取得したい業務アプリケーションの業務ページ（Ｐ００２）をクライアントＰＣ（１０１）への表示するようサーバへ指示する（Ｓ３０３）。
【００３６】
サーバ（１２０）は、クライアントPC（１０１）からのリクエストに対して、リクエストに含まれる実行時情報取得有無情報（Ｃ００１）を参照して実行情報を取得する必要がないことを確認するとともに、レスポンスとして業務ページ（Ｐ００２）を表示するための情報をクライアントPC(１０１)に返す（Ｓ３０４）。
【００３７】
次に、「ユーザ」は、クライアントPC（１０１）に表示された業務ページ（Ｐ００２）を用いて、業務を進める（Ｓ３０５）。例えば、図４の業務ページ（Ｐ００２）の例を用いると、入力フォーム（４１１）に「商品ＩＤ」の値を入力し、「Ｓｅａｒｃｈ」ボタン（４１２）を押下する。
【００３８】
クライアントPC（１０１）は業務ページ（Ｐ００２）上に「ユーザ」が入力したフォームのデータなどをサーバ（１２０）に対して送信する（Ｓ３０６）。
【００３９】
サーバ（１２０）は、受信したリクエストに対して、当該リクエストに含まれる実行時情報取得有無情報（Ｃ００１）を参照して実行情報を取得する必要がないことを確認するとともに、リクエストに従って業務処理を実行し、レスポンスとして業務ページ（Ｐ００２）上に表示される情報を返す（Ｓ３０７）。
【００４０】
このように、（Ｓ３０５）、（Ｓ３０６）、（Ｓ３０７）の処理を繰り返すことで、業務処理が実行される。
【００４１】
「ユーザ」は実行時情報を取得したい場合、実行時情報取得有無情報設定ページ（Ｐ００１）を用いて、実行時情報の取得開始を指示することができる（Ｓ３０８）。ここで、図４の実行時情報取得有無情報設定ページ（Ｐ００１）の例を用いると、ユーザはチェックボックスなどの操作インターフェース（４０１、４０２、４０３）で取得したい実行時情報の種類を選択し、その上で「Ｓｔａｒｔ」ボタンなどの操作インターフェース（４０４）を押下して、実行時情報の取得開始を指示することができる。
【００４２】
ユーザからの指示を受けてクライアントPC（１０１）は、実行時情報取得有無情報（Ｃ００１）を設定する（Ｓ３０９）。図５は実行時情報取得有無情報（C001）の一例である。例えば、図４の実行時情報取得有無情報設定ページ（Ｐ００１）を用いてユーザが指示を行った場合、ユーザが「Ｓｔａｒｔ」ボタン（４０４）を押下すること、ユーザからの指示を受けたクライアントPC（１０１）は実行時情報取得可否情報（５０１）のｋｅｙ「isOnRecordingOperation」の値を「true」に設定して、実行時の情報の取得開始をサーバに指示することができる。また、クライアントＰＣ（１０１）は、ユーザが「Ｓｔａｒｔ」ボタン（４０４）を押下した時刻を取得し、実行時情報ＩＤ（５０５）のｋｅｙ「RecordingID」の値に設定する。また、ユーザがチェックボックス（４０１、４０２、４０３）にそれぞれチェックを入れると、クライアントPC（１０１）はＷｅｂコンテナ実行時情報取得可否情報（５０２）のｋｅｙ「isRecordedWebContainerOperation」の値、プログラム実行時情報取得可否情報（５０３）のｋｅｙ「isRecordedProgramOperation」の値、ＤＢアクセス実行時情報取得可否情報（５０４）のｋｅｙ「isRecordedDBAccessInfo」の値をそれぞれ「true」に設定することができ、サーバに対して取得したい実行時情報の種類を指定することができる。また、ユーザがチェックボックスからチェックを外と、クライアントPC（１０１）はｋｅｙの値を「false」に設定することができ、サーバに対して「false」に設定された実行時情報を取得対象から外すよう指定することができる。
【００４３】
次に、「ユーザ」は、クライアントPC（１０１）に表示された業務ページ（Ｐ００２）上のボタンなどの操作インターフェースを押下するなどして業務を進める（Ｓ３１０）。
【００４４】
ユーザが業務ページ（Ｐ００２）上のフォーム等に入力したデータは、リクエストの情報としてクライアントPC（１０１）からサーバ（１２０）へ送信される（Ｓ３１１）。このとき、リクエストには、先に（Ｓ３０９）において設定された実行時情報取得有無情報（Ｃ００１）も付与されている。
【００４５】
サーバ（１２０）は、受信したリクエストに含まれる実行時情報取得有無情報（Ｃ００１）を確認するとともに、レスポンスとして業務ページ（Ｐ００２）上に表示される情報を返信する（Ｓ３１２）。ここで、リクエストの実行時情報取得有無情報（Ｃ００１）には実行時情報の取得を開始する情報が載せられているため、サーバ（１２０）は、実行時情報を取得し、実行時情報ＤＢ（１６１）に格納する。
【００４６】
ここで、（Ｓ３１０）、（Ｓ３１１）、（Ｓ３１２）の処理を繰り返すことで、業務処理が実行される。
【００４７】
次に、「ユーザ」は、実行時情報取得有無情報設定ページ（Ｐ００１）を用いて、実行時情報取得の終了を指示する（Ｓ３１３）。例えば、図４の実行時情報取得有無情報設定ページ（Ｐ００１）において「ユーザ」が「Ｆｉｎｉｓｈ」ボタン（４０５）を押下する。これを受けてクライアントPC（１０１）は実行時情報取得可否情報（５０１）のｋｅｙ「isOnRecordingOperation」の値を「false」に設定するする（Ｓ３１４）。次回以降クライアントＰＣ（１０１）からサーバへ発行されるリクエストには、ｋｅｙ「isOnRecordingOperation」の値が「false」に設定された実行時情報取得有無情報（C001）が添付されるので、サーバはS302,S304,S307の時と同様実行時情報の取得は行わない
このように、「ユーザ」は、実行時情報の取得の開始の操作（Ｓ３０８）から実行時情報の取得の終了の操作（Ｓ３１３）の一連の操作を繰り返すことで、所定の処理のみ実行時情報の取得を行いながら業務処理を遂行することができる。
【００４８】
次に、「ユーザ」は、業務ページ（Ｐ００２）を閉じる（Ｓ３１５）。例えば、図４の業務ページ（Ｐ００２）の例を用いると、ボタンなどの操作インターフェース（４１３）を押下すると、クライアントPC（１０１）は業務ページ（Ｐ００２）を閉じる。
【００４９】
次に、「ユーザ」は、実行時情報取得有無情報設定ページ（Ｐ００１）を閉じる（Ｓ３１６）。例えば、図４の業務ページ（Ｐ００２）の例を用いると、ボタンなどの操作インターフェース（４０６）をユーザが押下すると、クライアントPC(101)は実行時情報取得有無情報設定ページ（Ｐ００１）を閉じる。
【００５０】
図５は、処理（Ｓ３０９、Ｓ３１４）において、実行時情報取得有無情報設定ページ（Ｐ００１）に入力されたユーザからの指示に基づいて、クライアントPC（１０１）が設定する実行時情報取得有無情報（Ｃ００１）の例であり、本実施例では、実行時情報取得可否情報（５０１）、Ｗｅｂコンテナ実行時情報取得可否情報（５０２）、プログラム実行時情報取得可否情報（５０３）、ＤＢアクセス実行時情報取得可否情報（５０４）、実行時情報ＩＤ（５０５）の項目で構成されるものとする。
【００５１】
実行時情報取得可否情報（５０１）は、ｋｅｙ−ｖａｌｕｅ形式で表され、ｋｅｙ「isOnRecordingOperation」に対する値が「true」の場合には、実行時情報の取得開始を示す。一方で、値が「false」の場合には、実行時情報の取得終了を示す。
【００５２】
Ｗｅｂコンテナ実行時情報取得可否情報（５０２）は、ｋｅｙ−ｖａｌｕｅ形式で表され、ｋｅｙ「isRecordedWebContainerOperation」に対する値が「true」の場合には、Ｗｅｂコンテナ実行時情報取得装置（１４３）はＷｅｂコンテナにおける実行時情報を取得する。一方、値が「false」の場合には、実行時情報の取得終了を示す。
【００５３】
プログラム実行時情報取得可否情報（５０３）は、ｋｅｙ−ｖａｌｕｅ形式で表され、ｋｅｙ「isRecordedProgramOperation」に対する値が「true」の場合には、プログラム実行時情報取得装置（１４４）は、プログラムの実行時情報を取得する。一方、値が「false」の場合には、プログラムの実行時情報の取得終了を示す。
【００５４】
ＤＢアクセス実行時情報取得可否情報（５０４）は、ｋｅｙ−ｖａｌｕｅ形式で表され、ｋｅｙ「isRecordedDBAccessInfo」に対する値が「true」の場合には、ＤＢアクセス実行時情報取得装置（１４５）は、ＤＢアクセスの実行時情報を取得する。一方で、値が「false」の場合には、ＤＢアクセスの実行時情報の取得終了を示す。
【００５５】
実行時情報ＩＤ（５０５）は、「ユーザ」単位で取得する実行時情報を特定する項目であり、ｋｅｙ−ｖａｌｕｅ形式で表される。本実施例では、実行時情報取得有無情報設定ページ（Ｐ００１）によって実行時情報の取得開始を指示した時刻を、ｋｅｙ「RecordingID」に対する値としている。
【００５６】
このように実行時情報取得有無情報設定ページ（Ｐ００１）などのブラウザに表示されたページから、リクエストに何らかの情報を付与する具体的な手段として、Ｃｏｏｋｉｅへの書き込みなどが挙げられる。すなわち、クライアントPCは、ユーザが実行時情報取得有無情報設定ページ（Ｐ００１）を用いて実行時情報の取得開始／終了を指示した場合に、当該指示に基づいて作成された実行時情報取得有無情報（Ｃ００１）をメモリ内に保持しておく。このときユーザが、業務ページ（P００２）を用いてリクエストを発行するたびに、これを受信したクライアントPCは、メモリ内に格納された実行時情報取得有無情報（Ｃ００１）をリクエストに付与してサーバ１２０へ送信する。
【００５７】
図６は、プログラム実行基盤（１５０）が実行時情報を取得するための機械語を挿入する際に参照する実行時取得対象リスト（１７１）の例である。
【００５８】
実行時取得対象リスト（１７１）は、実行時情報を取得するプログラムのファイル名などを保管したファイルである。本実施例では、Ｊａｖａ(登録商標)言語で記述されたプログラムのクラス名（６０１）で指定している。また、アスタリスク「＊」などの記号を用いることで、パッケージ以下のクラスのすべてを指定することも可能である。
【００５９】
以下、実行時情報の取得のフローを示すシーケンス図（図３）の、サーバ側の動作を説明する。
【００６０】
図７は、クライアントPCからサーバが要求された処理（３０２、３０４、３０７、３１２）において、クライアントＰＣから送信された1つのリクエストと紐付いたスレッドの、サーバ（１２０）内のメモリ（主記憶装置２０２）を表している。本実施例では、メモリ（２０２）は、Ｗｅｂアプリケーション用メモリ領域（７１０）、実行時情報取得制御装置用メモリ領域（７２０）、Ｗｅｂコンテナ実行時情報取得装置用メモリ領域（７３０）、プログラム実行時情報取得装置用メモリ領域（７４０）、ＤＢアクセス実行時情報取得装置用メモリ領域（７５０）、スレッド内変数領域用メモリ領域（７６０）から構成されるものとする。
【００６１】
Ｗｅｂアプリケーション用メモリ領域（７１０）は、Ｗｅｂアプリケーション（１３０）が利用するメモリ領域である。本実施例では、Ｊａｖａ(登録商標)言語で記述されたＷｅｂアプリケーションを想定し、Ｃｌａｓｓファイルからインスタンス化されたオブジェクト（７１１、７１２、７１３）が配置されるものとする。特に、オブジェクト（７１２）は、実行時情報取得対象リスト（１７１）に載っているＣｌａｓｓファイルからインスタンス化されており、プログラム実行基盤（１５０）によって、実行時情報取得のための機械語が挿入されている。
【００６２】
実行時情報取得制御装置用メモリ領域（７２０）は、実行時情報取得制御装置（１４１）が利用するメモリ領域である。
【００６３】
Ｗｅｂコンテナ実行時情報取得装置用メモリ領域（７３０）は、Ｗｅｂコンテナ実行時情報取得装置（１４３）が利用するメモリ領域である。
【００６４】
プログラム実行時情報取得装置用メモリ領域（７４０）は、プログラム実行時情報取得装置（１４４）が利用するメモリ領域である。
【００６５】
ＤＢアクセス実行時情報取得装置用メモリ領域（７５０）は、ＤＢアクセス実行時情報取得装置（１４５）が利用するメモリ領域である。
【００６６】
スレッド内変数領域用メモリ領域（７６０）は、スレッド単位に設けられる変数領域である。例えば、Ｊａｖａ(登録商標)言語の場合には、Ｔｈｒｅａｄ Ｌｏｃａｌ変数領域として提供されている。本実施例では、オブジェクト（７６１）が配置されているものとする。
【００６７】
図８は、実行時情報取得有無情報（Ｃ００１）が付与されたリクエストをサーバ（１２０）が受信した際、サーバ（１２０）が実行する処理のフローをシーケンス図として示した図である。この処理フローを通じて、サーバ（１２０）は、リクエストに付与された実行時情報取得有無情報（Ｃ００１）の内容に応じて、実行時情報を取得し実行時情報ＤＢ（１６１）に格納する。
【００６８】
本フローは、ネットワーク（１１１）を介してクライアントＰＣ（１０１）から送信されたリクエストをサーバ（１２０）が受信することで開始される。
【００６９】
実行時情報取得制御装置（１４１）は、リクエストに付与された実行時情報取得有無情報（Ｃ００１）の内容に応じて、Ｗｅｂコンテナ実行時情報取得装置（１４３）に対して、実行時情報の取得開始／終了の指示のメッセージとともに実行時情報ＩＤ（５０５）の値を送信する（Ｓ７０１）。本実施例では、図５の実行時情報取得有無情報（Ｃ００１）の例を用いると、実行時情報取得可否情報（５０１）のｋｅｙ「isOnRecordingOperation」に対する値が「true」かつＷｅｂコンテナ実行時情報取得可否情報（５０２）のｋｅｙ「isRecordedWebContainerOperation」に対する値が「true」の場合、実行時情報の取得開始のメッセージが送信される。一方で、実行時情報取得可否情報（５０１）のｋｅｙ「isOnRecordingOperation」に対する値が「false」またはＷｅｂコンテナ実行時情報取得可否情報（５０２）のｋｅｙ「isRecordedWebContainerOperation」に対する値が「false」の場合には、実行時情報の取得終了のメッセージが送信される。
【００７０】
次に、Ｗｅｂコンテナ実行時情報取得装置（１４３）は、実行時情報取得制御装置（１４１）から受信したメッセージに応じて、実行時情報を取得し、実行時ＩＤ（５０５）の値とともに実行時情報ＤＢ（１６１）へ格納する（Ｓ７０２）。
【００７１】
次に、実行時情報取得制御装置（１４１）は、リクエストに付与された実行時情報取得有無情報（Ｃ００１）の内容に応じて、ＤＢアクセスの実行時情報の取得開始／終了の指示のメッセージおよび実行時情報ＩＤ（５０５）の値を、スレッド内変数領域用メモリ領域（７６０）内のオブジェクト（７６１）に送信する（Ｓ７０３）。本実施例では、図５の実行時情報取得有無情報（Ｃ００１）の例を用いると、実行時情報取得可否情報（５０１）のｋｅｙ「isOnRecordingOperation」に対する値が「true」かつＤＢアクセス実行時情報取得可否情報（５０４）のｋｅｙ「isRecordedDBAccessInfo」に対する値が「true」の場合には、ＤＢアクセスの実行時情報の取得開始のメッセージが送信される。一方で、実行時情報取得可否情報（５０１）のｋｅｙ「isOnRecordingOperation」に対する値が「false」またはＤＢアクセス実行時情報取得可否情報（５０４）のｋｅｙ「isRecordedDBAccessInfo」に対する値が「false」の場合には、ＤＢアクセスの実行時情報の取得終了のメッセージが送信される。
【００７２】
次に、スレッド内部変数領域（７６０）内のオブジェクト（７６１）は、実行時情報取得制御装置（１４１）から受信したメッセージに応じて、実行時情報ＩＤ（５０５）の値を記憶するとともにＤＢアクセスの実行時情報の取得開始／終了のフラグを立てる（Ｓ７０４）。
【００７３】
次に、実行時情報取得制御装置（１４１）は、クライアントPCから受信したリクエストに付与された実行時情報取得有無情報（Ｃ００１）の内容に応じて、プログラム実行時情報取得装置（１４４）に対して、実行時情報の取得開始／終了の指示のメッセージとともに実行時情報ＩＤ（５０５）の値を送信する（Ｓ７０５）。本実施例では、図５の実行時情報取得有無情報（Ｃ００１）の例を用いると、実行時情報取得可否情報（５０１）のｋｅｙ「isOnRecordingOperation」に対する値が「true」かつプログラム実行時情報取得可否情報（５０３）のｋｅｙ「isRecordedProgramOperation」に対する値が「true」の場合には、プログラムの実行時情報の取得開始のメッセージが送信される。一方で、実行時情報取得可否情報（５０１）のｋｅｙ「isOnRecordingOperation」に対する値が「false」またはプログラム実行時情報取得可否情報（５０３）のｋｅｙ「isRecordedProgramOperation」に対する値が「false」の場合には、プログラムの実行時情報の取得終了のメッセージが送信される。
【００７４】
次に、プログラム実行時情報取得装置（１４４）は、実行時情報取得制御装置（１４１）からのメッセージに応じて、プログラムの実行時情報取得開始／終了のフラグをプログラム実行時情報取得装置用メモリ領域（７４０）に内部的に立てるとともに実行時情報ＩＤ（５０５）の値を記憶する（Ｓ７０６）。
【００７５】
次に、実行時情報取得制御装置（１４１）は、サーバが受信したリクエストに応じたＷｅｂアプリケーションを呼び出す（Ｓ７０７）。本実施例では、Ｗｅｂアプリケーション用メモリ領域（７１０）内のオブジェクト（７１１）を呼び出している。
【００７６】
次に、Ｗｅｂアプリケーション用メモリ領域（７１０）内のオブジェクト（７１１）は、オブジェクト（７１２）を呼び出す（Ｓ７０８）。
【００７７】
次に、Ｗｅｂアプリケーション用メモリ領域（７１０）内のオブジェクト（７１２）は、オブジェクト（７１３）を呼び出す（Ｓ７０９）。
【００７８】
次に、Ｗｅｂアプリケーション用メモリ領域（７１０）内のオブジェクト（７１２）は、埋め込まれた機械語に従って、プログラム実行時情報取得装置（１４４）に対して、実行時情報の取得依頼のメッセージを送信する（Ｓ７１０）。
【００７９】
次に、プログラム実行時情報取得装置（１４４）は、実行時情報の取得依頼のメッセージを受信すると、内部的に立てた実行時情報取得の開始／終了のフラグを参照する（Ｓ７１１）。
【００８０】
そしてプログラム実行時情報取得装置（１４４）は、参照した実行時情報取得の開始／終了のフラグが、実行時情報取得の開始を指している場合に、（Ｓ７０９）における実行時情報を取得して、記憶している実行時情報ＩＤ（５０５）とともに実行時情報ＤＢ（１６１）に格納する（Ｓ７１２）。
【００８１】
次に、Ｗｅｂアプリケーション用メモリ領域（７１０）内のオブジェクト（７１３）は、ＤＢアクセス実行時情報取得装置（１４５）に対して、業務ＤＢ（１６２）へのアクセスおよび業務データの参照などの操作を依頼するメッセージを送信する（Ｓ７１３）。
ＤＢアクセス実行時情報取得装置（１４５）は、業務ＤＢ（１６２）へアクセスし、業務データの操作を実行する（Ｓ７１４）。
【００８２】
そしてＤＢアクセス実行時情報取得装置用メモリ領域（１４５）は、スレッド内変数領域用メモリ領域（７６０）内のオブジェクト（７６１）を参照して、ＤＢアクセスの実行時情報の取得開始／終了のフラグを参照する（Ｓ７１５）。
ＤＢアクセス実行時情報取得装置用メモリ領域（１４５）は、参照したＤＢアクセスの実行時情報の取得開始／終了のフラグがＤＢアクセスの実行時情報取得開始である場合には、（Ｓ７１４）におけるＤＢアクセスの実行時情報を取得し、記憶している実行時情報ＩＤ（５０５）とともに実行時情報ＤＢ（１６１）へ格納する（S７１６）。
【００８３】
図９は、Ｗｅｂコンテナ実行時情報取得装置（１４３）における処理（Ｓ７０２）を通じて、実行時情報ＤＢ（１６１）に格納される、Ｗｅｂコンテナにおいて取得する実行時情報の例（９００）である。本実施例では、「実行時情報ＩＤ」、「リクエストＩＤ」、「ＵＲＬ」、「リクエスト呼出し元ＵＲＬ」、「ＱｕｅｒｙＳｔｒｉｎｇ」を挙げている。
【００８４】
「実行時情報ＩＤ」は、ユーザ毎に取得する実行時情報を特定する項目であり、本実施例では、Ｗｅｂコンテナ実行時情報取得装置（１４３）が実行時情報取得制御装置（１４１）から実行時情報の取得開始／終了のメッセージを受信する際に「実行時情報ＩＤ」の値を取得することができる。
【００８５】
「リクエストＩＤ」は、リクエストを一意に特定する項目である。Ｗｅｂコンテナがリクエストを受信したタイミングで機械的に付与されるものである。
【００８６】
「ＵＲＬ」は、リクエストが要求するリソースを特定する項目である。例えば、Ｊａｖａ(登録商標)言語の場合には、リクエスト受信の際に生成されるリクエストオブジェクトからサーバ側で機械的に取得することができる。
【００８７】
「リクエスト呼出し元ＵＲＬ」は、リクエストを送信した（クライアントＰＣ上に表示された）リソースを特定する項目である。例えば、Ｊａｖａ(登録商標)言語の場合には、リクエスト受信の際に生成されるリクエストオブジェクトからサーバ側で機械的に取得することができる。
【００８８】
「ＱｕｅｒｙＳｔｒｉｎｇ」は、リクエスト送信の際に付加されるユーザ入力データを示す項目であり、例えばＨＴＭLで記述されたページであれば、ＦＯＲＭタグによって表示されたフォームに入力された値を、リクエストに付加してサーバに送信することができる。また、Ｊａｖａ(登録商標)言語の場合には、リクエスト受信の際に生成されるリクエストオブジェクトからサーバ側で機械的に取得することができる。
【００８９】
図１０は、プログラム実行時情報取得装置（１４４）にて取得する実行時情報の例（１０００）である。本実施例では、「実行時情報ＩＤ」、「呼出し元オブジェクト情報」、「呼出し先オブジェクト情報」を挙げている。
【００９０】
「実行時情報ＩＤ」は、ユーザ毎に取得する実行時情報を特定する項目であり、本実施例では、プログラム実行時情報取得装置（１４４）が実行時情報取得制御装置（１４１）から実行時情報の取得開始／終了のメッセージを受信した際に、プログラム実行時情報取得装置（１４４）の内部で「実行時情報ＩＤ」の値を記憶している。
【００９１】
「呼出し元オブジェクト情報」は、他のオブジェクトに対してメッセージを送信するオブジェクトが持つ情報を示す項目で、あるオブジェクトがメッセージを送信する際に機械的に取得できるものとする。本実施例では、Ｊａｖａ(登録商標)言語の場合で、パッケージに相当する文字列「com.hitachi.sdl.appB」とクラスに相当する文字列「SearchItemServlet」をピリオド「．」などの記号で繋ぎ、さらにクラスに相当する文字列「SearchItemServlet」とメソッドに相当する文字列「doGet」をシャープ記号「＃」などの記号で繋いでいる。
【００９２】
「呼出し先オブジェクト情報」は、他のオブジェクトよりメッセージを受信するオブジェクトが持つ情報を示す項目で、あるオブジェクトがメッセージを受信する際に機械的に取得できるものとする。本実施例では、Ｊａｖａ(登録商標)言語の場合で、パッケージに相当する文字列「com.hitachi.sdl.appB」とクラスに相当する文字列「ProductBeans」をピリオド「．」などの記号で繋ぎ、さらにクラスに相当する文字列「ProductBeans」とメソッドに相当する文字列「setProductID」をシャープ記号「＃」などの記号で繋いでいる。
【００９３】
図１１は、ＤＢアクセス実行時情報取得装置（１４５）において取得する実行時情報の例（１１００）である。本実施例では、「実行時情報ＩＤ」、「ＳＱＬ情報」を挙げている。
【００９４】
「実行時情報ＩＤ」は、ユーザ毎に取得する実行時情報を特定する項目であり、本実施例では、ＤＢアクセス実行時情報取得装置（１４５）は、実行時情報取得制御装置（１４１）によってスレッド内部変数領域（７６０）内のオブジェクト（７６１）に記憶された「実行時情報ＩＤ」の値を参照することができる。
【００９５】
「ＳＱＬ情報」は、業務ＤＢ（１６２）に対して発行するデータ操作や定義などの情報を示す項目で、本実施例では、ＳＱＬ言語で記述された文字列「SELECT ＊FROM PRODUCT_TABLE WHERE ITEM=001」を挙げている。
【符号の説明】
【００９６】
１０１  クライアントPC
１０２  クライアントPC
１２０  サーバ
１３０  Webアプリケーション
１４０  ミドルウェア
１５０  プログラム実行基盤
１６１  実行時情報DB
１６２  業務用DB
１７１  実行時情報取得対象リスト
【図１】
2012027627.tif 000003
【図２】
2012027627.tif 000004
【図３】
2012027627.tif 000005
【図４】
2012027627.tif 000006
【図５】
2012027627.tif 000007
【図６】
2012027627.tif 000008
【図７】
2012027627.tif 000009
【図８】
2012027627.tif 000010
【図９】
2012027627.tif 000011
【図１０】
2012027627.tif 000012
【図１１】
2012027627.tif 000013