特許第6018080号(P6018080)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特許6018080新しいブラウザウィンドウを検出するための技術
<>
  • 特許6018080-新しいブラウザウィンドウを検出するための技術 図000002
  • 特許6018080-新しいブラウザウィンドウを検出するための技術 図000003
  • 特許6018080-新しいブラウザウィンドウを検出するための技術 図000004
  • 特許6018080-新しいブラウザウィンドウを検出するための技術 図000005
  • 特許6018080-新しいブラウザウィンドウを検出するための技術 図000006
  • 特許6018080-新しいブラウザウィンドウを検出するための技術 図000007
  • 特許6018080-新しいブラウザウィンドウを検出するための技術 図000008
  • 特許6018080-新しいブラウザウィンドウを検出するための技術 図000009
  • 特許6018080-新しいブラウザウィンドウを検出するための技術 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6018080
(24)【登録日】2016年10月7日
(45)【発行日】2016年11月2日
(54)【発明の名称】新しいブラウザウィンドウを検出するための技術
(51)【国際特許分類】
   G06F 13/00 20060101AFI20161020BHJP
   G06F 15/00 20060101ALI20161020BHJP
   G06F 3/048 20130101ALI20161020BHJP
【FI】
   G06F13/00 550A
   G06F15/00 410A
   G06F3/048
【請求項の数】14
【全頁数】21
(21)【出願番号】特願2013-548467(P2013-548467)
(86)(22)【出願日】2012年1月3日
(65)【公表番号】特表2014-508986(P2014-508986A)
(43)【公表日】2014年4月10日
(86)【国際出願番号】US2012020106
(87)【国際公開番号】WO2012154221
(87)【国際公開日】20121115
【審査請求日】2014年12月26日
(31)【優先権主張番号】12/985,799
(32)【優先日】2011年1月6日
(33)【優先権主張国】US
【前置審査】
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】サリバン,ブレイク
(72)【発明者】
【氏名】ガオ,ユアン
(72)【発明者】
【氏名】ワン,ホンビン
【審査官】 古河 雅輝
(56)【参考文献】
【文献】 特表2007−510200(JP,A)
【文献】 再公表特許第2004/057483(JP,A1)
【文献】 米国特許出願公開第2007/0271382(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01
G06F 3/048 − 3/0482
G06F 3/0485
G06F 3/0487− 3/0489
G06F 3/14 − 3/153
G06F 13/00
G06F 15/00
(57)【特許請求の範囲】
【請求項1】
サーバコンピュータシステムが、クライアントコンピュータシステム上で実行されるウェブブラウザのウィンドウから発信された、ユニフォームリソースロケータ(URL)および第1のウィンドウ識別子を含む第1の要求を受け取ることと、
前記サーバコンピュータシステムが、前記クライアントコンピュータシステム上で実行される前記ウェブブラウザの第2のウィンドウから発信された第2の要求を受け取ることとを含み、前記第2の要求は、前記URLおよび前記第1のウィンドウに対応する第1のウィンドウ識別子を含み、
前記第2の要求がHTTP GETまたはHTTP HEAD要求でであるかどうかを判断することと、
前記サーバコンピュータシステムが、前記第1の要求に関連付けられたループバック識別子を生成することと、
前記サーバコンピュータシステムが、前記要求に関連付けられるユーザセッションに前記ループバック識別子を格納することと、
前記サーバコンピュータシステムが、前記URL、前記第1のウィンドウ識別子、および前記ループバック識別子を含むスクリプトを生成することと、
前記サーバコンピュータシステムが、前記ウェブブラウザの前記第2のウィンドウへ前記スクリプトを送ることとを含み、前記スクリプトは前記クライアントコンピュータシステムによってキャッシュ可能でないように構成されており、
前記クライアントコンピュータシステム上で実行される前記ウェブブラウザに、前記第2のウィンドウが新たなウィンドウであるか既存のウィンドウであるかの判断を容易にするために前記スクリプトを実行させることを含み、前記判断は、前記スクリプトに含まれる前記第1のウィンドウ識別子と、前記第2のウィンドウの実際のウィンドウ識別子との比較を含み、
第3の要求を前記第2のウィンドウから前記サーバコンピュータシステムに送信することを可能にすることを含み、前記第3の要求は、
前記スクリプトに含まれる前記第1のウィンドウ識別子と前記第2のウィンドウの前記実際のウィンドウ識別子とが一致する場合に、前記URLと、前記第1のウィンドウに対応する前記第1のウィンドウ識別子と、前記ループバック識別子とを含み、
前記スクリプトに含まれる前記第1のウィンドウ識別子と前記第2のウィンドウの前記実際のウィンドウ識別子とが一致しない場合に、前記URLと、前記第2のウィンドウの前記実際のウィンドウ識別子と、前記ループバック識別子とを含む、方法。
【請求項2】
サーバコンピュータシステムが、クライアントコンピュータシステム上で実行されるウェブブラウザのウィンドウから発信された、ユニフォームリソースロケータ(URL)および第1のウィンドウ識別子を含む第1の要求を受け取ることと、
前記サーバコンピュータシステムが、前記クライアントコンピュータシステム上で実行される前記ウェブブラウザの第2のウィンドウから発信された第2の要求を受け取ることとを含み、前記第2の要求は、前記URLおよび前記第1のウィンドウに対応する第1のウィンドウ識別子を含み、
前記サーバコンピュータシステムが、前記第1の要求に関連付けられたループバック識別子を生成することと、
前記サーバコンピュータシステムが、前記要求に関連付けられるユーザセッションに前記ループバック識別子を格納することと、
前記サーバコンピュータシステムが、前記URL、前記第1のウィンドウ識別子、および前記ループバック識別子を含むスクリプトを生成することと、
前記サーバコンピュータシステムが、前記ウェブブラウザの前記第2のウィンドウへ前記スクリプトを送ることとを含み、前記スクリプトは前記クライアントコンピュータシステムによってキャッシュ可能でないように構成されており、
前記クライアントコンピュータシステム上で実行される前記ウェブブラウザに、前記第2のウィンドウが新たなウィンドウであるか既存のウィンドウであるかの判断を容易にするために前記スクリプトを実行させることを含み、前記判断は、前記スクリプトに含まれる前記第1のウィンドウ識別子と、前記第2のウィンドウの実際のウィンドウ識別子との比較を含み、
第3の要求を前記第2のウィンドウから前記サーバコンピュータシステムに送信することを可能にすることを含み、前記第3の要求は、
前記スクリプトに含まれる前記第1のウィンドウ識別子と前記第2のウィンドウの前記実際のウィンドウ識別子とが一致する場合に、前記URLと、前記第1のウィンドウに対応する前記第1のウィンドウ識別子と、前記ループバック識別子とを含み、
前記スクリプトに含まれる前記第1のウィンドウ識別子と前記第2のウィンドウの前記実際のウィンドウ識別子とが一致しない場合に、前記URLと、前記第2のウィンドウの前記実際のウィンドウ識別子と、前記ループバック識別子とを含む、方法。
【請求項3】
前記ループバック識別子はランダムに生成される数である、請求項1または2に記載の方法。
【請求項4】
前記第1の要求はハイパーテキスト転送プロトコル(HTTP)要求である、請求項1から3のいずれかに記載の方法。
【請求項5】
前記スクリプトは、前記第2の要求がHTTP GETまたはHEAD要求である場合に、前記第2のウィンドウに送られる、請求項4に記載の方法。
【請求項6】
前記第2の要求がHTTP GETまたはHTTP HEAD要求であるか否かを判断することをさらに含み、
前記第2の要求がHTTP GETまたはHTTP HEAD要求である場合に、前記スクリプトは前記第2のウィンドウに送信される、請求項2に記載の方法。
【請求項7】
前記スクリプトに含まれる前記第1のウィンドウ識別子が、現在のウィンドウの識別子と一致する場合、前記第2の要求は、前記URLと、前記ループバック識別子と、前記第1のウィンドウ識別子とを含む、請求項1から6のいずれかに記載の方法。
【請求項8】
前記スクリプトに含まれる前記第1のウィンドウ識別子が、前記第2の前記ウィンドウの識別子と一致しない場合、前記第2の要求は、前記URLと、前記ループバック識別子と、前記第1のウィンドウ識別子とは異なる第2のウィンドウ識別子とを含み、前記第2のウィンドウ識別子は、前記現在のウィンドウの識別子に対応する、請求項7に記載の方法。
【請求項9】
前記サーバコンピュータシステムが、前記第2の要求を受け取ることと、
前記サーバコンピュータシステムが、前記第2の要求に含まれる前記ループバック識別子を前記ユーザセッションに格納される前記ループバック識別子とマッチングすることと、
前記ループバック識別子を前記ユーザセッションから除去することとをさらに含む、請求項8に記載の方法。
【請求項10】
前記第2の要求が前記第1のウィンドウ識別子を含む場合、前記サーバコンピュータシステムが、前記第2のウィンドウが新しいウィンドウであると判断することと、
前記第2の要求が前記第2のウィンドウ識別子を含む場合、前記サーバコンピュータシステムが、前記第2のウィンドウが既存のウィンドウであると判断することとをさらに含む、請求項9に記載の方法。
【請求項11】
前記サーバコンピュータシステムが、前記第2のウィンドウが前記新しいウィンドウであるかまたは前記既存のウィンドウであるかどうかに基づき、前記URLについてのコンテンツをレンダリングすることと、
前記サーバコンピュータシステムが、レンダリングされた前記コンテンツを前記第2のウィンドウに送ることとをさらに含む、請求項10に記載の方法。
【請求項12】
サーバコンピュータシステムであって、プロセッサを含み、前記プロセッサは、
クライアントコンピュータシステム上で実行されるウェブブラウザのウィンドウから発信された、ユニフォームリソースロケータ(URL)および第1のウィンドウ識別子を含む第1の要求を受け取り、
前記サーバコンピュータシステムが、前記クライアントコンピュータシステム上で実行される前記ウェブブラウザの第2のウィンドウから発信された第2の要求を受け取るように構成されており、前記第2の要求は、前記URLおよび前記第1のウィンドウに対応する第1のウィンドウ識別子を含み、
前記プロセッサは、
前記第1の要求に関連付けられるループバック識別子を生成し、
前記要求に関連付けられるユーザセッションに前記ループバック識別子を格納し、
前記URL、前記第1のウィンドウ識別子、および前記ループバック識別子を含むスクリプトを生成し、かつ
前記ウェブブラウザの前記第2のウィンドウへ前記スクリプトを送り、
前記クライアントコンピュータシステム上で実行される前記ウェブブラウザに、前記第2のウィンドウが新たなウィンドウであるか既存のウィンドウであるかの判断を容易にするために前記スクリプトを実行させるように構成されており、前記判断は、前記スクリプトに含まれる前記第1のウィンドウ識別子と、前記第2のウィンドウの実際のウィンドウ識別子との比較を含み、
前記プロセッサは、
第3の要求を前記第2のウィンドウから前記サーバコンピュータシステムに送信することを可能にするように構成されており、前記第3の要求は、
前記スクリプトに含まれる前記第1のウィンドウ識別子と前記第2のウィンドウの前記実際のウィンドウ識別子とが一致する場合に、前記URLと、前記第1のウィンドウに対応する前記第1のウィンドウ識別子と、前記ループバック識別子とを含み、
前記スクリプトに含まれる前記第1のウィンドウ識別子と前記第2のウィンドウの前記実際のウィンドウ識別子とが一致しない場合に、前記URLと、前記第2のウィンドウの前記実際のウィンドウ識別子と、前記ループバック識別子とを含む、サーバコンピュータシステム。
【請求項13】
前記プロセッサは、
前記第2の要求がHTTP GETまたはHTTP HEAD要求であるか否かを判断するようにさらに構成されており、
前記第2の要求がHTTP GETまたはHTTP HEAD要求である場合に、前記スクリプトは前記第2のウィンドウに送信される、請求項12に記載のサーバコンピュータシステム。
【請求項14】
請求項1から11のいずれかに記載の方法を1つ以上のプロセッサに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願への相互参照
本願は、2011年1月6日に出願された、「新しいブラウザウィンドウを検出するための技術(TECHNIQUES FOR DETECTING NEW BROWSER WINDOWS)」という名称の米国出願番号第12/985,799号の利益を主張する。その全内容は、すべての目的について本願明細書において参照により援用される。本開示は、2011年1月6日に出願された「非アクティブなブラウザウィンドウを検出するための技術(TECHNIQUES FOR DETECTING NEW BROWSER WINDOWS)」という名称の、共通に譲渡された同時係属中の米国特許出願番号第12/985,805号に関連付けられる。当該同時係属中の米国特許出願は、すべての目的について本願明細書において全文参照により援用される。
【背景技術】
【0002】
背景
本開示は一般的にウェブアプリケーションに関し、特にこのようなアプリケーションにおいてクライアント側のブラウザウィンドウのライフサイクルをトラッキングするための技術に関する。
【0003】
一般的に言うと、ウェブアプリケーションは、サーバ上にホスティングされるソフトウェアアプリケーションであって、クライアント側のウェブブラウザを介してユーザによってアクセス可能なものである。典型的な使用の場合では、ユーザはクライアント側のブラウザウィンドウを開き、当該アプリケーションの最初のウェブページに進む。ユーザはそこから、(たとえばページマークアップに埋め込まれたフォーム要素を介して)情報を入力し得る、および/または何らかのタスクもしくは処理を完了するために当該アプリケーションのさらに別のページに進み得る。
【発明の概要】
【発明が解決しようとする課題】
【0004】
いくつかの場合では、ユーザは、当該アプリケーションにアクセスしながら、既存のブラウザウィンドウの文脈から新しいブラウザウィンドウを開くことがある。これにより、ブラウザはサーバに、既存のウィンドウに表示されるアプリケーションページについて新しい要求を送る。現在の実現例では、サーバは一般的に、この新しいウィンドウのイベントと、ユーザが既存のウィンドウをリロード/リフレッシュする状態とを区別することができない。いずれの場合でも、サーバが受け取った要求は、既存のウィンドウから発信されたように思われる。サーバは典型的に、各ブラウザウィンドウごとに別個のアプリケーション状態情報を維持しているのでページをレンダリングする前にどのウィンドウを取り扱っているのかを知る必要があるため、これは問題となり得る。たとえば、サーバが誤ってクライアント要求が既存のウィンドウのリロードに対応すると判断した場合(実際には新しいウィンドウを開くことに対応する場合)、サーバは、要求を処理する際に、既存のウィンドウのアプリケーション状態を意図せず修正してしまう場合がある。
【0005】
他の場合では、ユーザは、アプリケーションにアクセスするために用いたブラウザウィンドウを閉じるか、またはこのウィンドウ内で当該アプリケーションから離れる(たとえばサードパーティのウェブサイトへ離れる)ことがある。現在の実現例ではサーバは一般的に、これらの状態と、ユーザが同じアプリケーション中の別のウェブページに(当該ウィンドウ内で)進んだ状態とを区別することができない。いずれの場合でも、サーバは単に、ウィンドウ内のアプリケーションページがアンロード/破棄されたという通知をブラウザから受け取るだけである。これにより、サーバが、各ブラウザウィンドウごとにサーバによって維持されるメモリリソース(たとえば、アプリケーション状態情報)をいつ解放するのかを決定するのが困難になり得る。たとえば、ブラウザウィンドウがまだアプリケーションにアクセスするのに用いられているとサーバが誤って判断すると(実際にはユーザがウィンドウを閉じたかまたは当該アプリケーションから離れた場合)、サーバは、必要とされるよりも長く当該ウィンドウについてメモリにリソースを保持し得る。これは効率およびセキュリティの観点から望ましくない。
【課題を解決するための手段】
【0006】
概要
本発明の実施例は、ウェブアプリケーションの文脈においてクライアント側のブラウザウィンドウのライフサイクルをトラッキングするための技術を提供する。実施例の一集合では、ウェブアプリケーションのサーバコンポーネントは、クライアント側のブラウザウィンドウから発信された要求を受け取り得る。この要求は、リソースロケータ(たとえばURL)およびウィンドウ識別子を含む。これに応答して、サーバコンポーネントは、ウィンドウの実際の識別子/名前を取得するためにスクリプトをウィンドウに送り得る。当該スクリプトによって返された実際の識別子および最初の要求に含まれたウィンドウ識別子に基づき、サーバコンポーネントは、このウィンドウが新しいウィンドウであるか、または既存のウィンドウであるかを判断し得るとともに、上記要求を適切なように処理し得る。
【0007】
実施例の別の集合では、サーバコンポーネントは、第1のクライアント側のブラウザウィンドウにおけるアプリケーションページがアンロード/破棄されたという通知を受け取り得る。これに応答して、サーバコンポーネントは、第1のウィンドウを失効時間に関連付け得るとともに、潜在的に非アクティブである(すなわち閉じられるかまたはもはやアプリケーションにアクセスするのに用いられていない)ウィンドウの「失効」リストに第1のウィンドウを加え得る。第1のウィンドウが失効リストにある間に第1のウィンドウからサーバコンポーネントが新しい要求を受け取った場合、サーバコンポーネントは、第1のウィンドウがアクティブであると識別して(すなわちアプリケーションにアクセスするようまだ用いられていると識別して)、第1のウィンドウを当該リストから除去し得る。第1のウィンドウが失効リストにある間に第2のウィンドウからサーバコンポーネントが新しい要求を受け取った場合、サーバコンポーネントは、第2のウィンドウからの要求を受け取った時間と、第1のウィンドウに関連付けられた失効時間とを比較し得る。当該要求の時間が失効時間よりも遅い場合、サーバコンポーネントは、第1のウィンドウが非アクティブであると識別し得るとともに、第1のウィンドウに関連付けられるすべてのリソースを解放し得る。
【0008】
実施例のさらに別の集合では、サーバコンポーネントは、クライアント側のブラウザについて最後に残っているウィンドウにおけるアプリケーションページがアンロード/破棄されたという通知を受け取り得る。これに応答して、サーバコンポーネントは、当該ブラウザに関連付けられるユーザセッションについてのセッションタイムアウト変数を第1の持続時間(たとえば1時間)から第1の持続時間より短い第2の持続時間(たとえば10分)に修正し得る。次いでサーバコンポーネントは、セッションタイムアウト変数のカウントダウンを始め得る。第2の持続時間が失効する前に最後に残っているウィンドウからサーバコンポーネントが要求を受け取れば、サーバコンポーネントは、当該ウィンドウがアクティブであると識別し得るとともに、セッションタイムアウト変数を第1の持続時間にリセットし得る。第2の持続時間が失効する前に、最後に残っているウィンドウから要求が受け取られなければ、サーバコンポーネントは当該ウィンドウが非アクティブであると識別し得、このウィンドウに関連付けられるすべてのリソースを解放し得、かつユーザセッションに関連付けられるすべてのリソースを解放し得る。
【0009】
本発明の一実施例に従うと、サーバコンピュータシステムが、クライアントコンピュータシステム上で実行されるウェブブラウザのウィンドウから発信された、ユニフォームリソースロケータ(URL)および第1のウィンドウ識別子を含む第1の要求を受け取ることと、上記サーバコンピュータシステムが、ループバック識別子を生成することと、上記サーバコンピュータシステムが、上記要求に関連付けられるユーザセッションに上記ループバック識別子を格納することとを含む方法が提供される。上記方法はさらに、上記サーバコンピュータシステムが、上記URL、上記第1のウィンドウ識別子、および上記ループバック識別子を含むスクリプトを生成することと、上記サーバコンピュータシステムが、上記第1の要求を発信した上記ウィンドウへ上記スクリプトを送ることとを含む。
【0010】
一実施例では、上記スクリプトは、上記第1の要求を発信した上記ウィンドウが新しいウィンドウであるかまたは既存のウィンドウであるかどうかの判断を促進するよう、上記クライアントコンピュータシステム上で実行される上記ウェブブラウザによって実行可能である。
【0011】
一実施例では、上記ループバック識別子はランダムに生成される数である。
一実施例では、上記第1の要求はハイパーテキスト転送プロトコル(HTTP)要求である。
【0012】
一実施例では、上記スクリプトは、上記第1の要求がHTTP GETまたはHEAD要求である場合にのみ、上記第1の要求を発信した上記ウィンドウに送られる。
【0013】
一実施例では、上記スクリプトは、上記クライアントコンピュータシステム上において、上記第1のウィンドウ識別子が上記第1の要求を発信した上記ウィンドウの識別子と一致するかどうかを判断し、かつ当該判断に基づき、第2の要求を上記サーバコンピュータシステムに送るよう構成されている。
【0014】
一実施例では、上記第1のウィンドウ識別子が、上記第1の要求を発信した上記ウィンドウの識別子と一致する場合、上記第2の要求は、上記URLと、上記ループバック識別子と、上記第1のウィンドウ識別子とを含む。
【0015】
一実施例では、上記第1のウィンドウ識別子が、上記第1の要求を発信した上記ウィンドウの識別子と一致しない場合、上記第2の要求は、上記URLと、上記ループバック識別子と、上記第1のウィンドウ識別子とは異なる第2のウィンドウ識別子とを含む。
【0016】
一実施例では、上記方法は、上記サーバコンピュータシステムが、上記第2の要求を受け取ることと、上記サーバコンピュータシステムが、上記第2の要求に含まれる上記ループバック識別子を上記ユーザセッションに格納される上記ループバック識別子とマッチングすることと、上記ループバック識別子を上記ユーザセッションから除去することとをさらに含む。
【0017】
一実施例では、上記方法は、上記第2の要求が上記第1のウィンドウ識別子を含む場合、上記サーバコンピュータシステムが、上記第1の要求を発信した上記ウィンドウが新しいウィンドウであると判断することと、上記第2の要求が上記第2のウィンドウ識別子を含む場合、上記サーバコンピュータシステムが、上記第1の要求を発信した上記ウィンドウが既存のウィンドウであると判断することとをさらに含む。
【0018】
一実施例では、上記方法は、上記サーバコンピュータシステムが、上記第1の要求を発信した上記ウィンドウが新しいウィンドウであるかまたは既存のウィンドウであるかどうかに基づき、上記URLについてのコンテンツをレンダリングすることと、上記サーバコンピュータシステムが、レンダリングされた上記コンテンツを上記第1の要求を発信した上記ウィンドウに送ることとをさらに含む。
【0019】
本発明の別の実施例に従うと、プロセッサによって実行可能な命令を格納する一時的でないコンピュータ読取可能記憶媒体が提供される。上記命令は、クライアントコンピュータシステム上で実行されるウェブブラウザのウィンドウから発信された、ユニフォームリソースロケータ(URL)および第1のウィンドウ識別子を含む第1の要求を上記プロセッサに受け取らせる命令と、ループバック識別子を上記プロセッサに生成させる命令と、上記プロセッサに、上記要求に関連付けられるユーザセッションに上記ループバック識別子を格納させる命令とを含む。上記命令はさらに、上記URL、上記第1のウィンドウ識別子、および上記ループバック識別子を含むスクリプトを上記プロセッサに生成させる命令と、上記プロセッサに、上記第1の要求を発信した上記ウィンドウへ上記スクリプトを送らせる命令とを含む。
【0020】
本発明の別の実施例に従うと、サーバコンピュータシステムが提供される。上記サーバコンピュータシステムはプロセッサを含み、上記プロセッサは、クライアントコンピュータシステム上で実行されるウェブブラウザのウィンドウから発信された、ユニフォームリソースロケータ(URL)および第1のウィンドウ識別子を含む第1の要求を受け取り、ループバック識別子を生成し、かつ上記要求に関連付けられるユーザセッションに上記ループバック識別子を格納するよう構成されている。上記プロセッサはさらに、上記URL、上記第1のウィンドウ識別子、および上記ループバック識別子を含むスクリプトを生成し、かつ上記第1の要求を発信した上記ウィンドウへ上記スクリプトを送るよう構成されている。
【0021】
明細書の残りの部分および添付の図面への参照によって、本願明細書において開示される実施例の性質および利点がさらに理解され得る。
【図面の簡単な説明】
【0022】
図1】本発明の実施例に従ったシステムを示す簡略ブロック図である。
図2】本発明の実施例に従った、クライアント側のブラウザウィンドウが新しいウィンドウまたは既存のウィンドウであるかどうかを判断するための処理を示すフロー図である。
図3】本発明の実施例に従った、クライアント側のスクリプトによって行われる処理を示すフロー図である。
図4】本発明の実施例に従った、クライアント側のブラウザウィンドウが新しいウィンドウまたは既存のウィンドウであるかどうかを判断するためのさらに別の処理を示すフロー図である。
図5】本発明の実施例に従った、クライアント側のブラウザウィンドウが非アクティブであるかどうかを判断するための処理を示すフロー図である。
図6】本発明の実施例に従った、クライアント側のブラウザウィンドウが非アクティブであるかどうかを判断するためのさらに別の処理を示すフロー図である。
図7】本発明の実施例に従った、クライアント側ブラウザの最後に残っているウィンドウが非アクティブであるかどうかを判断するための処理を示すフロー図である。
図8】本発明の実施例に従ったシステム環境を示す簡略ブロック図である。
図9】本発明の実施例に従ったコンピュータシステムを示す簡略ブロック図である。
【発明を実施するための形態】
【0023】
詳細な説明
以下の記載において、本発明の実施例が理解されるように説明目的のために多くの詳細を記載する。しかしながら、ある実施例がこれらの詳細のうちのいくつかがなくても実施され得るということは当業者には明らかであろう。
【0024】
本発明の実施例は、ウェブアプリケーションの文脈においてクライアント側のブラウザウィンドウのライフサイクルをトラッキングするための技術を提供する。実施例の一集合では、ウェブアプリケーションのサーバコンポーネントは、クライアント側のブラウザウィンドウから発信された要求を受け取り得る。この要求は、リソースロケータ(たとえばURL)およびウィンドウ識別子を含む。これに応答して、サーバコンポーネントは、ウィンドウの実際の識別子/名前を取得するためにスクリプトをウィンドウに送り得る。当該スクリプトによって返された実際の識別子および最初の要求に含まれたウィンドウ識別子に基づき、サーバコンポーネントは、このウィンドウが新しいウィンドウであるか、または既存のウィンドウであるかを判断し得るとともに、上記要求を適切なように処理し得る。
【0025】
実施例の別の集合では、サーバコンポーネントは、第1のクライアント側のブラウザウィンドウにおけるアプリケーションページがアンロード/破棄されたという通知を受け取り得る。これに応答して、サーバコンポーネントは、第1のウィンドウを失効時間に関連付け得るとともに、潜在的に非アクティブである(すなわち閉じられるかまたはもはやアプリケーションにアクセスするのに用いられていない)ウィンドウの「失効」リストに第1のウィンドウを加え得る。第1のウィンドウが失効リストにある間に第1のウィンドウからサーバコンポーネントが新しい要求を受け取った場合、サーバコンポーネントは、第1のウィンドウがアクティブであると識別して(すなわちアプリケーションにアクセスするようまだ用いられていると識別して)、第1のウィンドウを当該リストから除去し得る。第1のウィンドウが失効リストにある間に第2のウィンドウからサーバコンポーネントが新しい要求を受け取った場合、サーバコンポーネントは、第2のウィンドウからの要求を受け取った時間と、第1のウィンドウに関連付けられた失効時間とを比較し得る。当該要求の時間が失効時間よりも遅い場合、サーバコンポーネントは、第1のウィンドウが非アクティブであると識別し得るとともに、第1のウィンドウに関連付けられるすべてのリソースを解放し得る。
【0026】
実施例のさらに別の集合では、サーバコンポーネントは、クライアント側のブラウザについて最後に残っているウィンドウにおけるアプリケーションページがアンロード/破棄されたという通知を受け取り得る。これに応答して、サーバコンポーネントは、当該ブラウザに関連付けられるユーザセッションについてのセッションタイムアウト変数を第1の持続時間(たとえば1時間)から第1の持続時間より短い第2の持続時間(たとえば10分)に修正し得る。次いでサーバコンポーネントは、セッションタイムアウト変数のカウントダウンを始め得る。第2の持続時間が失効する前に最後に残っているウィンドウからサーバコンポーネントが要求を受け取れば、サーバコンポーネントは、当該ウィンドウがアクティブであると識別し得るとともに、セッションタイムアウト変数を第1の持続時間にリセットし得る。第2の持続時間が失効する前に、最後に残っているウィンドウから要求が受け取られなければ、サーバコンポーネントは当該ウィンドウが非アクティブであると識別し得、このウィンドウに関連付けられるすべてのリソースを解放し得、かつユーザセッションに関連付けられるすべてのリソースを解放し得る。
【0027】
図1は、本発明のある実施例に従ったシステム100を示す簡略ブロック図である。示されるように、システム100は、サーバ104と通信するクライアント102を含み得る。クライアント102は、ウェブブラウザ106を実行できる任意のタイプの電子装置またはシステムであり得る(たとえば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、携帯情報端末(PDA)、セットトップボックス、ビデオゲームシステムなど)。利用可能なウェブブラウザの例は、Mozilla Firefox(登録商標)、Microsoft Internet Explorer(登録商標)、Google Chrome(登録商標)、およびApple Safari(登録商標)などを含む。さまざまな実施例では、ウェブブラウザ106は、サーバ104がホスティングするウェブアプリケーションのようなウェブリソースにアクセスするよう、クライアント102の1人以上のユーザによって動作され得る。
【0028】
ある実施例では、ウェブブラウザ106は、複数のブラウザウィンドウ108を介してユーザが複数のウェブリソースに同時にアクセスするのを可能にし得る。たとえば、ユーザはブラウザ106において第1のブラウザウィンドウを開き、第1のウェブページ「A」に進み得る。第1のブラウザウィンドウの文脈から、このユーザは、1つ以上の付加的な(新しい)ブラウザウィンドウを開き得、これによりウェブページAの付加的なインスタンスが取得されて新しいウィンドウにおいてレンダリングされる。そこから、ユーザは開いているウィンドウのいずれかを用いて他のウェブページに進み得る。ユーザはさらに、ユーザが自身のブラウジングセッションを終えると、開いているウィンドウのうち1つ以上を閉じ得る。
【0029】
本願明細書において用いられるように、「ブラウザウィンドウ」および「ウィンドウ」という用語は、リソース識別子(たとえばURL)によって識別されたウェブコンテンツを表示することが可能なブラウザ106の任意のビューポートを指し得る。典型的にはタブは単独のウィンドウとは考えられないが、特定の実施例では「ブラウザウィンドウ」および「ウィンドウ」という用語は、ブラウザの「タブ」を指し得る。
【0030】
サーバ104は、アプリケーション114のようなウェブアプリケーションをホスティングすることが可能な任意のタイプの電子装置またはシステムであり得る。実施例の一集合では、サーバ104は、ウェブブラウザ106とウェブアプリケーション114との間の相互作用を扱うとともに、動的なウェブページ作製、ロードバランシング、およびセキュリティなどといったさまざまなサービスを提供するよう構成されるアプリケーションサーバコンポーネント110を含み得る。特定の実施例では、アプリケーションサーバ110は、ハイパーテキスト転送プロトコル(HTTP)要求をクライアント102のブラウザ106から受け取るとともに、それらの要求をアプリケーションサーバ110および/またはアプリケーション114に処理のために渡すよう構成されるウェブサーバコンポーネント112を含み得る。ウェブサーバ112はさらにHTTP応答(たとえば、レンダリングされたHTML)をブラウザ106に返し得る。
【0031】
実施例の一集合では、アプリケーションサーバ110は、ウェブブラウザ106のウィンドウ108のようなクライアント側のブラウザウィンドウのライフサイクルをトラッキングするよう構成され得る。たとえば一実施例では、アプリケーションサーバ110は、アプリケーション114へのアクセス中にブラウザ106のユーザが新しいブラウザウィンドウを開いた時を検出し得るとともに、当該新しいウィンドウイベントと、既存のブラウザウィンドウに対するリロード/リフレッシュイベントとを区別し得る。別の実施例では、アプリケーションサーバ110は、ブラウザ106のユーザがウィンドウを閉じるかまたはアプリケーション114から離れることによってブラウザウィンドウを非アクティブにした時を検出し得るとともに、それらの状態を、ユーザが単にアプリケーション114の別のウェブページに進んだだけの状態と区別し得る。これらの場合においてアプリケーションサーバ110が行う具体的な処理の詳細を以下の図2図7に関連して説明する。
【0032】
システム100は、クライアント102およびサーバ104に加えて、データ格納部116をさらに含み得る。データ格納部116は、サーバ104に通信可能に結合され得るとともに、ウェブアプリケーション114といったサーバ104のさまざまなコンポーネントのためにデータ格納サービスを提供し得る。サーバ104およびデータ格納部116は、システム100において別個のエンティティとして示されているが、当業者であれば、サーバ104およびデータ格納部116は単一の物理的な機械または別個の物理的な機械に対応し得るということを理解するであろう。
【0033】
図1は例示であって、本発明の実施例を限定することを意図していないということが理解されるべきである。たとえば、システム100のさまざまなエンティティは各々、付加的な機能を有してもよく、または具体的に記載されない付加的なコンポーネントを含んでもよい。さらに、単一のクライアント、1つのサーバ、および1つのデータ格納部が示されるが、任意の数のこのようなエンティティがサポートされ得る。当業者であれば、多くの変形例、修正例、および代替例を認識するであろう。
【0034】
新しいクライアント側のブラウザウィンドウの検出
上で示されるように、ある実施例ではアプリケーションサーバ110は、ブラウザ106のユーザが、アプリケーション114へのアクセス中に新しいブラウザウィンドウを開いた時を判断できるとともに、その新しいウィンドウイベントを既存のブラウザウィンドウに対するリロード/リフレッシュイベントと区別できる。図2は、本発明の実施例に従った、この新しいウィンドウ検出を実現するためにアプリケーションサーバ110が行ない得る処理200を示す図である。さまざまな実施例では、処理200は、ハードウェア、ソフトウェア、またはそれらの組合せにおいて実現され得る。ソフトウェアとして、処理200は、機械読取可能記憶媒体上に格納されるプログラムコードとしてエンコードされ得る。
【0035】
ブロック202では、アプリケーションサーバ110は、クライアント側のウェブブラウザ106のあるウィンドウから発信された、ウェブアプリケーション114によって提供されるリソース(たとえばウェブページ)についてのHTTP要求を受け取り得る。さまざまな実施例ではこの要求は、当該リソースの識別子(たとえばURL)と、特定のブラウザウィンドウの識別子とを含み得る。たとえばこの要求は、URL「X」とウィンドウ識別子「ウィンドウ1」とを含み得る。ほとんどの場合、要求に含まれるウィンドウ識別子は、要求を発信したブラウザウィンドウの識別子に対応することとなる。しかしながら、この要求が既存のウィンドウの文脈から作り出された新しいウィンドウから発信された場合、要求に含まれるウィンドウ識別子は、新しいウィンドウではなく既存のウィンドウの識別子/名前に対応することとなる。したがってこれらの場合、アプリケーションサーバ110は、ウィンドウ識別子のみに基づき、発信元のウィンドウが新しいウィンドウかまたは既存のウィンドウかどうかを識別することが容易にできない。
【0036】
ブロック204では、アプリケーションサーバ110は当該要求が、JavaScript(登録商標)をサポートしているユーザエージェントからのコンテンツのページについてのHTTP GETまたはHEAD要求であるかどうかを判断し得る。当該要求がこの特定のカテゴリに該当しない場合は、アプリケーションサーバ110は、上記発信元のブラウザウィンドウが新しいウィンドウではないと判断し得る。したがって、アプリケーションサーバ110は、要求されたURLについてコンテンツをレンダリング/取得し、レンダリング/取得されたコンテンツとともに応答をブラウザウィンドウに送る通常の処理フローを行い得る(ブロック206,208)。
【0037】
この要求がJavaScript(登録商標)をサポートするユーザエージェントからのコンテンツについてのHTTP GETまたはHEAD要求である場合、アプリケーションサーバ110はさらに、当該要求がリダイレクトであるかどうか判断し得る(ブロック210)。この要求がリダイレクトであれば、アプリケーションサーバ110は上述したように、ブロック206,208の処理フローを実行し得る。
【0038】
当該要求がリダイレクトでない場合、アプリケーションサーバ110は、この要求は新しいブラウザウィンドウから発信され得たと判断し得る。これに応答して、アプリケーションサーバ110は、提案されたウィンドウ識別子およびループバック識別子を生成し、当該ループバック識別子を、要求に関連付けられるユーザセッションに格納し得る(ブロック212)。実施例の一集合では、ループバック識別子はランダムに生成された数であり得る。アプリケーションサーバ110はさらに、ループバック識別子と、提案されたウィンドウ識別子と、受け取られた要求からのURLおよびウィンドウ識別子(たとえば、「X」および「ウィンドウ1」)とを含むクライアント側のスクリプトを生成し得るとともに、当該スクリプトを発信元のブラウザウィンドウへ送り得る(ブロック214,216)。実施例の一集合では、クライアント側のスクリプトは、クライアント側のブラウザ106によってキャッシュ可能ではないように構成され得る。次いで、発信元のブラウザウィンドウの実際の識別子を取得するよう、クライアント側のスクリプトはブラウザ106によって実行され得、これにより発信元のウィンドウが新しいウィンドウかまたは既存のウィンドウかどうかの判断を促進する。
【0039】
図3は、ブロック214にて送られたクライアント側のスクリプトを受け取って実行する際にウェブブラウザ106によって行われ得る処理300を示す図である。ブロック302では、ブラウザ106は、スクリプトに含まれるウィンドウ識別子(すなわちブロック202にて受け取られた要求から抽出されるウィンドウ識別子)が現在のブラウザウィンドウ(すなわち要求を発信したウィンドウ)の識別子/名前と一致するかどうか判断し得る。この識別子同士が一致した場合、現在のウィンドウは既存のウィンドウであるということが示される。この場合、ブラウザ106は、クライアント側のリダイレクトを開始し、オリジナルのHTTP要求をミラーリングした(たとえば、URL「U1」およびウィンドウ識別子「ウィンドウ1」を含む)、ループバック識別子を追加した第2のHTTP要求をサーバ104に送り得る(ブロック304)。
【0040】
上記の識別子同士が一致しなかった場合、現在のウィンドウは新しいウィンドウであることが示される。この場合、ブラウザ106は、現在のウィンドウについてすでにウィンドウ識別子が存在するかどうか判断し得る(ブロック306)。たとえば、ブラウザ106は、ウィンドウを開く際に、新しい名前/識別子をウィンドウに自動的に割り当てていてもよい。このような既存の識別子が見つかると、ブラウザ106はクライアント側のリダイレクトを開始して、ループバック識別子と、URLと、既存の識別子とを含む第2のHTTP要求をサーバ104に送り得る(ブロック308)。既存のウィンドウ識別子が見つからなかった場合、ブラウザ106はクライアント側のリダイレクトを開始して、ループバック識別子と、URLと、図2のブロック212にて生成された提案されたウィンドウ識別子とを含む第2のHTTP要求を送り得る(ブロック310)。
【0041】
ブラウザ106が図3のブロック304,308,または310にて送った第2のHTTP要求を受け取る際には、アプリケーションサーバ110は、図4の処理400を行い得る。ブロック402および404にて、アプリケーションサーバ110は、当該第2のHTTP要求を受け取り、第2の要求に含まれるループバック識別子をユーザセッションに格納されたループバック識別子とマッチングし得る。ループバック識別子同士が一致すれば、アプリケーションサーバは、この第2の要求が(ユーザアクションに応答してではなく)ブロック214にて送られたクライアント側のスクリプトに応答して生成されたものであることが分かる。したがって、アプリケーションサーバ110は、ループバック識別子をセッションから除去し得(ブロック406)、処理400の残りへと進む。
【0042】
ブロック408では、アプリケーションサーバ110は、第2の要求に含まれるウィンドウ識別子が、ブロック202にて受け取られたオリジナルの要求に含まれるウィンドウ識別子と一致するかどうか判断し得る。これらの識別子同士が一致すれば、アプリケーションサーバ110は、ブロック202のオリジナルの要求を発信したウィンドウは既存のウィンドウであると結論付け得る。代替的には、識別子同士が一致しなければ、サーバ104は、ブロック202のオリジナルの要求を発信したウィンドウは新しいウィンドウであると結論付け得る。次いで、アプリケーションサーバ110は、当該URLについてのコンテンツをレンダリング/取得し、レンダリング/取得されたコンテンツを含む応答を発信元のブラウザウィンドウへ送ることによってオリジナルの要求を処理し得る(ブロック414,416)。
【0043】
特定の実施例では、このオリジナルの要求の処理は、発信元のウィンドウが新しいウィンドウまたは既存のウィンドウであると判断されるかどうかに基づき、異なり得る。たとえば、発信元のウィンドウがブロック410ごとに既存のウィンドウであると判断されれば、アプリケーションサーバ110は、当該ウィンドウに関連付けられるアプリケーション状態情報を自由に更新/修正し得る。しかしながら、当該発信元のウィンドウが、ブロック412ごとに新しいウィンドウであると判断されれば、アプリケーションサーバ110は、如何なる既存のウィンドウの状態も変更されないままであることを確実にするために適切なステップを採り得る。この態様で、アプリケーションサーバ110は、新しいウィンドウからの要求を処理する際に、当該既存のウィンドウの状態を意図せず破棄/無効にすること回避し得る。
【0044】
処理200、300、および400は例示であって、変形および修正が可能であるということが理解されるべきである。たとえば、連続的として記載されるステップは、並行に実行されてもよく、ステップの順番は変更されてもよく、かつステップは、修正、組み合せ、付加、または省略されてもよい。当業者であれば、多くの変形例、修正例、および代替例を認識するであろう。
【0045】
非アクティブなクライアント側のブラウザウィンドウの検出
ある実施例では、アプリケーションサーバ110は、ブラウザ106のユーザがウィンドウを閉じるかまたはアプリケーション114から離れることによってブラウザウィンドウを非アクティブにした時を検出し得るとともに、それらの状態を、ユーザが単にアプリケーション114の別のウェブページに進んだ場合と区別し得る。図5は、本発明の実施例に従った、この非アクティブウィンドウ検出を実現するためにアプリケーションサーバ110が実行し得る処理500を説明する図である。さまざまな実施例では、処理500は、ハードウェア、ソフトウェア、またはそれらの組合せにおいて実現され得る。ソフトウェアとして、処理500は、機械読取可能記憶媒体上に格納されたプログラムコードとしてエンコードされ得る。
【0046】
ブロック502として、アプリケーションサーバ110は、ウェブブラウザ106において開いているブラウザウィンドウの「アクティブ」リストを維持し得る。アプリケーションサーバ110の観点から、あるブラウザウィンドウがウェブアプリケーション114にアクセスするのに用いられているならば、当該ブラウザウィンドウは「アクティブ」であると考えられる。このアクティブリストは、ブラウザに関連付けられるユーザセッションの一部として格納され得る。実施例の一集合では、アクティブリストにおける各々のウィンドウについてのエントリは、当該ウィンドウの識別子と、ウィンドウに表示されている現在のページの指示とを含み得る。
【0047】
ブロック504では、アプリケーションサーバ110は、アクティブブラウザウィンドウにおけるアプリケーションページがアンロード/破棄されたという通知をブラウザ106から受け取り得る。このような通知は、たとえば、ユーザが当該ウィンドウを閉じたか、またはユーザがウィンドウ内で異なるウェブページへ進んだ場合に受け取られてもよい。これに応答して、アプリケーションサーバ110は、失効時間をアクティブウィンドウに関連付け得るとともに、当該ウィンドウを、潜在的に非アクティブ(すなわちアプリケーションにアクセスするのにもはや用いられていない)ウィンドウの「失効」リストに加え得る(ブロック506,508)。
【0048】
さらに、アプリケーションサーバ110は、アクティブリストにおけるウィンドウのすべてが現在失効リスト中にあるかどうか判断し得る(ブロック510)。失効リスト中になければ、さらに多くのアンロード/破棄通知をアプリケーションサーバ110が受け取ると、ブロック504〜510のステップは繰り返され、これによりさらに別のアクティブウィンドウが失効リストに加えられる。アクティブウィンドウのすべてが現在失効リスト中に存在すれば、アプリケーションサーバ110は、ユーザセッションレベルのリソースを解放するかどうか判断する特別な処理を行い得る。この処理は、以下の図7に関連して議論される。
【0049】
図5の処理は図6の処理600に続いている。ブロック602では、アプリケーションサーバ110は、以前ブロック508において失効リスト中に配置された特定のブラウザウィンドウから発信されたHTTP要求を受け取り得る。この要求の受け取りは、当該ウィンドウがまだアプリケーション114にアクセスするのに用いられていることを示しているので、アプリケーションサーバ110は、当該ウィンドウはまだアクティブであると結論を下し、このウィンドウを失効リストから除去し得る(ブロック604)。アプリケーションサーバ110はまた、受け取られた要求に含まれた最新のURLで、アクティブリスト中のウィンドウのエントリを更新し得る。
【0050】
ブロック606では、アプリケーションサーバ110は、失効リストに残っているウィンドウを検討し、各ウィンドウごとに、ブロック602にて要求が受け取られた時間と、当該ウィンドウに関連付けられる失効時間とを比較し得る。この要求の時間がウィンドウについての失効時間よりも遅ければ、アプリケーションサーバ110は、ウィンドウが非アクティブ(すなわち、アプリケーション114にアクセスするのにもはや用いられていない)であると識別するとともに、アクティブリストおよび失効リストの両方から当該ウィンドウを除去し得る。アプリケーションサーバ110はさらに、そのウィンドウに関連付けられるメモリリソース(たとえばアプリケーション状態情報など)を解放し得る。
【0051】
この要求の時間がウィンドウについての失効時間よりも早ければ、アプリケーションサーバ110は、当該ウィンドウを失効リストに残し得る。このウィンドウは、そのウィンドウから新しい要求が受け取られるまで(ウィンドウがまだアクティブであることを示す)、またはウィンドウに関連付けられる失効時間よりも遅い時間に異なるウィンドウから新しい要求が受け取られるまで(ウィンドウがおそらく非アクティブであることを示す)、失効リスト中に残留し得る。
【0052】
ブラウザウィンドウにおいて、ユーザが第1のアプリケーションページから第2のアプリケーションページに進んだ場合、アプリケーションサーバ110は、第1のページが破棄/アンロードされたという通知を受け取る前に、第2のページについての要求を受け取り得る。これは、HTTPはメッセージが送られた順番と同じ順番で受け取られることを保証しないからである。このため、ある実施例ではアプリケーションサーバ110は、各ウィンドウに表示されている現在のページを記録し、古いページに関するアンロード通知を無視し得る。
【0053】
たとえば、ブラウザウィンドウAが現在、アプリケーションページ1を表示しているとする。さらに、ウィンドウAのユーザがアプリケーションページ1からアプリケーションページ2に進むが、(ウィンドウA,ページ1)についてのアンロード通知より前に、アプリケーションサーバ110が(ウィンドウA,ページ2)についての要求を受け取るとする。(ウィンドウA,ページ2)についての要求がひとたび受け取られると、アプリケーションサーバ110は、ウィンドウAについての現在のページがページ2であるようにアクティブウィンドウリストを更新し得る。(ウィンドウA,ページ1)についてのアンロード通知がその後受け取られると、アプリケーションサーバ110は、ウィンドウAについての現在のページはページ1ではない(ページ2である)ので、このアンロード通知を無視し得る。したがって、これにより、アンロード通知を受け取った際に、アプリケーションサーバ110が失効リストにウィンドウAを誤って加えることが防止される。
【0054】
処理500および600は例示であって、変形および修正が可能であるということが理解されるべきである。たとえば、連続的として記載されるステップは、並行に実行されてもよく、ステップの順番は変更されてもよく、かつステップは、修正、組み合せ、付加、または省略されてもよい。当業者であれば、多くの変形例、修正例、および代替例を認識するであろう。
【0055】
上述したように、ある実施例では、アプリケーションサーバ110は、あるユーザセッションについて最後に残っているブラウザウィンドウが非アクティブ化/閉じられた時を検出するよう特別な処理を用い得る。この処理は、図7の処理700において例示される。さまざまな実施例では、処理700は、ハードウェア、ソフトウェア、またはそれらの組合せにおいて実現され得る。ソフトウェアとして、処理700は、機械読取可能記憶媒体上に格納されたプログラムコードとしてエンコードされ得る。
【0056】
ブロック702では、アプリケーションサーバ110は、あるユーザセッションについて最後に残っているブラウザウィンドウ(すなわちアクティブリスト中の最後のウィンドウ)におけるアプリケーションページがアンロード/破棄されたと判断し得る。これは、実施例の一集合では、アクティブリストおよび失効リスト中のウィンドウの集合が同じであるかを比較することによって達成され得る。最後に残っているブラウザウィンドウがアンロード/破棄されたと判断されると、アプリケーションサーバ110は、ユーザセッションに関連付けられるセッションタイムアウト変数を第1の時間期間(たとえば1時間)から第1の時間期間より短い第2の時間期間(たとえば10分)に修正し得、当該変数のカウントダウンを始め得る(ブロック704)。
【0057】
当該セッションタイムアウト変数が失効する前にHTTP要求が任意のウィンドウから受け取られれば、アプリケーションサーバ110は、そのセッションはまだアクティブであると結論を下し得、セッションタイムアウト変数を第1の時間期間にリセットし得る(ブロック706,708)。さらに、処理は図6のブロック602に戻り得る。
【0058】
しかしながら、当該セッションタイムアウト変数が失効する前に要求が任意のウィンドウから受け取られなければ、アプリケーションサーバ110は、最後に残っているウィンドウは非アクティブである(したがって、全ユーザセッションが閉じられている)という結論を下し得る。したがって、アプリケーションサーバ110は、ウィンドウおよびユーザセッションに関連付けられるリソースのすべてを解放し得る(ブロック710)。
【0059】
処理700は例示であって、変形および修正が可能であるということが理解されるべきである。たとえば、連続的として記載されるステップは、並行に実行されてもよく、ステップの順番は変更されてもよく、かつステップは、修正、組み合せ、付加、または省略されてもよい。当業者であれば、多くの変形例、修正例、および代替例を認識するであろう。
【0060】
図8は、本発明の実施例に従ったシステム環境800を示す簡略ブロック図である。示されるように、システム環境800は、1つ以上のクライアントコンピュータシステム802,804,806,808と、サーバコンピュータシステム810と、ネットワーク812と、データベース814とを含み得る。さまざまな実施例では、クライアントコンピュータシステム802,804,806,808、サーバコンピュータシステム810、およびデータベース814は、図1のクライアント102、サーバ104、およびデータ格納部116をそれぞれ実現するよう用いられ得る。
【0061】
クライアントコンピュータシステム802,804,806,808は、汎用のパーソナルコンピュータ(たとえば、デスクトップコンピュータおよび/もしくはラップトップコンピュータ)、タブレットコンピュータ、スマートフォン、PDA、ならびに/またはワークステーションコンピュータであり得る。代替的には、クライアントコンピュータシステム802,804,806,808は、図1のブラウザ106のようなウェブブラウザを実行することができる任意の他のタイプの電子装置であり得る。システム環境800は4つのクライアントコンピュータシステムを有するよう示されているが、任意の数のクライアントコンピュータシステムがサポートされ得るということが理解されるべきである。
【0062】
ネットワーク812は、TCP/IP、SNA、IPX、およびAppleTalkなどといったネットワークプロトコルを用いるデータ通信をサポートし得る、当業者が精通している任意のタイプのネットワークであり得る。単に例示目的として、ネットワーク812は、Ethernet(登録商標)ネットワークのようなローカルエリアネットワーク(LAN)、ワイドエリアネットワーク、仮想プライベートネットワーク(VPN)を含むがそれに限定されない仮想ネットワーク、インターネット、無線ネットワーク(たとえば、IEEE802.11プロトコルスイート、当該技術において公知のBluetooth(登録商標)プロトコル、および/もしくは任意の他の無線プロトコルのいずれかに基づき動作するネットワーク)、ならびに/またはこれらおよび/もしくは他のネットワークの任意の組合せであり得る。
【0063】
サーバコンピュータシステム810は、汎用コンピュータ、特殊化サーバコンピュータ(たとえば、PCサーバ、UNIX(登録商標)サーバ、メインフレームサーバ、ラックマウント型サーバなど)、サーバクラスタ、または任意の他の適切な構成および/もしくはコンピュータの組合せであり得る。サーバコンピュータシステム810は、Microsoft Windows(登録商標)、Apple OS X(登録商標)、Linux(登録商標)、およびSolaris(登録商標)などといった任意のコンシューマまたはサーバオペレーティングシステムを実行できる。サーバコンピュータシステム810はまた、図1のアプリケーションサーバ110およびウェブアプリケーション114を含む、さまざまなサーバアプリケーションおよび/またはミッドティアアプリケーションのいずれかを実行し得る。
【0064】
デー夕ベース814は、コンピュータシステム802、804、806、808、および810の1つ以上に対してローカルな(および/または存在している)記憶媒体に存在し得る。代替的には、データベース814は、コンピュータシステム802,804,806,808,810のいずれかまたはすべてからリモートであり得、および/または(たとえば、ネットワーク812を介して)これらのうちの1つ以上と通信し得る。実施例の一集合では、データベース814は、当業者が精通しているストレージエリアネットワーク(SAN)に存在し得る。同様に、コンピュータシステム802,804,806,808,810に帰属する機能を実行するための任意の必要なファイルが適切なように、それぞれのコンピュータ上にローカルに格納され得る、および/またはデータベース814上にリモートに格納され得る。実施例の一集合では、データベース814は、オラクル社から入手可能なOracle 11gのような、SQLフォーマットのコマンドに応答してデータを格納、更新、および取得するよう適合されるリレーショナルデータベースであり得る。
【0065】
図9は、本発明のある実施例に従ったコンピュータシステム900を示す簡略ブロック図である。さまざまな実施例では、コンピュータシステム900は、上記のシステム環境800について記載したコンピュータシステム802、804、806、808、および810のいずれかを実現するよう用いられ得る。示されるように、コンピュータシステム900は、バス924を介して電気的に結合されるハードウェア要素を含み得る。ハードウェア要素は、1つ以上の中央処理装置(CPU)902と、1つ以上の入力装置904(たとえばマウス、キーボードなど)と、1つ以上の出力装置906(たとえば、表示装置、プリンタなど)とを含み得る。コンピュータシステム900はさらに、1つ以上の記憶装置908を含み得る。例示として、記憶装置908は、プログラム可能および/またはフラッシュ更新可能などである、ディスクドライブ、光学記憶装置、ランダムアクセスメモリ(RAM)および/もしくはリードオンリメモリ(ROM)のようなソリッドステート記憶装置といった装置を含み得る。
【0066】
コンピュータシステム900はさらに、コンピュータ読取可能記憶媒体読取部912と、通信サブシステム914(たとえば、モデム、ネットワークカード(無線または有線)、赤外線通信装置など)と、上述したようなRAMおよびROM装置を含み得るワーキングメモリ918とを含み得る。いくつかの実施例では、コンピュータシステム900はさらに、デジタル信号プロセッサ(DSP)および/または特殊目的プロセッサなどを含み得る処理促進部916を含み得る。
【0067】
コンピュータ読取可能記憶媒体読取部912は、コンピュータ読取可能記憶媒体910に接続され得、これらはともに(随意では、記憶装置908と組み合わせて)、リモート、ローカル、固定、および/またはリムーバブルの記憶装置と、コンピュータ読取可能な情報を一時的および/またはより永続的に保存する記憶媒体とを包括的に表わす。通信システム914は、ネットワーク812および/またはシステム環境800について上述した任意の他のコンピュータとデータが交換されることを可能にし得る。
【0068】
コンピュータシステム900はさらに、ワーキングメモリ918内に現在存在しているように示されるソフトウェア要素を含み得る。このソフトウェア要素は、オペレーティングシステム920および/または(クライアント側のウェブブラウザ、ミドルティア/サーバアプリケーションなどであってもよい)アプリケーションプログラムのような他のコード922を含む。コンピュータシステム900の代替的な実施例は、上記のものの多くの変形例を有し得るということが理解されるべきである。たとえば、カスタマイズされたハードウェアが用いられ得るとともに特定の要素がハードウェア、ソフトウェア、またはその両方において実現され得る。さらに、ネットワーク入出力装置のような他のコンピューティング装置への接続も採用され得る。
【0069】
コンピュータシステム900によって実行可能なコードまたはコードの一部を保存するためのコンピュータ読取可能記憶媒体は、揮発性/不揮発性およびリムーバブル/非リムーバブルの媒体のような、しかしこれらに限定されない当該技術において公知または用いられる任意の適切な媒体を含み得る。コンピュータ読取可能記憶媒体の例は、データおよび/またはプログラムコードを格納するよう用いられ得るとともにコンピュータによってアクセスされ得るRAM、ROM、EEPROM、フラッシュメモリ、CD−ROM、デジタルバーサタイルディスク(DVD)、または他の光学記憶媒体、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、任意の他の媒体を含む。
【0070】
上記において、本発明の具体的な実施例を記載してきたが、さまざまな修正例、変更例、代替的な構成、および均等例が本発明の範囲内にある。たとえば、本発明の実施例をあるフロー図およびステップについて説明したが、当業者であれば、本発明の範囲は記載された図/ステップに限定されないことは明確であるはずである。
【0071】
さらに、本発明の実施例をハードウェアおよびソフトウェアの特定の組合せを用いて説明したが、ハードウェアおよびソフトウェアの他の組合せも本発明の範囲内であると認識されるべきである。
【0072】
したがって、明細書および図面は、限定的な態様ではなく例示的な態様であるとみなされるべきである。添付の特許請求の範囲に記載されるより広い本発明の精神および範囲から逸脱することがなければ、追加、削減、および他の修正もなされてもよいということが明らかであろう。
図1
図2
図3
図4
図5
図6
図7
図8
図9