JP4906672B2 - ウェブアプリケーションの処理記録方法および処理記録装置 - Google Patents

ウェブアプリケーションの処理記録方法および処理記録装置 Download PDF

Info

Publication number
JP4906672B2
JP4906672B2 JP2007273309A JP2007273309A JP4906672B2 JP 4906672 B2 JP4906672 B2 JP 4906672B2 JP 2007273309 A JP2007273309 A JP 2007273309A JP 2007273309 A JP2007273309 A JP 2007273309A JP 4906672 B2 JP4906672 B2 JP 4906672B2
Authority
JP
Japan
Prior art keywords
web page
web
record
client device
processing
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.)
Expired - Fee Related
Application number
JP2007273309A
Other languages
English (en)
Other versions
JP2009104267A (ja
Inventor
友洋 中村
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007273309A priority Critical patent/JP4906672B2/ja
Priority to US12/028,272 priority patent/US8505025B2/en
Publication of JP2009104267A publication Critical patent/JP2009104267A/ja
Application granted granted Critical
Publication of JP4906672B2 publication Critical patent/JP4906672B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3495Performance evaluation by tracing or monitoring for systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/875Monitoring of systems including the internet
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、クライアント装置とサーバ装置もしくはプロキシ装置から構成されるコンピュータシステムでウェブアプリケーションを実行する際に、ウェブアプリケーションのクライアント装置およびサーバ装置における処理の記録を実現するために、クライアント装置のウェブブラウザ上で処理の記録を行うスクリプトコードを、サーバ装置もしくはプロキシ装置でウェブページに挿入して処理の記録および記録の表示を行う技術に関する。
ウェブアプリケーションは、スクリプトコードを利用したリッチクライアント技術などの技術進歩と、クライアント装置にウェブブラウザがインストールされていれば簡単に実行できる簡便さから、ビジネス用途を含め、さまざまな分野で利用されるようになってきた。用途によっては、高い可用性や、早い応答速度、使いやすさに対する強いニーズがある。また、リッチクライアント技術などにより、サーバ装置だけでなく、クライアント装置での処理量が増大している。ウェブアプリケーションは、クライアント装置とサーバ装置がネットワークで接続された、クライアント・サーバ型のウェブシステム上で動作するため、前記のニーズを満たすには、サーバ装置だけでなく、クライアント装置やネットワークの可用性や性能などを考慮する必要がある。
これに対して、よく行われているウェブシステムの管理では、サーバ装置において、サーバ装置の動作ログやエラーログを取得し、サーバ装置側での問題の発生や性能の測定が挙げられる。ネットワークについては、平均的なスループットの測定などが行われているものの、個々のトランザクションについての測定は難しい。クライアント装置では、ストップウォッチ法と呼ばれる人がユーザの操作性やユーザから見た性能の測定が行われている。最近では、クライアント装置に性能測定用のツールをインストールして、性能測定を行うこともある。
しかし、これらの方法については多くの問題がある。
・ サーバ装置側については、クライアント装置側で問題の発生を認識しても、サーバ装置のどの部分に問題があるかを探るために、サーバ装置側で取得されているログのどの部分に必要な情報があるのかを探すこと自体が大変である。
・ ネットワークについては、多数の通信が同時に行われているため、個々のトランザクションについての性能測定は困難である。
・ クライアント装置側については、多数のクライアントで長時間測定を行うことは、ストップウォッチ法のような人を介して行う測定ではコスト面、工数面などで困難である。また、クライアントが不特定多数の場合には、性能測定用のツールをクライアント装置にインストールすることも困難である。さららに、多数のクライアントの測定結果をサーバに集めるのは、ネットワークやサーバに負荷をかけてしまう問題がある。
・ 個々の装置での性能測定だけでは、ウェブシステム全体として、どこに問題の発生の原因があるのかを知ることはできない。
これに対して、いくつかの特許や非特許文献にて部分的な解決策が開示されている。
特許文献1では、JAVAアプレットおよびJAVA SCRIPT(登録商標)を利用してユーザのウェブブラウザ上での操作を記録・再生する方法が開示されている。この技術は、クライアント装置側に特別なツールをインストールすることなく、クライアント側の操作性や性能の測定を可能とする。ただし、記録される情報はクライアント装置のウェブブラウザ上での動作や操作に限られ、ウェブシステム全体として処理がどのように行われたかを知るのに必要なサーバ装置等の処理の記録と連携してウェブシステム全体の処理の記録を取る手段は提供されない。また、処理の記録をローカルディスクに保存する方法についても、Javaアプレットと電子署名を利用した方法が開示されているが、よりセキュリティや利便性が高い方法の提供が望まれる。
特許文献2では、ウェブアプリケーションにおけるユーザの操作を記録・再生し、AJAXアプリケーションを含めて、ユーザの行動をログから推定できる方法が開示されている。本技術も、ウェブシステム全体としての処理がどのように行われたかを知る手段は提供されず、処理の記録についてもローカルディスクへ保存する方法については提供されていない。
特許文献3では、DHTML(登録商標)を利用するウェブページの挙動の確認、あるいはウェブブラウザ間でのウェブページの挙動の相違の確認、あるいはウェブページにおけるアクセシビリティに関わる情報の付与または妥当性確認を、テスト実施者が効果的に実施できる方法が開示されている。DHTMLを利用するウェブアプリケーションの内部状態の解析を実現する一手法であるが、本技術も、ウェブシステム全体としての処理がどのように行われたかを知る手段は提供されず、処理の記録についてもローカルディスクへ保存する方法については提供されていない。
特許文献4では、クライアント側の性能を測定するコードをサーバ装置がクライアント装置へ送信し、測定結果をサーバに通知する方法が開示されている。本技術では、測定結果を一時的にクライアント装置のメモリもしくは永続的記憶装置に記憶される方法として開示されているが、ウェブシステム全体としての処理がどのように行われたかを知る手段は提供されず、処理の記録のセキュリティの高いローカルディスクへの保存、ローカルディスクからの記録読み出し・表示を行う方法については提供されていない。
非特許文献1では、AJAXを利用したウェブアプリケーションのエラーチェックや性能プロファイリングなどを実現する方法が開示されている。この技術は、プロキシを利用した実装例が示されており、ウェブアプリケーションに変更を加えずにログを取得する一手法である。本技術も、ウェブシステム全体としての処理がどのように行われたかを知る手段は提供されず、処理の記録についてもローカルディスクへ保存する方法については提供されていない。
非特許文献2では、JAVA SCRIPTを利用してウェブブラウザ上で発生するイベントの記録を取得する方法が開示されている。この技術は、クライアント装置での処理の記録を作成する際に利用できる。
非特許文献3では、Internet Explorer(登録商標)が備えるウェブブラウザ用永続的データファイルへのデータの保存・読み出し方法が開示されている。この技術は、ウェブブラウザがデータをローカルディスクに記録する際に利用できる。
特開2000−76266 公報 特願2006−298353 公報 特開2007−172377 公報 特表2004−537097 公報 Emre Kiciman and Helen Wang、 "Live Monitoring: Using Adaptive Instrumentation and Analysis to Debug and Maintain Web Applications"、 11th Workshop on Hot Topics in Operating Systems (HotOS XI)、 San Diego、 May 2007. 大津真、 "JavaScriptプログラミング入門[第2版]"、 オーム社. Introduction to Persistence、 http://msdn2.microsoft.com/en-us/library/ms533007.aspx
本発明が対象とする、クライアント装置とサーバ装置もしくはプロキシ装置から構成されるコンピュータシステムでウェブアプリケーションを実行する際に、ウェブアプリケーションのクライアント装置およびサーバ装置における処理の記録を実現するために、クライアント装置のウェブブラウザ上で処理の記録を行うスクリプトコードを、サーバ装置もしくはプロキシ装置でウェブページに挿入して処理の記録および記録の表示を行う技術において、前記公知技術およびその組み合わせでは解析する手段が提供されない以下の課題を本発明では解決する。
・ ウェブシステム全体としての処理がどのように行われたかを記録・表示する。ウェブシステム全体とは、サーバ装置だけでなく、クライアント装置やネットワークを含むことを意味する。さらに、ウェブアプリケーションの動作は、クライアント装置からのウェブページへのリクエスト、サーバ装置でのウェブページの生成、クライアント装置でのウェブページの表示およびウェブページ上での操作、ネットワーク上での前記リクエストおよびウェブページの送受信からなるため、これらの処理の記録を一連の記録として解釈できる方法が必要である。この課題の解決により、ウェブアプリケーションで問題が発生した際に、どの部分に問題があるかを把握することが容易になる。
・ クライアント装置へのツールのインストールや、サーバ装置でのウェブアプリケーションの改変など利便性を損なう作業無く、サーバ装置やネットワークに負荷をかけずに、セキュリティの高いクライアント装置のローカルディスク領域にクライアント装置の処理の記録を行うことで、クライアント装置の数が増大したときにもスケーラブルに処理の記録および記録の表示を行う。
本発明は、クライアント装置からのウェブページのリクエストに対して、サーバ装置がクライアント装置のウェブブラウザ上で処理の記録を行うスクリプトコードと、リクエスト元のウェブページの識別子およびリクエストされたウェブページの識別子を、クライアント装置に対するウェブページのレスポンスに挿入して返信することで、クライアント装置へのツールのインストール無しに、クライアント装置で処理の記録を実現する。また、識別子を処理の記録と共に保存することで、ウェブページのアクセスの履歴をたどることもできる。さらに、前記識別子は、サーバ装置でウェブページを生成する際の処理を記録したトレースの識別子もしくは、トレースの識別子と一対一対応する値とすることで、そのウェブページのクライアント装置での処理の記録と、そのウェブページの生成時のサーバ装置での処理の記録を関連付けられる。これらにより、ウェブシステム全体として処理がどのように行われたかを記録することができる。
ウェブブラウザ上で処理の記録を行うスクリプトコードは、ウェブブラウザがサーバ装置からレスポンスを受け取った際や、レスポンスのウェブブラウザ上への描画が終了した際や、マウスやキーボード操作、次のウェブページへのリクエストを送信した際などに発生させるイベントを記録する機能を持ち、これらの記録から、ウェブページのリクエストからレスポンスまでの通信時間や、ウェブページ上への描画に要した描画時間、描画終了から次のリクエストの送信までに要した閲覧・操作時間などの他に、ウェブページ上でのマウスのクリック回数などの統計量も記録することができる。これはウェブアプリケーションで問題が発生した際に、どの部分に問題があるかを切り分ける際の最初の判断材料となる。さらに、例えば通信時間に問題があると判断した場合、本発明の前記の手段により、サーバ装置でウェブページを生成した際の処理の記録であるトレースの識別子がクライアント装置に保存されている処理の記録に含まれているので、関連するサーバ装置のトレースを参照して通信時間の問題の詳細化を行うことができる。
本発明では、さらにクライアント装置での処理の記録方法についても、前記課題である、クライアント装置の数が増大したときにもスケーラブルかつ高いセキュリティを維持して処理の記録および記録の表示を行う方法についても示す。クライアント装置での処理の記録は、クライアント装置のローカルディスクに保存する。保存先は、ローカルディスク上の任意の場所ではなく、ウェブブラウザが保存・読み込みを許可された限定された領域で、かつ情報の保存をしたウェブページと同一ディレクトリにあるウェブページからのみ情報の保存や読み込みが可能な領域を利用してセキュリティを高める。しかし、処理の記録をまとめて閲覧する際には、閲覧するためのウェブページから、そのままではこれらの処理の記録の読み出しが出来ないので、閲覧用のウェブページには、フレームを用意し、処理の記録が行われたディレクトリ毎にローカルディスクの該当箇所から処理の記録を読み出すスクリプトを順次フレームにロードして、フレーム内から処理の記録を読み出し、これを閲覧用のウェブページに蓄積することで、複数のディレクトリにまたがったウェブページの処理の記録をまとめて表示することを実現する。
本発明によれば、クライアント装置へのツールのインストールや、サーバ装置のウェブアプリケーションの改変が不要で、簡便な方法でクライアント装置での処理の記録を実行できる効果がある。また、処理の記録から、ウェブシステムでの一連の処理の内容を確認することができる。
本発明によるウェブアプリケーションの処理記録方法の実施例を図1から図15を使って説明する。
まず、最初に図1から図3では、本発明が対象とするウェブシステムと、ウェブアプリケーションの構成や、基本的な処理のフローについて説明する。
図1は、本発明が対象とするウェブシステムに関する基本的な構成を示すブロック図である。
ウェブシステムは大きく分けてクライアント装置101とサーバ装置111とその間を結ぶネットワーク121から構成される。図1ではクライアント装置101、サーバ装置111共に1台ずつ記載してあるが、それぞれ複数台で構成されても良い。クライアント装置101は、CPU102、メモリ103、ローカルディスク104、外部インタフェース106、ネットワークインタフェース109とそれらをつなぐバス105から構成される。外部インタフェース106は、さらに表示装置107、入力装置108とつながる。表示装置107とは、CRTモニタや液晶モニタなどである。入力装置108とは、キーボードやマウスなどである。サーバ装置111も基本的な構成はクライアント装置101と同様である。ネットワーク121は、インターネットやイントラネットで、クライアント装置101、サーバ装置111のネットワークインタフェース109、119とつながっている。
クライアント装置101では、ローカルディスク104上に保存されているオペレーティングシステムとウェブブラウザの実行コードがメモリ103上に展開され、CPU102で実行される。ウェブブラウザは入力装置108からの指示を、外部インタフェース106を介して受け、ウェブページのリクエストを生成し、ネットワークインタフェース109を介してネットワーク121にリクエストを送信する。サーバ装置111からのウェブページのレスポンスを、ネットワークインタフェース109を介して受信すると、外部インタフェース106を介して表示装置107にウェブページを表示する。
サーバ装置111では、ローカルディスク114に保存されているオペレーティングシステムとウェブサーバ、データベースサーバなどのサーバプログラムの実行コードがメモリ113上に展開され、CPU112で実行される。サーバプログラムはクライアント装置101からのウェブページのリクエストを、ネットワークインタフェース119を介して受信し、サーバプログラムがウェブページを生成して、レスポンスを、ネットワークインタフェース119を介してネットワーク121に送信する。サーバ装置111の表示装置117は、サーバプログラムの処理状況や、設定内容を表示し、入力装置118は、サーバプログラムを起動・終了したり、サーバプログラムの設定を変更したりするのに利用する。
図2は、本発明が対象とするウェブシステム上で動作するソフトウェアに関する基本的な構成を示すブロック図である。
クライアント装置101では、オペレーティングシステム201上でウェブブラウザ202が実行される。ウェブブラウザ202には、HTMLインタプリタ203、スクリプトインタプリタ204、レンダリングエンジン205、ユーザインタフェース206が含まれる。HTMLインタプリタ203は、サーバ装置111から送信されてくるウェブページのレスポンスに含まれるHTML文書を解釈する。スクリプトインタプリタ204は、ウェブページのレスポンスに含まれるスクリプトコードを解釈して実行する。スクリプトコードの例としては、JAVASCRIPTが挙げられる。レンダリングエンジン205は、HTMLインタプリタ203、スクリプトインタプリタ204の実行結果に基づいてウェブページの表示画面を作成する。通常、作成されたウェブページの表示画面は、図1の表示装置107に表示される。ユーザインタフェース206は、図1の入力装置108から入力されたデータを受信して、HTMLインタプリタ203やスクリプトインタプリタ204にデータを渡して次のウェブページのリクエストの生成や、画面の更新などを実行させる。
クライアント装置での処理とは、上記のような、HTML文書の解釈や、スクリプトコードの実行、ウェブページの表示画面の生成、入力データの受信、リクエストの生成や、画面の更新などを含む。クライアント装置での処理の記録とは、上記の処理の種類、発生時刻や、入力データの値などの処理内容に関係する情報が含まれる。
サーバ装置111では、オペレーティングシステム201上でウェブサーバ207とデータベースサーバ211が実行される。図2では、1つのオペレーティングシステム201上でウェブサーバ207とデータベースサーバ211が実行されているが、オペレーティングシステム201が複数あり、それぞれ別のオペレーティングシステム201でサーバプログラムが実行されていても良い。また、一部のサーバが実行されていない、もしくは別の例えばアプリケーションサーバが実行されていても良く、ウェブサーバ207やデータベースサーバ211も1つに限らない。図2では、簡単のためアプリケーションサーバを省略し、ウェブサーバに含まれるとした。
本実施例では、ウェブサーバ207上に、トレース記録208、サーブレットフィルタ209、ウェブアプリケーション210がある。サーブレットフィルタ209は、ウェブブラウザ202からネットワーク121を介してウェブページのリクエストを受信し、設定されたフィルタ処理をリクエストに対して行い、ウェブアプリケーション210に渡す。また、ウェブアプリケーションから受けたウェブページのレスポンスに対して、設定されたフィルタ処理を行い、ネットワーク121を介してウェブブラウザ202に返信する。図2では簡単のために、省略したが、詳細にはネットワーク121とサーブレットフィルタ209の間にコンテナと呼ぶウェブブラウザとの通信を管理する機能モジュールが存在する。ウェブアプリケーション210は、リクエストされたウェブページの生成を行う。ウェブアプリケーション210は、サーブレットやJSP、EJB(登録商標)などのプログラムで構成される。図2では簡単のために、ウェブアプリケーション210を実行する個々のエンジンは省略し、単にウェブアプリケーション210と記載した。ウェブアプリケーション210は必要に応じてデータベースサーバ211と通信をして必要なデータの授受を行う。トレース記録208は、ウェブサーバ207での処理の記録を行う。処理の記録としては、ネットワーク121からリクエストを受けた時刻や、ウェブアプリケーション210で実行された処理の内容、データベースサーバ211との通信時に割り当てた識別子や、データベースサーバ211との通信内容、ウェブアプリケーションの終了コード、サーブレットフィルタ209からネットワーク121にレスポンスが送信された時刻などが例として挙げられる。データベースサーバ211は、データベースを保有し、ウェブアプリケーション210からの検索や更新の要求に応じてデータベースからデータを返したり、データベースの内容を書き換えたりする。
図3は本発明が対象とするウェブシステム上でウェブアプリケーションが動作する際の基本的な処理フロー図である。図3では、クライアント装置の処理フローと、サーバ装置の処理のフローとを並列させて示している。
まずクライアント装置の基本的な処理のフローを説明する。クライアント装置では、ウェブブラウザにリクエストを出したいウェブページのURLを入力するか、そのウェブページへのリンクをクリックすることにより、サーバ装置に送信するリクエストを生成する(ステップ302)。次に生成したリクエストをサーバ装置に送信する(ステップ303)。サーバ装置からのリクエストしたウェブページのレスポンスを受信する(ステップ304)と、ウェブブラウザのHTMLインタプリタがレスポンスを解釈し(ステップ305)、レスポンスにスクリプトコードが含まれているかを確認して(ステップ306)、含まれていればスクリプトインタプリタがスクリプトコードを解釈して処理を実行する(ステップ307)。その後レンダリングエンジンが処理結果をウェブブラウザに表示する(ステップ308)。さらに、次のウェブページへのリクエストをサーバ装置に送信する必要があれば、ステップ302に戻る。次のウェブページへのリスエストがなくウェブブラウザを終了するならばステップ310になる。
次にサーバ装置の基本的な処理のフローを説明する。サーバ装置を開始する(ステップ320)と、まずサーバ装置は処理のトレース記録を開始する(ステップ321)。その後、クライアント装置からウェブページのリクエストを受信する(ステップ322)と、まずサーブレットフィルタがリクエストに対する前処理を実行する(ステップ323)。前処理の内容としては、例えばリクエストに含まれる情報の一時的な保存や、リクエストを受信した時刻の記録などが例として挙げられる。続いて、ウェブアプリケーションの処理(ステップ331)が行われる。ウェブアプリケーションの処理(ステップ331)では、まずウェブアプリケーションがリクエストを解釈し(ステップ324)、データべースへのアクセスの要否を判定し(ステップ325)、データベースへのアクセスが必要ならば、データベースサーバにアクセスしてデータを取得もしくは更新し(ステップ326)、その後ウェブアプリケーションがリクエストに対するレスポンスを生成する(ステップ327)。次に、サーブレットフィルタがレスポンスに対する後処理を実行し、クライアント装置にレスポンスを送信する(ステップ328)。後処理の内容としては、例えばレスポンスに対して情報を追加挿入や、レスポンスをクライアント装置に向けて送信する時刻を記録するなどが例として挙げられる。サーバ装置では次のリクエストが有ればステップ322に戻り、次のリクエストが無く、サーバ装置を終了してよければステップ330になる。
クライアント装置とサーバ装置の処理のフローの関係としては、クライアント装置がリクエストをサーバ装置に送信するステップ303の後で、サーバ装置がクライアント装置からリクエストを受信し(ステップ322)、レスポンスを生成して、クライアント装置にレスポンスを送信するステップ328の後で、クライアント装置がサーバ装置からレスポンスを受信して(ステップ304)、ウェブブラウザにウェブページが表示される。
次に、図4から図15を使って、本発明によるウェブアプリケーションの処理記録方法について説明する。
図4と図5は、本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録を行う方法を示したシーケンス図と処理フロー図である。
まず、ウェブブラウザでウェブページへのリクエストを生成する際に、リクエストを生成するウェブページに含まれるスクリプトコードにより、サーバ装置との間で少量のデータのやり取りを可能とするcookieに、リクエストを生成したウェブページの識別子(図中ではID)を設定する(ステップ502)。この識別子は、後述するサーバ装置での処理の記録であるトレースの識別子もしくは、それと一対一対応する値である。ウェブブラウザにウェブページが表示されておらず、リクエスト先のウェブページのURLを直接入力してリクエストを生成した場合は、cookieには値が設定されない。また、リクエスト元のウェブページが本発明によるクライアントの処理の記録を行うウェブページでない場合や、図4で説明するクライアントの処理の記録を行うためのスクリプトコードをサーバ装置からのレスポンスに挿入する機能が稼動する前にクライアント装置に送信されたウェブページである場合には、cookieには値が設定されない。その後リクエストをサーバ装置に送信する(ステップ303)。
サーバ装置では、クライアント装置からリクエストを受信する(ステップ322)と、ウェブサーバのサーブレットフィルタで、クライアント装置より送信されたリクエストのcookieからリクエスト発行元のウェブページの識別子を読み出し、一時的にメモリ上に記録する(ステップ521)。続いてサーブレットフィルタがリクエストに対する前処理を実行し(ステップ323)、ウェブアプリケーションでは必要に応じてデータベースサーバとの通信を行いリクエストされたウェブページのレスポンスを生成する(ステップ330)。この際にウェブサーバではサーバ装置での処理の記録をトレースとして記録し、このトレースに識別子(図中ではID)を付加する。トレースの識別子は、ウェブページのリクエスト毎に異なるユニークな値である。識別子に関しては図9でも説明する。次にサーブレットフィルタは、トレース記録からこのレスポンスを生成した際のサーバの処理の記録であるトレースの識別子を受信する。そして、レスポンスにクライアント装置で処理の記録を行うモニタリング用スクリプトコードと、一時的にメモリ上に記録していたリクエスト発行元のウェブページの識別子と、このレスポンスを生成した際のサーバの処理の記録であるトレースの識別子とを挿入する。なおこのサーバ処理のトレースの識別子に代えて、その識別子と一対一対応する値をリクエストされたウェブページの識別子として挿入してもよい(ステップ522)。
モニタリング用スクリプトコードは、例えばJAVASCRIPTで記述したプログラムコードで、レスポンスのHTMLに、<SCRIPT>タグを利用して挿入する。モニタリング用スクリプトコードは、ウェブブラウザがサーバ装置からレスポンスを受け取った際や、レスポンスのウェブブラウザ上への描画が終了した際や、マウスやキーボード操作、次のウェブページへのリクエストを送信した際などに発生させるイベントを記録する機能を持ち、イベントの発生時刻や、ウェブページの識別子などと共にクライアント装置のローカルディスクへ処理の記録を保存する機能も含まれる。また、ウェブページの識別子をレスポンスに挿入する方法としては、モニタリング用スクリプトコード中に、変数の値として設定する方法が例として挙げられる。
次に、サーブレットフィルタがレスポンスに対する後処理を実行し、クライアント装置にレスポンスを送信する(ステップ328)。なお、この後処理の後に、ステップ522の処理を行い、その後にクライアント装置にレスポンスを送信する方法でもよい。サーバ装置のリクエスト受信前およびレスポンス送信後の処理は、図3と同じである。また、上記説明からも分かるように、ウェブアプリケーションの処理(ステップ330)についても、図3と図5では同じで、つまり本発明によるウェブアプリケーションの処理記録方法を適用しても、ウェブアプリケーションの処理には変更がない。
クライアント装置では、サーバ装置からレスポンスを受信する(ステップ304)と、HTMLインタプリタがレスポンスを解釈し(ステップ305)、スクリプトインタプリタがスクリプトを解釈して処理を実行して(ステップ307)、レンダリングエンジンが処理結果を表示する(ステップ308)。さらに、スクリプトインタプリタは、サーバ装置でレスポンスに挿入されたモニタリング用スクリプトを解釈して実行する(ステップ503)。ステップ503は、ウェブブラウザでの処理の記録(ステップ504)と、処理の記録をローカルディスクに保存(ステップ505)の2つの処理が含まれる。ステップ503とステップ307、ステップ308については、レスポンスのHTML中でスクリプトコードが記述されている場所や、ウェブブラウザでの処理の実行タイミングやイベントの発生タイミングにより、ステップ503とステップ307、ステップ308が同時並行的に処理されることもある。
最後に、次のウェブページへのリクエストをサーバ装置に送信する必要があれば、ステップ502に戻る。次のウェブページへのリクエストがなくウェブブラウザを終了するならばステップ506になる。
図6は、本発明によるウェブアプリケーションの処理記録方法における、クライアント装置が処理の記録を保存するローカルディスクの構成図である。
クライアント装置のローカルディスク104には、複数の種類のファイルが存在する。システムファイル604は、例えばオペレーティングシステムのファイルや、スワップファイル、アプリケーションの設定ファイルなどが含まれる。通常、ウェブブラウザ202上のウェブページから、システムファイル604へはアクセスせず、本発明による処理の記録の保存先としても利用できない。ウェブブラウザ用ページキャッシュファイル602は、ウェブブラウザ202がウェブページの表示を高速化するために、ウェブページのキャッシュとして利用するファイルである。通常、ウェブブラウザ202上のウェブページからウェブブラウザ用ページキャッシュファイル602へはアクセスせず、本発明による処理の記録の保存先としても利用できない。通常ファイル603は、文章ファイルや、アプリケーションファイルなどである。通常、ウェブブラウザ202上のウェブページから通常ファイル603へはアクセスせず、本発明による処理の記録の保存先としても利用できない。ウェブブラウザ用永続的データファイル601は、ウェブブラウザ202上のウェブページからデータをローカルディスク104に保存するために用意されている領域である。この領域に保存したデータは、ウェブブラウザ202を終了しても一定の条件でデータが保存されるので、永続的なデータファイルである。ウェブブラウザ用永続的データファイル601の例としては、Internet Explorerから利用できるuserData領域が挙げられる。ウェブブラウザ用永続的データファイル601は、通常、ウェブブラウザ202上のウェブページから、条件付でデータの読み書きをできるので、本発明による処理の記録の保存先として利用できる。ウェブブラウザ用永続的データファイル601以外のファイルに対しても、ウェブブラウザ202にプラグインソフトウェアを組み込んで利用するなどの方法で、ファイルの読み書きが可能になる場合もあるが、オペレーティングシステムの動作や、アプリケーションの動作、文章ファイルの内容などに影響を与える可能性があるため、セキュリティ面での問題がある。そのため、通常、ウェブブラウザ202からこのようなファイルにアクセスする場合には、セキュリティに関する警告が表示されるなどの動作が起こる。そのため、本発明による処理の記録の保存先として利用するには、適切ではない。
図7は、本発明によるウェブアプリケーションの処理記録方法における、クライアント装置が処理の記録を保存するウェブブラウザ用永続的データファイルの制約に関する説明図である。ウェブブラウザ用永続的データファイル601は、通常、ウェブブラウザ202上のウェブページからデータの読み書きをできるが、無条件にデータの読み書きができるわけではない。これは無制限にローカルディスク104を利用できると、ローカルディスク104の空き容量をなくすことや、他のウェブアプリケーションや、他のユーザが保存したデータを読み出す不正アクセスができることになり、セキュリティ面での問題があるためである。そのため、ウェブブラウザ用永続的データファイル601の利用には、使用可能な容量の制限の他に、読み書きできるのは、データを保存したウェブページと同じディレクトリに存在するウェブページだけという制約が存在する。また、ウェブブラウザ用永続的データファイル601へのデータの保存時には、アクセスキーと呼ぶ鍵を設定し、データの読み出し時には、保存時に設定したアクセスキーが必要である。図7で、ウェブページ(1)701がデータを保存したウェブブラウザ用永続的データファイル(1)705は、ウェブページ(1)701と別ディレクトリにあるウェブページ(2)702からは読み書きできない。一方、ウェブページ(2)702が2つの別のアクセスキーを使ってウェブブラウザ用永続的データファイル(2A)706、ウェブブラウザ用永続的データファイル(2B)707にデータを保存した場合、ウェブページ(2)702は、どちらのウェブブラウザ用永続的データファイルに対してもそれぞれのアクセスキーを使ってアクセスすることでデータを読み書きができる。また、ウェブページ(3)703とウェブページ(4)704は別のウェブページであるが、同一のディレクトリにあるので、共通のアクセスキーを利用すれば、ウェブブラウザ用永続的データファイル(3)708に、どちらのページからもアクセスしてデータの読み書きができる。
ウェブブラウザ用永続的データファイル709は、データの読み書きに必要なアクセスキーの他に、複数のアトリビュートとデータの組で構成される。アトリビュートは、各データのインデックスとして利用する値で、例えば、アトリビュートに”time”を指定し、データに”10:00:00.000”を指定してデータを保存した場合、アトリビュートに”time”を指定してデータを読み出すことで、データ”10:00:00.000”を読み出すことができる。
つまり、ウェブブラウザ用永続的データファイルからデータを読み出すには、データを保存したウェブページと同じディレクトリにあるウェブページの読み出し用のスクリプトコードが、データを保存した時と同じアクセスキーでアトリビュートを指定してデータを読み出すことになる。本実施例では、アクセスキーはウェブページの識別子である。ウェブページの識別子は、サーバ装置でのウェブページ生成時のトレースの識別子と一対一対応するリクエスト毎に異なるユニークな値であるので、ウェブページのアクセス毎に異なるアクセスキーが利用され、ウェブブラウザ用永続的データファイルがウェブページへの別のアクセスによって上書きされる危険がない。
このように、本発明では、クライアント装置での処理の記録先を、ローカルディスクの限定的にアクセスできる領域とすることで、クライアントの数が増大したときにも、サーバ装置やネットワークに過大な負荷をかけずにスケーラブルに処理の記録を実現し、さらに、ローカルディスク上のファイルの破壊や、情報の不正な流出を起こす危険性を低下し、セキュリティを高めた処理の記録および記録の読み出しを行える効果がある。
図8は、本発明によるウェブアプリケーションの処理記録方法における、クライアント装置が保存する処理の記録の内容に関する説明図である。
ウェブブラウザ用永続的データファイルに保存されるウェブページ毎のクライアントの処理の記録の内容の例は、図8に示すとおりである。つまり、処理の記録を行ったウェブページのURL、識別子(ID)、このウェブページのリクエスト元のウェブページの識別子(ID)、このウェブページで行われた処理の時刻とその内容などである。2つの識別子を処理の記録に含めるのは、クライアント装置のウェブページへのアクセス履歴を記録するためである。つまり、あるウェブページでのクライアントの処理の記録を見れば、そのウェブページに対するリクエストを発行した1つ前のウェブページの識別子を取得できるので、その1つ前のウェブページの識別子をアクセスキーとして利用してウェブブラウザ用永続的データファイルにアクセスすれば、1つ前のウェブページでのクライアントの処理の記録が得られる。これを繰り返すことで、順次1つ前のウェブページでのクライアントの処理の記録をたどることが可能となる。
処理の記録に保存されている、ウェブページで行われた処理とは、例えばこのウェブページのactivateイベントが発生した時などである。図8の802に示す例について、具体的に説明する。
activateイベントとは、ウェブページ上のオブジェクトがアクティブになった際に発生するイベントである。ここでは、ウェブページの表示内容が記述されているHTML文章のデータ構造を表すオブジェクト階層構造で最上位にあるdocumentオブジェクトのactiveイベントを記録することで、このウェブページを受信したことが分かる。
loadイベントとは、ウェブブラウザ上にオブジェクトが表示されたもしくはウェブブラウザ上でオブジェクトが利用可能になった際に発生するイベントである。ここでもdocumentオブジェクトのloadイベントを記録することで、このウェブページのウェブブラウザ上にウェブページが表示されたことが分かる。
beforeunloadイベントは、ウェブブラウザを閉じたり、次のページに遷移したりする際に発生するウェブページのアンロードに先立って発生するイベントである。ウェブブラウザの実装方法によるが、通常はbeforeunloadイベントが発生した後に次のウェブページへのリクエストがサーバ装置に対して送信される。類似のイベントとしてunloadイベントがあるが、ウェブブラウザの実装方法によるが、通常、unloadイベントは次のウェブページへのリクエストを送信後に、ウェブブラウザ上に現在表示されているウェブページを消す直前に発生するイベントであり、ウェブページのリクエスト送信からレスポンス受信までの通信時間を測定するには、ウェブページへのリクエスト発行元のウェブページにおけるbeforeunloadイベントの発生時刻と、リクエストされたウェブページのactivateイベントの発生時刻を記録すればよい。ただし、例外的に、beforeunloadイベント発生後に次のウェブページへのリクエスト送信をキャンセルすることができる。beforeunloadイベント後にunloadイベントが発生していることを確認することにより、次のウェブページへのリクエスト送信がキャンセルされずに送信されていることが分かる。
イベントの発生時刻だけでなく、例えばclickイベントの発生回数なども処理の記録とすることが可能である。clickイベントは、ウェブページ上でマウスをクリックすると発生するイベントで、ラジオボタンやチェックボックスのクリックやボタンなどのクリック時に発生する。通常バブリングと呼ばれる仕組みにより、ウェブページ内にあるボタンなどのオブジェクトをクリックした際に発生するclickイベントは、ウェブページのオブジェクト階層構造で上位にあるdocumentオブジェクトでこれらのclickイベントを記録することができる。つまり、documentオブジェクトでclickイベントの発生回数を数えれば、このウェブページ内でマウスをクリックした回数を取得できる。この他にも、マウスポインタの動きに合わせて発生するmousemoveイベントで、マウスポインタのウェブブラウザ上での位置座標を取得すれば、マウスが動いた距離を測定することなどもできる。図8に示した処理の記録以外にも、ウェブブラウザ上で発生するさまざまなイベントの発生時刻や、内容などを処理の記録とすることができる。
図9は、本発明によるウェブアプリケーションの処理記録方法における、ウェブページの識別子に関する説明図である。
図9を使って、クライアント装置101がウェブページ(1)・(2)・(3)の順にアクセスする際に各ウェブページでのクライアントの処理の記録に保存されるウェブページの識別子に関し、クライアント装置101とサーバ装置111間で識別子を引き継ぐ方法を説明する。なお、図9では簡単のためにネットワークや、クライアント装置101、サーバ装置111内部の構成は省略している。
まずクライアント装置101からウェブページ(1)のリクエストをサーバ装置111に送信する。図9では、ウェブブラウザにウェブページがロードされておらず、ウェブページ(1)のURLを直接ウェブブラウザのアドレスバーに直接入力してリクエストを発行した場合を示している。そのため、ウェブページ(1)のリクエストの発行元は「なし」となる。サーバ装置111では、クライアント装置101からリクエストを受信すると、まずcookieからリクエスト発行元のウェブページ、つまりリクエストされたウェブページの前のページの識別子(ID)を取得する。しかし、この場合は「なし」となる。その後、サーバ装置111ではウェブページ(1)を生成するが、その時のサーバ装置での処理の記録であるトレース901には、このトレースの識別子“ID(1)”が与えられる。サーバ装置111は、ウェブページ(1)のレスポンスをクライアント装置101に送信する前に、このウェブページへのリクエストを受信した際に取得した前のページの識別子と、今回このページを生成する際に記録されたトレースの識別子を、このウェブページの識別子としてレスポンスに挿入する。クライアント装置101では、ウェブページ(1)のレスポンスに含まれるモニタリング用コードにより、ウェブページ(1)でのクライアントの処理の記録701がクライアント装置101のローカルディスクに保存される。ウェブページ(1)でのクライアントの処理の記録701には、レスポンスに含まれる、1つ前のウェブページの識別子(ID)と、このウェブページの識別子(ID)が保存される。図9の例では、ウェブページ(1)の1つ前のウェブページはないので、識別子としても「なし」が保存される。一方、ウェブページ(1)生成時のトレース記録の識別子は“ID(1)”で、この識別子がレスポンスに挿入されているので、ウェブページ(1)の処理の記録701には、このウェブページの識別子(ID)として、“ID(1)”が保存される。
次にウェブページ(1)がウェブページ(2)をリクエストする場合について説明する。ウェブページ(1)では、ウェブページ(2)へのリクエストをサーバ装置111に送信する前に、cookieにウェブページ(1)の識別子(“ID(1)”)を設定する。サーバ装置111は、クライアント装置101からウェブページ(2)のリクエストを受信すると、まずcookieからリクエスト発行元であるウェブページ(1)の識別子を取得する。図9の例では、“ID(1)”をcookieから取得し、一時的に記憶する。続いてウェブページ(1)を生成するときと同様にして、トレース記録902を生成し、その識別子(ID)として“ID(2)”が与えられる。よって、ウェブページ(2)のレスポンスには、1つ前のページの識別子(ID)として“ID(1)”が、このページの識別子(ID)として“ID(2)”が挿入される。同様にウェブページ(2)がウェブページ(3)をリクエストする場合、cookieにウェブページ(2)の識別子(“ID(2)”)を設定し、サーバ装置111は、ウェブページ(3)のレスポンスに、1つ前のウェブページの識別子“ID(2)”と、ウェブページ(3)を生成する際のトレース記録903の識別子“ID(3)”を挿入してクライアント装置101にレスポンスを送信する。そして、ウェブページ(3)でのクライアントの処理の記録703には1つ前のウェブページの識別子(ID)として“ID(2)”が、このウェブページの識別子として“ID(3)”が保存される。以下同様にウェブページの識別子を処理の記録に保存していくことで、ウェブページのアクセスの履歴を順次たどることができる。また、各ウェブページでのクライアントの処理の記録には、そのウェブページの識別子として、サーバ装置111での処理の記録であるトレース記録の識別子が保存されているので、クライアント装置101とサーバ装置111の両方の処理の記録を順次たどることが可能である。
以上から、ウェブページでのクライアントの処理の記録の識別子として、サーバ装置での処理の記録であるトレースの識別子と一対一対応した値を利用し、これをクライアント装置の処理の記録と共に保存することで、クライアント装置の処理の記録と、サーバ装置の処理の記録を関連付けることができ、ウェブシステム全体での処理の記録を行える効果がある。さらに、クライアント装置での処理の記録に、処理の記録を行うウェブページのリクエスト元のウェブページの識別子も記録することで、ウェブページのアクセスの履歴を保存することができ、ウェブシステムでの一連の処理の記録を行える効果がある。
図10は、本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧方法に関する説明図である。
クライアント装置101のローカルディスク104に保存された処理の記録から、ウェブページのアクセス履歴や、各ウェブページでのクライアントの処理の記録を閲覧するには、ローカルディスク104に保存された処理の記録を順次読み出す必要がある。先に述べたように、処理の記録は、ローカルディスク104上にあるウェブブラウザ用永続的データファイルに保存されており、その処理の記録を保存したウェブページと同じディレクトリにあるウェブページからのみ処理の記録を読み出せる。そのため、複数のディレクトにあるウェブページでのクライアントの処理の記録を順次読み出すには、それぞれのウェブページのディレクトリと同じディレクトリにある処理の記録を読み出すウェブページから処理の記録を読み出さなければならない。これを実現する処理記録閲覧ページ1002について図10を使って説明する。
クライアント装置101は、クライアントの処理の記録を閲覧するページ(以下、処理記録閲覧ページ1002)をサーバ装置111にリクエストし、サーバ装置は処理記録閲覧ページ1002の生成1001を行ってクライアント装置101に返す。処理記録閲覧ページ1002は、大きく分けて5つの部分で構成される。まず、モニタリング対象ディレクトリ情報1008は、クライアントの処理の記録を保存したウェブページがあるディレクトリのリストである。このリストは、本発明によるモニタリング用スクリプトをレスポンスに挿入するウェブページがあるディレクトリのリストである。よって、モニタリング用スクリプトをレスポンスに挿入することになっているディレクトリであるが、実際にはアクセスされてなく、そのディレクトリにあるウェブページでのクライアントの処理の記録がローカルディスク104に保存されていないディレクトリが含まれていてもよい。
処理記録読み出し用スクリプト・ロード用スクリプト1007は、モニタリング対象ディレクトリ情報1008からクライアントの処理の記録を保存したウェブページがあるディレクトリのリストを取得し、そのリストにあるディレクトリ用の処理記録読み出し用スクリプト1006をサーバ装置111にリクエストするスクリプトコードである。処理記録読み出し用スクリプト・ロード用スクリプト1007は、処理記録読み出し用スクリプト1006から、ディレクトリのリストにある別のディレクトリ用の処理記録読み出し用スクリプト1006のサーバ装置111へのリクエストを要求されると、それに従って次のリクエストをサーバ装置111に送信する。
ディレクトリ用の処理記録読み出し用スクリプト1006を生成するサーバ装置111での処理、処理記録読み出し用スクリプトの生成1009では、モニタリング対象の各ディレクトリに、ディレクトリ用の処理記録読み出し用スクリプト1006を含むウェブページを配置し、処理記録閲覧ページ1002でそのウェブページを読み込む実現方法がある。別の実現方法としては、処理記録読み出し用スクリプト1006をサーブレットとして実装し、スクリプトコードの実体としては1つであるが、モニタリング対象の各ディレクトリに、このサーブレットをサーバ装置111の設定によりマッピングする方法がある。
ディレクトリ用の処理記録読み出し用スクリプト1006は、処理記録読み出し用スクリプト・ロード用スクリプト1007がサーバ装置111にリクエストして処理記録閲覧ページ1002の中のフレーム1005に読み込まれるスクリプトコードである。フレーム1005は、例えば<IFRAME>タグを使って、処理記録閲覧ページ1002の中に挿入されている。別の方法としては、処理記録閲覧ページ1002の全体を<FRAMESET>タグでフレーム構成とし、フレーム1005部分を<FRAME>タグを使って1つの子フレームとしてもよい。処理記録読み出し用スクリプト1006は、cookieに設定されているウェブページの識別子や先に読み込んだクライアントの処理の記録に含まれる1つ前のウェブページの識別子をアクセスキーとしてローカルディスク104にアクセスし、そのアクセスキーに該当する処理の記録があれば、その処理の記録に保存されているデータを読み込む。該当する処理の記録がない場合には、処理記録読み出し用スクリプト・ロード用スクリプト1007に対して、別のディレクトリの処理記録読み出し用スクリプト1006をサーバ装置111にリクエストするように指示をする。
処理記録情報蓄積用スクリプト1004は、処理記録読み出し用スクリプト1006が読み出したクライアントの処理の記録を蓄積するスクリプトコードである。
処理記録情報整形・表示用スクリプト1003は、処理記録情報蓄積用スクリプト1004が蓄積したクライアントの処理の記録から、処理記録閲覧ページの使用目的にあわせて、情報を整形して、ウェブブラウザ上に表示する。
図11は、本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧方法の処理フロー図である。クライアント装置とサーバ装置で2つの処理フローがある。それぞれ説明をする。
クライアント装置で、クライアントの処理の記録を閲覧するには、まず処理記録閲覧ページへのリクエストをサーバ装置に送信する(ステップ1102)。サーバ装置から処理記録閲覧ページのレスポンスを受信する(ステップ1103)と、最初にcookieもしくはローカルディスクなどから、閲覧したいウェブページの識別子を取得する(ステップ1104)。これは閲覧する処理の記録の最初の記録を指定する意味がある。cookieには、クライアントの処理の記録をとっていた最新もしくは1つ前のウェブページの識別子が設定されている。またローカルディスクに保存されている処理の記録で、閲覧可能な記録のウェブページの識別子のリストをローカルディスクなどに保存しておき、その中から閲覧する処理の記録を指定する方法も考えられる。このステップで取得した識別子は、最初にローカルディスクからクライアントの処理の記録を読み出す際のアクセスキーとなる。次に、モニタリング対象ディレクトリ情報に登録されているディレクトリの最初の1つを指定する(ステップ1105)。そして、処理記録読み出し用スクリプト・ロード用スクリプトが、指定したディレクトリ用の処理記録読み出し用スクリプトをサーバ装置にリクエストする(ステップ1106)。サーバ装置から処理記録読み出し用スクリプトが、処理記録閲覧ページのフレームにロードされると、処理記録読み出し用スクリプトがステップ1104で読み込んだアクセスキーを使ってローカルディスクからクライアントの処理の記録の読み出しを試みる(ステップ1107)。該当する記録がない場合には、モニタリング対象ディレクトリ情報から次のディレクトリを指定(ステップ1109)してステップ1106に戻る。該当する記録があった場合は、処理記録情報蓄積用スクリプトが処理記録をメモリ上に蓄積する(ステップ1110)。さらに続けて処理の記録を読み出したい場合には、読み込んだ処理の記録から1つ前のウェブページの識別子を読み出す(ステップ1112)。この識別子が「なし」でなければ、1つ前のウェブページがあることを意味するので、この識別子を次に読み出したい処理の記録のアクセスキーとして設定(ステップ1114)しステップ1105に戻る。識別子が「なし」であったならば、最後に読み出した処理の記録が、ウェブページへのアクセス履歴の先頭であることになるので、処理記録情報整形・表示用スクリプトによりメモリ上に蓄積された処理の記録を整形してウェブブラウザ上に表示(ステップ1115)して終了する。なお、ステップ1111で、処理の記録の読み込みを終了した場合にも、次にステップ1115を実行して終了する。
なお、図11には記載していないが、ステップ1109は、モニタリング対象ディレクトリ情報に登録されているディレクトリを順次指定していくが、すべてのディレクトリを指定した後にもステップ1109に処理がきた場合、該当記録がローカルディスクに存在しないことになるので、その場合にはステップ1115に処理を移す。
また、アクセスキーと共にディレクトリ情報も一緒に保存しておくことで、図11のステップ1105、ステップ1108、ステップ1109を省略することもできるが、保存するデータ量の増加が問題となる可能性がある。
次に、ライアントの処理の記録を閲覧する際にサーバ装置で行われる処理のフローを説明する。
サーバ装置は、クライアント装置からリクエストを受信する(ステップ1121)と、処理記録閲覧ページへのリクエストかどうかを判定し(ステップ1122)、処理記録閲覧ページへのリクエストならば、それを生成してクライアント装置に送信する(ステップ1123)。処理記録閲覧ページへのリクエストでなく、処理記録読み出し用スクリプトへのリクエストであったならば、処理記録読み出し用スクリプトを生成しクライアント装置に送信する(ステップ1125)。それ以外のページへのリクエストならば、リクエストされたページを生成してクライアント装置に送信する(ステップ1126)。
図12は、本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧ページの例である。
クライアントの処理の記録を表示する処理記録閲覧ページ1202を、クライアント装置1201の画面に表示した例である。処理記録閲覧ページには、クライアント装置がアクセスした順にウェブページのURLが表示され、さらに各ウェブページにアクセスした時刻、識別子(ID)を一覧表示(1203)する。また、各ウェブページでのクライアントの処理の記録の詳細を表示するためのボタンや、記録をサーバに送信するためのボタンや、記録を削除するためのボタンなども用意される。また、処理記録閲覧ページの制御部1204に、記録のファイルへの保存や、複数の記録の統計値の表示や、別の記録の読み込みや、閲覧の終了を行うボタンが用意される。このような処理記録閲覧ページにより、ウェブページへのアクセス履歴が確認できるだけでなく、識別子(ID)を使って、処理内容に問題があったウェブページのサーバ装置での処理の記録を参照することも可能となる。なお、図12に示した表や数値、ボタンなどは、その一部だけでもよく、さらに別の配置や別の書式などでもよい。
図13は、本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧ページに表示される情報の別の例である。
ここでは一覧表示部分1301だけを抜き出して示している。図13では、クライアント装置がアクセスした順にウェブページのURLが表示され、さらに各ウェブページにアクセスした時刻、識別子(ID)を表示している点は図12と変わらない。図13では、各ウェブページについて、クリック回数、通信時間、描画時間、閲覧・操作時間を表示している点が図12と異なる。
クリック回数は、ウェブブラウザでの処理を記録するスクリプトにおいて、clickイベントの発生回数をカウントし、処理の記録に保存しておき、これを読み込めば表示できる。
通信時間は、ウェブページのactivateイベントの発生時刻と、1つ前にアクセスしたウェブページのbeforeunloadイベントの発生時刻をそれぞれ処理の記録に保存しておき、これを読み込んで時刻の差分を取ることで表示できる。
描画時間は、ウェブページのactivateイベントの発生時刻と、loadイベントの発生時刻を処理の記録に保存しておき、これを読み込んで両者の差分を取ることで表示できる。
閲覧・操作時間は、通信時間と描画時間以外の時間で、ウェブページのloadイベントの発生時刻と、beforeunloadイベントの発生時刻を処理の記録に保存しておき、これを読み込んで両者の差分を取ることで表示できる。
このような一覧表示1301を行うことで、各ウェブページのレスポンス性能や使いやすさなどに問題があった場合に、問題の原因が、通信時間の増大、つまりネットワークやサーバ装置に問題あるのか、描画時間の増大、つまりクライアント装置に問題があるか、ウェブページのコンテンツに問題があるのか、閲覧・操作時間の増大、つまりウェブページのコンテンツが使いにくいもしくは、内容が豊富すぎることに問題があるのかなどの切り分けができる。
なお、図13に示した表や数値などは、その一部だけでもよく、さらに別の配置や別の書式などでもよい。
図14は、本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧ページに表示される情報のさらに別の例である。
図12、図13の例は、個々のウェブページへのアクセスについて表示をしていたが、図14の例では、複数のクライアントの処理の記録から統計処理を行い、統計値を表示している。一覧表示1401では、アクセス回数の多いウェブページのURLが順に表示されている。アクセス回数は、複数のクライアントの処理の記録を読み込み、同一のURLのウェブページの数をカウントすることで求められる。また、それらの中で最古・最新の時刻を検索すれば、そのウェブページにアクセスしていた期間が分かる。さらに、図13の説明で述べた方法により、それぞれの処理の記録から、通信時間、描画時間、閲覧・操作時間を求め、これの平均や最大値、最小値を求めて表示することも、ウェブページの利用状況や、問題のあるウェブページの抽出などに役に立つ。
なお、図14に示した表や数値などは、その一部だけでもよく、さらに別の配置や別の書式などでもよい。
図15は、本発明によるウェブアプリケーションの処理記録方法における、処理記録の異常を通報する方法と処理の設定を変更する方法を含む処理の説明図である。
図15の例では、図10に示した処理記録閲覧ページの機能に加えて、処理異常検出用スクリプト1502と処理設定用スクリプト1503が加わっている。処理異常検出用スクリプト1502は、処理の異常を定義するルールを持ち、ローカルディスク104から読み出されたクライアントの処理の記録に対して、例えば通信時間が一定の閾値よりも大きい値になっている場合や、ウェブページのアクセス順に不正な順番がある場合などに、処理の異常を定義するルールに従って異常の発生を検出し、処理異常検出情報をサーバ装置111に送信する機能を持つ。サーバ装置111では、処理異常検出情報を受信し、これをサーバ装置111の表示装置に表示したり、ローカルディスクに保存したりする。処理異常検出用スクリプト1502では、サーバ装置111に処理異常検出情報を送信せずに、処理記録閲覧ページ1501の処理記録情報整形・表示用スクリプト1003に対して、処理異常を検出した記録の表示を他の記録の表示とは別の色で行うなどの方法によって、異常の発生を表示することも含まれる。
処理設定用スクリプト1503は、例えば処理記録情報整形・表示用スクリプト1003による処理の記録の整形や表示において、整形方法や表示方法を変更したり、処理異常検出用スクリプト1502に対して、処理の異常を定義するルールを変更したりする機能を持つ。処理設定用スクリプト1503は、一定時間ごともしくは、ローカルディスク104から読み込んだ処理の記録の内容が一定条件に当てはまったときにサーバ装置111に処理設定の変更の有無を問い合わせるリクエストを送信する。サーバ装置111は、処理設定変更指示情報の生成1505を行い、クライアント装置101に送信することで、処理記録閲覧ページの処理設定を定期的に更新することができる。別の方法としては、サーバ装置111の処理設定変更指示情報の生成1505により、必要に応じてクライアント装置101に対し処理設定の変更指示情報を送信する方法もある。この場合、サーバ装置111の都合により、任意の時間にクライアント装置101における処理記録閲覧ページの処理設定を変更することができる。
以上に述べたとおり、本実施例におけるサーバ装置は、クライアント装置のウェブブラウザが実行するための、処理の記録をローカルディスクに保存するスクリプトコードを、このクライアント装置からのリクエストのレスポンスであるウェブページに挿入する。さらにサーバ装置は、ウェブページに、そのリクエスト元の識別子、およびそのウェブページを生成する際のサーバ装置の処理を記録したトレースの識別子を挿入し、もってウェブアプリケーションの動作にかかわるクライアント装置、サーバ装置両者の処理記録を一連の処理の記録として解釈可能とする。その意味でサーバ装置はの処理記録装置としての機能も果たす。
本発明によるウェブアプリケーションの処理記録方法の別の実施例を図16から図18を使って説明する。
図16は、本発明が対象とするウェブシステムに関する別の基本的な構成を示すブロック図である。
ウェブシステムは大きく分けてクライアント装置101とサーバ装置111とその間を結ぶネットワーク121さらに、ネットワーク間を結ぶプロキシ装置1601から構成される。図16ではクライアント装置101、サーバ装置111、プロキシ装置1602共に1台ずつ記載してあるが、それぞれ複数台で構成されても良い。
クライアント装置101では、オペレーティングシステム201上でウェブブラウザ202が実行される。ウェブブラウザ202には、HTMLインタプリタ203、スクリプトインタプリタ204、レンダリングエンジン205、ユーザインタフェース206が含まれる。HTMLインタプリタ203は、サーバ装置111から送信されてくるウェブページのレスポンスに含まれるHTML文書を解釈する。スクリプトインタプリタ204は、ウェブページのレスポンスに含まれるスクリプトコードを解釈して実行する。スクリプトコードの例としては、JAVASCRIPTが挙げられる。レンダリングエンジン205は、HTMLインタプリタ203、スクリプトインタプリタ204の実行結果に基づいてウェブページの表示画面を作成する。
サーバ装置111では、オペレーティングシステム201上でウェブサーバ207とデータベースサーバ211が実行される。図16では、1つのオペレーティングシステム201上でウェブサーバ207とデータベースサーバ211が実行されているが、オペレーティングシステム201が複数あり、それぞれ別のオペレーティングシステム201でサーバプログラムが実行されていても良い。また、一部のサーバが実行されていない、もしくは別の例えばアプリケーションサーバが実行されていても良く、ウェブサーバ207やデータベースサーバ211も1つに限らない。図16では、簡単のためアプリケーションサーバを省略し、ウェブサーバに含まれるとした。
本実施例では、ウェブサーバ207上に、トレース記録208、サーブレットフィルタ209、ウェブアプリケーション210がある。サーブレットフィルタ209は、ウェブブラウザ202からネットワーク121およびプロキシ装置1601を介してウェブページのリクエストを受信し、設定されたフィルタ処理をリクエストに対して行い、ウェブアプリケーション210に渡す。また、ウェブアプリケーションから受けたウェブページのレスポンスに対して、設定されたフィルタ処理を行い、ネットワーク121およびプロキシ装置1601を介してウェブブラウザ202に返信する。図16では簡単のために、省略したが、詳細にはネットワーク121とサーブレットフィルタ209の間にコンテナと呼ぶウェブブラウザとの通信を管理する機能モジュールが存在する。ウェブアプリケーション210は、リクエストされたウェブページの生成を行う。ウェブアプリケーション210は、サーブレットやJSP、EJB(登録商標)などのプログラムで構成される。図16では簡単のために、ウェブアプリケーション210を実行する個々のエンジンは省略し、単にウェブアプリケーション210と記載した。ウェブアプリケーション210は必要に応じてデータベースサーバ211と通信をして必要なデータの授受を行う。トレース記録208は、ウェブサーバ207での処理の記録を行う。処理の記録としては、ネットワーク121からリクエストを受けた時刻や、ウェブアプリケーション210で実行された処理の内容、データベースサーバ211との通信時に割り当てた識別子や、データベースサーバ211との通信内容、ウェブアプリケーションの終了コード、サーブレットフィルタ209からネットワーク121にレスポンスが送信された時刻などが例として挙げられる。データベースサーバ211は、データベースを保有し、ウェブアプリケーション210からの検索や更新の要求に応じてデータベースからデータを返したり、データベースの内容を書き換えたりする。
プロキシ装置1601は、ネットワーク121間の接続機能を持つ装置である。通常は、インターネットとイントラネットの間を接続するのに利用されるが、本実施例ではこれによらず、インターネット間やイントラネット間の接続などでもよい。プロキシ装置1601は、サーバ装置111上のウェブサーバ207で動作しているトレース記録208から、トレースの識別子を受信することができる。図16では、トレース記録208からプロキシ装置1601に対して専用の通信路が用意されているが、ネットワーク121を介してトレースの識別子を受信する方法でもよい。
図17と図18は、本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録を行う別の方法を示したシーケンス図と処理フロー図である。
まず、ウェブブラウザでウェブページへのリクエストを生成する際に、リクエストを生成するウェブページに含まれるスクリプトコードにより、サーバ装置との間で少量のデータのやり取りを可能とするcookieに、リクエストを生成したウェブページの識別子(図中ではID)を設定する(ステップ502)。この識別子は、後述するサーバ装置での処理の記録であるトレースの識別子もしくは、それと一対一対応する値である。ウェブブラウザにウェブページが表示されておらず、リクエスト先のウェブページのURLを直接入力してリクエストを生成した場合は、cookieには値が設定されない。また、リクエスト元のウェブページが本発明によるクライアントの処理の記録を行うウェブページでな い場合や、図17で説明するクライアントの処理の記録を行うためのスクリプトコードをプロキシ装置においてレスポンスに挿入する機能が稼動する前にクライアント装置に送信されたウェブページである場合には、cookieには値が設定されない。その後リクエストを、ネットワークを介してプロキシ装置に送信する(ステップ1802)。
プロキシ装置では、クライアント装置からリクエストを受信する(ステップ1821)と、クライアント装置より送信されたリクエストのcookieからリクエスト発行元のウェブページの識別子を読み出し、一時的にメモリ上に記録する(ステップ1822)。続いてサーバ装置にリクエストを送信する(ステップ1823)。サーバ装置で実行されているウェブアプリケーションでは、プロキシ装置からネットワークを介してウェブページへのリクエストを受信すると、必要に応じてデータベースサーバとの通信を行いリクエストされたウェブページのレスポンスを生成し、プロキシ装置に送信する。プロキシ装置は、ネットワークを介してサーバ装置からのレスポンスを受信する(ステップ1824)。サーバ装置では、サーバ装置での処理の記録をトレースとして記録し、このトレースに識別子を付加している。トレースの識別子は、ウェブページのリクエスト毎に異なるユニークな値である。プロキシ装置は、トレース記録からこのレスポンスを生成した際のサーバの処理の記録であるトレースの識別子を取得する(ステップ1825)。そして、レスポンスにクライアント装置で処理の記録を行うモニタリング用スクリプトコードと、一時的にメモリ上に記録していたリクエスト発行元のウェブページの識別子と、このレスポンスを生成した際のサーバの処理の記録であるトレースの識別子もしくはその識別子と一対一対応する値をリクエストされたウェブページの識別子として挿入する(ステップ1826)。
モニタリング用スクリプトコードは、例えばJAVASCRIPTで記述したプログラムコードで、レスポンスのHTMLに、<SCRIPT>タグを利用して挿入する。モニタリング用スクリプトコードは、ウェブブラウザがサーバ装置からレスポンスを受け取った際や、レスポンスのウェブブラウザ上への描画が終了した際や、マウスやキーボード操作、次のウェブページへのリクエストを送信した際などに発生させるイベントを記録する機能を持ち、イベントの発生時刻や、ウェブページの識別子などと共にクライアント装置のローカルディスクへ処理の記録を保存する機能も含まれる。また、ウェブページの識別子をレスポンスに挿入する方法としては、モニタリング用スクリプトコード中に、変数の値として設定する方法が例として挙げられる。
次に、クライアント装置にレスポンスを送信する(ステップ1827)。クライアント装置では、プロキシ装置からネットワークを介してレスポンスを受信する(ステップ1803)と、HTMLインタプリタがレスポンスを解釈し(ステップ305)、スクリプトインタプリタがスクリプトを解釈して処理を実行して(ステップ307)、レンダリングエンジンが処理結果を表示する(ステップ308)。さらに、スクリプトインタプリタは、プロキシ装置でレスポンスに挿入されたモニタリング用スクリプトを解釈して実行する(ステップ503)。ステップ503は、ウェブブラウザでの処理の記録(ステップ504)と、処理の記録をローカルディスクに保存(ステップ505)の2つの処理が含まれる。ステップ503とステップ307、ステップ308については、レスポンスのHTML中でスクリプトコードが記述されている場所や、ウェブブラウザでの処理の実行タイミングやイベントの発生タイミングにより、ステップ503とステップ307、ステップ308が同時並行的に処理されることもある。
最後に、次のウェブページへのリクエストをプロキシ装置に送信する必要があれば、ステップ502に戻る。次のウェブページへのリクエストがなくウェブブラウザを終了するならばステップ1804になる。
実施例2において、クライアント装置での処理の記録方法、ローカルディスクへの保存方法、識別子の付け方、処理の記録の閲覧・表示方法については、実施例1と同様である。
以上のとおり、実施例2では、サーバ装置からのレスポンスであるウェブページに、クライアント装置が実行するための、処理の記録をローカルディスクに保存するスクリプトコードを挿入し、またウェブページのリクエスト元の識別子、ウェブページのサーバの処理を記録したトレースの識別子を挿入するのはプロキシ装置が行なう。したがって、本実施例におけるプロキシ装置は処理記録装置と言える。
本発明により、クライアント装置へのツールのインストールや、サーバ装置のウェブアプリケーションの改変が不要で、サーバ装置の設定の変更など、簡便な方法でクライアント装置での処理の記録を実行できるので、問題発生時にウェブシステム全体での原因究明が容易化される。特に、サーバ装置での処理の記録であるトレースの識別子と一対一対応した値を、クライアント装置での処理の記録と共に保存することで、クライアント装置で発生した問題が、サーバ装置のどの処理に関連しているかを容易に確認できるため、ウェブシステムの高可用運用を実現する基盤技術となる。また、本発明では、処理の記録をクライアント装置のローカルディスクに保存する方法により、クライアント数が増大したときにも、サーバ装置やネットワークに負荷をかけずに処理の記録を行える。これにより大規模なシステムの運用管理にも適用可能である。
本発明が対象とするウェブシステムに関する基本的な構成を示すブロック図である。 本発明が対象とするウェブシステム上で動作するソフトウェアに関する基本的な構成を示すブロック図である。 本発明が対象とするウェブシステム上でウェブアプリケーションが動作する際の基本的な処理フロー図である。 本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録を行う方法を示したシーケンス図である。 本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録を行う方法を示した処理フロー図である。 本発明によるウェブアプリケーションの処理記録方法における、クライアント装置が処理の記録を保存するローカルディスクの構成図である。 本発明によるウェブアプリケーションの処理記録方法における、クライアント装置が処理の記録を保存するウェブブラウザ用永続的データファイルの制約に関する説明図である。 本発明によるウェブアプリケーションの処理記録方法における、クライアント装置が保存する処理の記録の内容に関する説明図である。 本発明によるウェブアプリケーションの処理記録方法における、ウェブページの識別子に関する説明図である。 本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧方法に関する説明図である。 本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧方法の処理フロー図である。 本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧ページの例である。 本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧ページに表示される情報の別の例である。 本発明によるウェブアプリケーションの処理記録方法における、処理記録の閲覧ページに表示される情報のさらに別の例である。 本発明によるウェブアプリケーションの処理記録方法における、処理記録の異常を通報する方法と処理の設定を変更する方法を含む処理の説明図である。 本発明が対象とするウェブシステムに関する別の基本的な構成を示すブロック図である。 本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録を行う別の方法方法を示したシーケンス図である。 本発明によるウェブアプリケーションの処理記録方法における、クライアントの処理の記録を行う別の方法を示した処理フロー図である。
符号の説明
101 クライアント装置
102、112 CPU
103、113 メモリ
104、114 ローカルディスク
105、115 バス
106、116 外部インタフェース
107、117 表示装置
108、118 入力装置
109、119 ネットワークインタフェース
111 サーバ装置
121 ネットワーク
201 オペレーティングシステム
202 ウェブブラウザ
203 HTMLインタプリタ
204 スクリプトインタプリタ
205 レンダリングエンジン
206 ユーザインタフェース
207 ウェブサーバ
208 トレース記録
209 サーブレットフィルタ
210 ウェブアプリケーション
211 データベースサーバ
601 ウェブブラウザ用永続的データファイル
602 ウェブブラウザ用ページキャッシュファイル
603 通常ファイル
604 システムファイル
1601 プロキシ装置。

Claims (14)

  1. クライアント装置とサーバ装置およびそれらを接続するネットワークから構成されるコンピュータシステムで、ウェブアプリケーション実行時のクライアント装置とサーバ装置での処理の記録をとる方法であって、
    クライアント装置での処理の記録を行うスクリプトコードを前記サーバ装置がウェブページに挿入し、
    前記サーバ装置は、前記クライアント装置からリクエストされたウェブページを生成する際に、前記サーバ装置での処理をトレースして記録し、トレース毎に識別子を付加し、この識別子もしくは、該識別子と一対一に対応する値をこのウェブページの識別子として、リクエストされたウェブページのレスポンスに該値を挿入し、
    前記クライアント装置は、ウェブページを前記サーバ装置にリクエストする際に、リクエスト元のウェブページの識別子をサーバ装置に送信し、前記サーバ装置はリクエスト元のウェブページの識別子をリクエストされたウェブページのレスポンスに挿入し、
    前記クライアント装置は挿入されたスクリプトコードをウェブブラウザで実行して、前記クライアント装置のローカルディスクに、ウェブページで処理の行われた時刻と、該ウェブページの識別子と、該ウェブページのリクエスト元である1つ前のウェブページの識別子とが含まれる処理の記録を保存することを特徴とするウェブアプリケーションの処理記録方法。
  2. 請求項1に記載の処理記録方法であって、前記クライアント装置がローカルディスクに保存した処理の記録が、該処理の記録を行ったスクリプトコードが含まれていたウェブページと同一のディレクトリにあるウェブページからのみ、該処理の記録の読み込み、書き込みができることを特徴とするウェブアプリケーションの処理記録方法。
  3. 請求項2に記載の処理記録方法であって、前記サーバ装置は前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページを生成し、前記クライアント装置は前記サーバ装置に該ウェブページをリクエストして取得し、該ウェブページをウェブブラウザで実行して処理の記録を読み込み、ウェブブラウザ上に表示することを特徴とするウェブアプリケーションの処理記録方法。
  4. 請求項3に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページには、処理の記録を行うウェブページが存在するディレクトリのリストと、処理の記録を読み込むスクリプトコードをロードするフレームがあり、ウェブブラウザは、該ディレクトリのリストから順次ディレクトリを選択して、そのディレクトリにある処理の記録を読み込むスクリプトコードを該フレームにロードし、該ディレクトリのウェブページの処理の記録を読み込み、読み込んだ処理の記録から、処理の記録のあるウェブページのリストと、各ウェブページの識別子をウェブブラウザ上に表示することを特徴とするウェブアプリケーションの処理記録方法。
  5. 請求項3に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページは、読み込んだ処理の記録から、処理の記録のあるウェブページのリストと、各ウェブページの処理の記録の詳細内容を表示、もしくは処理の記録の削除、もしくは処理の記録内容のサーバ装置への送信を行う手段のうち、少なくとも1つを該ウェブページに備えていることを特徴とするウェブアプリケーションの処理記録方法。
  6. 請求項3に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページは、読み込んだ処理の記録から、処理の記録のあるウェブページのリストと、各ウェブページの処理の記録の時刻、もしくは各ウェブページへのリクエストをウェブブラウザが送信してからレスポンスを受信するまでの時間、もしくは各ウェブページをウェブブラウザ上に表示するのに要した時間、もしくは各ウェブページのレスポンスを受信してから次のリクエストを送信するまでに要した時間のうち、少なくとも1つをウェブブラウザ上に表示することを特徴とするウェブアプリケーションの処理記録方法。
  7. 請求項3に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページは、読み込んだ処理の記録から、処理の記録のあるウェブページのリストと、各ウェブページがウェブブラウザ上に表示された回数、もしくは各ウェブページが最初に表示された時刻、もしくは各ウェブページが最後に表示された時刻、もしくは各ウェブページへのリクエストをウェブブラウザが送信してからレスポンスを受信するまでの時間の平均値または最大値または最小値、もしくは各ウェブページをウェブブラウザ上に表示するのに要した時間の平均値または最大値または最小値、もしくは各ウェブページのレスポンスを受信してから次のリクエストを送信するまでに要した時間の平均値または最大値または最小値のうち、少なくとも1つをウェブブラウザ上に表示することを特徴とするウェブアプリケーションの処理記録方法。
  8. 請求項3に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページは、読み込んだ処理の記録に異常が含まれるか否かを判定するスクリプトコードを含み、処理の記録を読み込んだ後に、該スクリプトコードの実行により、異常があった場合に、ウェブブラウザ上に異常があったことを表示、もしくはサーバ装置に異常があったことを通知する機能を有することを特徴とするウェブアプリケーションの処理記録方法。
  9. 請求項3に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページは、処理記録方法の設定について前記サーバ装置へ問合せる機能を持ったスクリプトコード、もしくは前記サーバ装置から処理記録方法の設定を受信する機能をもったスクリプトコードのうち、少なくとも1つを含み、前記サーバ装置との通信により前記サーバ装置から受信した処理記録方法の設定に従って、該ウェブページでの処理の方法を変更することを特徴とするウェブアプリケーションの処理記録方法。
  10. クライアント装置とプロキシ装置とサーバ装置およびそれらを接続するネットワークから構成されるコンピュータシステムで、ウェブアプリケーション実行時のクライアント装置とサーバ装置での処理の記録をとる方法であって、
    前記クライアント装置での処理の記録を行うスクリプトコードを前記プロキシ装置が前記サーバ装置から前記クライアント装置に送信されるウェブページに挿入し、
    前記サーバ装置は前記クライアント装置からリクエストされたウェブページを生成する際に前記サーバ装置での処理をトレースして記録し、トレース毎に識別子を付加し、この識別子もしくは、該識別子と一対一に対応する値をこのウェブページの識別子とし、前記クライアント装置はウェブページを前記サーバ装置にリクエストする際に、リクエスト元のウェブページの識別子を前記サーバ装置に送信し、前記サーバ装置はリクエスト元のウェブページの識別子と、リクエストされたウェブページの識別子を前記プロキシ装置に通知し、前記プロキシ装置は、前記サーバ装置から前記クライアント装置に送信されるウェブページに前記通知された識別子を挿入し、
    前記クライアント装置は挿入されたスクリプトコードをウェブブラウザで実行して、前記クライアント装置のローカルディスクに、ウェブページで処理の行われた時刻と、該ウェブページの識別子と、該ウェブページのリクエスト元である1つ前のウェブページの識別子とが含まれる処理の記録を保存することを特徴とするウェブアプリケーションの処理記録方法。
  11. 請求項10に記載の処理記録方法であって、前記クライアント装置がローカルディスクに保存した処理の記録が、該処理の記録を行ったスクリプトコードが含まれていたウェブページと同一のディレクトリにあるウェブページからのみ、該処理の記録の読み込み、書き込みができることを特徴とするウェブアプリケーションの処理記録方法。
  12. 請求項11に記載の処理記録方法であって、前記サーバ装置もしくは前記プロキシ装置は前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページを生成し、前記クライアント装置は前記サーバ装置もしくは前記プロキシ装置に該ウェブページをリクエストして取得し、該ウェブページをウェブブラウザで実行して処理の記録を読み込み、ウェブブラウザ上に表示することを特徴とするウェブアプリケーションの処理記録方法。
  13. 請求項12に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページには、処理の記録を行うウェブページが存在するディレクトリのリストと、処理の記録を読み込むスクリプトコードをロードするフレームがあり、ウェブブラウザは、該ディレクトリのリストから順次ディレクトリを選択して、そのディレクトリにある処理の記録を読み込むスクリプトコードを該フレームにロードし、該ディレクトリのウェブページの処理の記録を読み込み、ウェブブラウザに表示することを特徴とするウェブアプリケーションの処理記録方法。
  14. 請求項12に記載の処理記録方法であって、前記クライアント装置がローカルディスクに記録した情報を閲覧するウェブページは、読み込んだ処理の記録から、処理の記録のあるウェブページのリストと、各ウェブページの識別子、もしくは各ウェブページの処理の記録の時刻、もしくは各ウェブページへのリクエストをウェブブラウザが送信してからレスポンスを受信するまでの時間、もしくは各ウェブページをウェブブラウザ上に表示するのに要した時間、もしくは各ウェブページのレスポンスを受信してから次のリクエストを送信するまでに要した時間のうち、少なくとも1つをウェブブラウザ上に表示することを特徴とするウェブアプリケーションの処理記録方法。
JP2007273309A 2007-10-22 2007-10-22 ウェブアプリケーションの処理記録方法および処理記録装置 Expired - Fee Related JP4906672B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007273309A JP4906672B2 (ja) 2007-10-22 2007-10-22 ウェブアプリケーションの処理記録方法および処理記録装置
US12/028,272 US8505025B2 (en) 2007-10-22 2008-02-08 Method and apparatus for recording web application process

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007273309A JP4906672B2 (ja) 2007-10-22 2007-10-22 ウェブアプリケーションの処理記録方法および処理記録装置

Publications (2)

Publication Number Publication Date
JP2009104267A JP2009104267A (ja) 2009-05-14
JP4906672B2 true JP4906672B2 (ja) 2012-03-28

Family

ID=40564817

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007273309A Expired - Fee Related JP4906672B2 (ja) 2007-10-22 2007-10-22 ウェブアプリケーションの処理記録方法および処理記録装置

Country Status (2)

Country Link
US (1) US8505025B2 (ja)
JP (1) JP4906672B2 (ja)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100043011A1 (en) * 2008-08-18 2010-02-18 International Business Machines Corporation Method for tracking local storage of web pages
US20100083098A1 (en) * 2008-09-30 2010-04-01 Microsoft Corporation Streaming Information that Describes a Webpage
JP2011002870A (ja) 2009-06-16 2011-01-06 Hitachi Ltd ウェブアプリケーションの操作性評価・改善方法およびウェブシステム
US20100325615A1 (en) * 2009-06-23 2010-12-23 Myspace Inc. Method and system for capturing web-page information through web-browser plugin
US9336319B2 (en) * 2009-09-11 2016-05-10 Ebay Inc. Data file and rule driven synchronous or asynchronous document generation
JP5483965B2 (ja) 2009-09-14 2014-05-07 株式会社日立製作所 ウェブアプリケーションの操作記録・再生方法およびシステム
US8572252B2 (en) * 2010-04-09 2013-10-29 Microsoft Corporation Extensible dynamic performance instrumentation of pages
US9356991B2 (en) 2010-05-10 2016-05-31 Litera Technology Llc Systems and methods for a bidirectional multi-function communication module
US8938721B2 (en) 2010-07-21 2015-01-20 Microsoft Corporation Measuring actual end user performance and availability of web applications
JP5325177B2 (ja) 2010-08-09 2013-10-23 株式会社日立製作所 ウェブアプリケーションの操作記録方法およびシステム
US8966446B1 (en) * 2010-09-29 2015-02-24 A9.Com, Inc. Systems and methods of live experimentation on content provided by a web site
US8499065B2 (en) * 2010-09-30 2013-07-30 The Nielsen Company (Us), Llc Methods and apparatus to distinguish between parent and child webpage accesses and/or browser tabs in focus
US8892635B2 (en) * 2011-01-06 2014-11-18 Oracle International Corporation Techniques for detecting inactive browser windows
US9015226B2 (en) 2011-01-06 2015-04-21 Oracle International Corporation Techniques for detecting new browser windows
EP2485457A1 (en) * 2011-02-04 2012-08-08 Siemens Aktiengesellschaft A method for keeping a web session alive in a web application
US8924934B2 (en) 2011-02-04 2014-12-30 Oracle International Corporation Automated test tool interface
US8650284B2 (en) * 2011-02-28 2014-02-11 Oracle International Corporation User activity monitoring
US9424236B2 (en) 2011-04-26 2016-08-23 Oracle International Corporation Filtered Stylesheets
US8413047B2 (en) 2011-05-12 2013-04-02 Qualcomm Incorporated Concurrent parsing and processing of HTML and JAVASCRIPT®
US9244709B2 (en) 2011-06-13 2016-01-26 Microsoft Technology Licensing, Llc Automatic recognition of web application
JP5673391B2 (ja) * 2011-06-28 2015-02-18 富士通株式会社 情報処理装置、ログ処理方法、及びプログラム
US8745539B2 (en) * 2011-09-29 2014-06-03 Microsoft Corporation Automatic lifecycle management for pages on a mobile application
US9250872B2 (en) 2011-10-19 2016-02-02 Oracle International Corporation Task flow interface in a popup region
EP2798523A4 (en) * 2011-12-28 2015-09-09 Intel Corp PERSONA MANAGER FOR NETWORK COMMUNICATIONS
WO2013147226A1 (ja) * 2012-03-30 2013-10-03 日本電信電話株式会社 利用者体感品質推定装置、端末ボトルネック判定装置、類似操作抽出装置、及び方法、並びにプログラム
CN103377116B (zh) * 2012-04-27 2016-02-10 国际商业机器公司 用于在分布式信息系统中记录和分析日志的方法和装置
US8813029B2 (en) * 2012-05-24 2014-08-19 International Business Machines Corporation Remote card content management using synchronous server-side scripting
US20130326006A1 (en) * 2012-06-04 2013-12-05 Microsoft Corporation Managing large data sets through page based information tracking in multi-master environments
US9075877B2 (en) * 2012-06-29 2015-07-07 Citrix Systems Inc. System and method for transparent in-network adaptation of rich internet applications
US20140006616A1 (en) * 2012-06-29 2014-01-02 Nokia Corporation Method and apparatus for categorizing application access requests on a device
US20150082286A1 (en) * 2013-09-18 2015-03-19 Microsoft Corporation Real-time code instrumentation
EP3053013A4 (en) 2013-09-30 2017-07-26 Hewlett-Packard Development Company, L.P. Controlling proxy tool with injected widget code
JP6344994B2 (ja) * 2014-06-18 2018-06-20 キヤノン株式会社 情報処理端末、制御方法及びプログラム
US9584619B2 (en) 2014-08-21 2017-02-28 Sap Se Business web applications lifecycle management with multi-tasking ability
US10691299B2 (en) 2014-09-25 2020-06-23 Oracle International Corporation Display of hierarchical datasets using high-water mark scrolling
JP2017045238A (ja) * 2015-08-26 2017-03-02 株式会社リコー 情報処理システム、情報処理装置、及び情報処理方法
US11188941B2 (en) 2016-06-21 2021-11-30 The Nielsen Company (Us), Llc Methods and apparatus to collect and process browsing history
US10782890B2 (en) 2016-09-21 2020-09-22 International Business Machines Corporation Log snapshot procedure control on an automated data storage library
US10839852B2 (en) 2016-09-21 2020-11-17 International Business Machines Corporation Log snapshot control on an automated data storage library
US10481997B2 (en) * 2016-11-27 2019-11-19 Amazon Technologies, Inc. Distributed code tracing system
CN110515792B (zh) * 2019-07-23 2022-11-25 平安科技(深圳)有限公司 基于web版任务管理平台的监控方法、装置以及计算机设备
CN112395149B (zh) * 2019-08-15 2023-01-06 奇安信安全技术(珠海)有限公司 脚本行为的识别方法及装置、存储介质、计算机设备
US11853450B2 (en) 2019-11-05 2023-12-26 Saudi Arabian Oil Company Detection of web application anomalies using machine learning
CN112711463A (zh) * 2020-12-31 2021-04-27 浪潮云信息技术股份公司 一种定期清理gotty僵死进程的方法
CN113032355B (zh) * 2021-04-06 2023-06-09 上海英方软件股份有限公司 一种Web应用批量收集日志的方法及装置
US20220360595A1 (en) * 2021-05-10 2022-11-10 Webgap Inc System and method for secure web browsing
CN114281280B (zh) * 2021-12-31 2023-08-25 中企云链(北京)金融信息服务有限公司 日志处理方法以及装置、存储介质、电子装置
US12001817B1 (en) * 2022-04-19 2024-06-04 Amdocs Development Limited System, method, and computer program for managing navigational flows between application pages

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11110321A (ja) * 1997-09-30 1999-04-23 Nippon Telegr & Teleph Corp <Ntt> Wwwブラウザの機能拡張方法及び装置
JP3083805B2 (ja) 1998-08-28 2000-09-04 インターナショナル・ビジネス・マシーンズ・コーポレ−ション ブラウザ操作自動実行システムおよびその方法
CN1117320C (zh) * 1999-12-29 2003-08-06 国际商业机器公司 在多个程序之间进行数据事务的方法和设备
US6477575B1 (en) * 2000-09-12 2002-11-05 Capital One Financial Corporation System and method for performing dynamic Web marketing and advertising
EP1340132A4 (en) * 2000-11-02 2005-12-07 Netiq Corp SYSTEM AND METHOD FOR REPORT GENERATION AND COMMUNICATION ON MOUCHARD VALUES AT A CLIENT NODE
US20020099829A1 (en) * 2000-11-27 2002-07-25 Richards Kenneth W. Filter proxy system and method
WO2002048830A2 (en) * 2000-12-11 2002-06-20 Phlair, Inc. System and method for detecting and reporting online activity using real-time content-based network monitoring
US20020184363A1 (en) * 2001-04-20 2002-12-05 Steven Viavant Techniques for server-controlled measurement of client-side performance
US20030131052A1 (en) * 2002-01-10 2003-07-10 International Business Machines Corporatioin Method and system for HTTP time-on-page monitoring without client-side installation
JP2003228498A (ja) * 2002-02-05 2003-08-15 Toshiba Corp 履歴データ収集システムおよび履歴データ収集プログラム
US20050216844A1 (en) * 2004-03-03 2005-09-29 Error Brett M Delayed transmission of website usage data
US7519689B2 (en) * 2003-09-10 2009-04-14 Mohan Prabhuram Method and system to provide message communication between different browser based applications running on a desktop
US7685273B1 (en) * 2004-03-31 2010-03-23 Compuware Corporation Methods and apparatus for collecting and displaying performance metrics from a web site
JP4140916B2 (ja) 2005-12-22 2008-08-27 インターナショナル・ビジネス・マシーンズ・コーポレーション Webページにおける状態遷移を解析する方法
US20070255821A1 (en) * 2006-05-01 2007-11-01 Li Ge Real-time click fraud detecting and blocking system
US8200555B2 (en) * 2006-06-08 2012-06-12 International Business Machines Corporation Method to monitor amount of usage of applications in a server and their billing
US20080046562A1 (en) * 2006-08-21 2008-02-21 Crazy Egg, Inc. Visual web page analytics
US8522257B2 (en) * 2006-11-15 2013-08-27 Yahoo! Inc. System and method for context information retrieval
US9021140B2 (en) * 2007-03-12 2015-04-28 Citrix Systems, Inc. Systems and methods for error detection
US7805728B2 (en) * 2007-03-16 2010-09-28 Microsoft Corporation Browser elements for communicating with other browser elements and with external applications
US20090077565A1 (en) * 2007-08-17 2009-03-19 Joseph Frazier System and method for enhancing interactive web-browsing experience
US8271836B2 (en) * 2007-09-27 2012-09-18 Microsoft Corporation Capturing diagnostics in web browser applications

Also Published As

Publication number Publication date
US20090106769A1 (en) 2009-04-23
JP2009104267A (ja) 2009-05-14
US8505025B2 (en) 2013-08-06

Similar Documents

Publication Publication Date Title
JP4906672B2 (ja) ウェブアプリケーションの処理記録方法および処理記録装置
JP5135135B2 (ja) アプリケーションの実行管理方法、アプリケーションを実行するサーバ計算機及び中継装置
US11409645B1 (en) Intermittent failure metrics in technological processes
JP5199003B2 (ja) 管理装置及び計算機システム
US8347269B2 (en) Method, system and computer program for debugging software applications in a web environment
US20070255979A1 (en) Event trace conditional logging
US20100153431A1 (en) Alert triggered statistics collections
CN106021079A (zh) 一种基于用户频繁访问序列模型的Web应用性能测试方法
US20180307735A1 (en) Integrating relational and non-relational databases
EP2374078A1 (en) Method for server-side logging of client browser state through markup language
CN112486708B (zh) 页面操作数据的处理方法和处理系统
US11681707B1 (en) Analytics query response transmission
JP5476326B2 (ja) ウェブ操作記録・再現方法および装置
US20100017486A1 (en) System analyzing program, system analyzing apparatus, and system analyzing method
US20130263156A1 (en) Operation log collection method and device
US10705949B2 (en) Evaluation of library test suites using mutation testing
JP6902994B2 (ja) 情報処理システム、情報処理方法、情報処理装置、及びプログラム
JP2010146260A (ja) 再現処理方法、計算機システムおよびプログラム
US20070192324A1 (en) Method and device for advanced cache management in a user agent
WO2014156825A1 (ja) ログ出力制御装置、方法及びプログラム
CN113010208A (zh) 一种版本信息的生成方法、装置、设备及存储介质
CN116126808A (zh) 行为日志记录方法、装置、计算机设备和存储介质
JP4845001B2 (ja) 情報処理装置及び同装置に用いるプログラム
CN114371969B (zh) 一种页面性能测试方法、装置、电子设备及存储介质
CN115686904A (zh) 网页诊断方法、设备及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100727

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110927

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110928

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111128

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111213

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120110

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150120

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150120

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees