(57)【要約】【課題】  アプリケーション・サーバ内の適応セッション圧縮管理方法および圧縮マネージャを提供することにある。【解決手段】  この圧縮管理方法は、保存する必要があるものとして示されたセッション状態情報をアプリケーション・サーバ内のセッション・マネージャから取得するステップと、セッション状態情報そのものならびにシステム・リソースの条件に関連する構成情報に応じてセッション状態情報を圧縮すべきかどうかを判別するステップと、セッション状態情報を圧縮する必要がある場合に、セッション状態情報を圧縮するために、アプリケーション・サーバ内のシステム・リソースの条件に応じて最適圧縮器および最適圧縮方法を決定するステップと、セッション・マネージャ内の指定の位置にセッション状態情報を保管し、セッション状態情報が圧縮される場合に、セッション状態情報とともに対応する圧縮器のタイプ情報を保管するステップとを含む。本発明は、セッション状態情報を圧縮するための適切な時間および適切な方法を決定し、アプリケーション・サーバのパフォーマンスおよび能力を大幅に強化することができる。【選択図】  図１
2009503635.tif 000002
【特許請求の範囲】
【請求項１】
セッション状態情報とシステム・リソースの条件に関連する構成情報とに応じて前記セッション状態情報を圧縮する必要があるかどうかを判別する圧縮決定コンポーネントと、
前記セッション状態情報を圧縮する必要があるとの判断に応じて、アプリケーション・サーバの前記システム・リソースの前記条件に応じて適切な圧縮器および適切な圧縮方法を決定し、対応する圧縮器に通知する圧縮方法決定コンポーネントと、
前記圧縮方法決定コンポーネントからの命令に応じて前記セッション状態情報を圧縮する少なくとも一つの圧縮器と、
を有する、アプリケーション・サーバ内の適応セッション圧縮マネージャ。
【請求項２】
ユーザまたはシステム管理者によって設定された前記構成情報を構成ファイルから取得する構成情報取得コンポーネント
をさらに有する、請求項１に記載の適応セッション圧縮マネージャ。
【請求項３】
前記構成情報が、圧縮しきい値と、圧縮器と、圧縮方法とを含む、請求項２に記載の適応セッション圧縮マネージャ。
【請求項４】
前記圧縮しきい値が、前記セッション状態情報のサイズに関するしきい値と、前記アプリケーション・サーバの前記システム・リソースに関するしきい値とを含む、請求項３に記載の適応セッション圧縮マネージャ。
【請求項５】
前記圧縮方法が、前記アプリケーション・サーバ内のＣＰＵの使用率に応じて、最良圧縮、通常圧縮、または圧縮なしとして設定される、請求項３に記載の適応セッション圧縮マネージャ。
【請求項６】
前記圧縮方法が、前記アプリケーション・サーバ内のメモリの使用率に応じて、高速圧縮、通常圧縮、または最良圧縮として設定される、請求項３に記載の適応セッション圧縮マネージャ。
【請求項７】
前記セッション・マネージャからの前記セッション状態情報であって、保存する必要があるものとして示された前記セッション状態情報をバッファに入れるセッション状態情報バッファ・コンポーネント
をさらに有する、請求項１ないし６のいずれか１項に記載の適応セッション圧縮マネージャ。
【請求項８】
前記セッション状態情報バッファ・コンポーネントが、それとの間のインターフェースにより前記セッション状態情報および前記関連情報を前記セッション・マネージャに転送する、請求項７に記載の適応セッション圧縮マネージャ。
【請求項９】
アプリケーションに提示すべきであると示された前記セッション状態情報を前記セッション・マネージャから取得し、前記セッション状態情報がすでに圧縮されているかどうかを判別し、前記セッション状態情報がすでに圧縮されている場合に前記対応する圧縮解除器に通知する圧縮解除決定コンポーネントと、
前記セッション状態情報を圧縮解除する圧縮解除器のうちの少なくとも１つと、
をさらに有する、請求項１ないし８のいずれか１項に記載の適応セッション圧縮マネージャ。
【請求項１０】
保存する必要があるものとして示されたセッション状態情報をアプリケーション・サーバ内のセッション・マネージャから取得するステップと、
前記セッション状態情報とシステム・リソースの条件に関連する構成情報とに応じて前記セッション状態情報を圧縮すべきかどうかを判別するステップと、
前記セッション状態情報を圧縮する必要があるとの判断に応じて、前記セッション状態情報を圧縮するために、前記アプリケーション・サーバの前記システム・リソースの前記条件に応じて適切な圧縮器および適切な圧縮方法を決定するステップと、
前記セッション・マネージャ内の指定の位置に前記セッション状態情報を保管し、前記セッション状態情報が圧縮される場合に、前記セッション状態情報とともに対応する圧縮器のタイプ情報を保管するステップと、
を含む、アプリケーション・サーバ内の適応セッション圧縮管理方法。
【請求項１１】
ユーザまたはシステム管理者によって設定された前記構成情報を構成ファイルから取り出すステップ
をさらに含む、請求項１０に記載の方法。
【請求項１２】
前記構成情報が、圧縮しきい値と、圧縮器と、圧縮方法とを含む、請求項１１に記載の方法。
【請求項１３】
前記圧縮しきい値が、前記セッション状態情報のサイズに関するしきい値と、前記アプリケーション・サーバの前記システム・リソースに関するしきい値とを含む、請求項１２に記載の方法。
【請求項１４】
前記圧縮方法が、前記アプリケーション・サーバ内のＣＰＵの使用率に応じて、最良圧縮、通常圧縮、および圧縮なしとして設定される、請求項１２に記載の方法。
【請求項１５】
前記圧縮方法が、前記アプリケーション・サーバ内のメモリの使用率に応じて、高速圧縮、通常圧縮、および最良圧縮として設定される、請求項１２に記載の方法。
【請求項１６】
前記セッション・マネージャからの前記セッション状態情報であって、保存する必要があるものとして示された前記セッション状態情報をバッファに入れるステップ
をさらに含む、請求項１０ないし１５のいずれかに記載の方法。
【請求項１７】
それとの間のインターフェースにより前記セッション状態情報および前記関連情報を前記セッション・マネージャに転送するステップ
をさらに含む、請求項１６に記載の方法。
【請求項１８】
アプリケーションに提示すべきであると示された前記セッション状態情報を前記セッション・マネージャから取得するステップと、
前記セッション状態情報がすでに圧縮されているかどうかを判別するステップと、
前記セッション状態情報がすでに圧縮されている場合に、前記セッション状態情報とともに保管された前記圧縮器の前記タイプ情報に応じて前記対応する圧縮解除器を使用して前記セッション状態情報を圧縮解除するステップと、
をさらに含む、請求項１０ないし１７のいずれか１項に記載の方法。
【請求項１９】
ユーザおよびアプリケーションのセッション状態情報を管理し維持するセッション・マネージャと、
前記セッション・マネージャと前記アプリケーションとの間で前記ユーザのセッション状態情報を転送するセッション状態情報提示コンポーネントと、
アプリケーション・サーバのユーザまたはシステム管理者が構成ファイル内に構成情報を設定するインターフェース・ユニットと、
請求項１ないし９のいずれか１項に記載のアプリケーション・サーバ内の適応セッション圧縮マネージャと、
を有する、適応セッション管理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション・サーバ内のセッション管理に関し、特に、アプリケーション・サーバ内の適応セッション圧縮技法に関する。
【背景技術】
【０００２】
コンピュータ・ネットワークの発展として、様々なアプリケーション・サーバが出現している。歴史的観点から見ると、Ｗｅｂアプリケーション・サーバは、様々なミドルウェア製品および技法から進化したものである。Ｗｅｂアプリケーション・サーバ（または略してアプリケーション・サーバ）は、分散ミドルウェア・ソフトウェア実装製品であり、一方の側の様々な種類のクライアントならびにもう一方の側の様々な種類のバックエンド・システム・リソースに接続するインターフェースとして機能する。これは、クライアントの要求の管理、ビジネス・ロジック用のホスト環境の提供、データ、トランザクション、ディレクトリ、およびその他のバックエンド・コンピューティング・リソースへの接続を担当する。一般に、クライアントとアプリケーション・サーバとの間でデータを伝送するためにＨＴＴＰプロトコルが使用されるが、ＨＴＴＰプロトコルはステートレス・プロトコルであり、すなわち、アプリケーション・サーバはあるページへのすべてのアクセスを相互に無関係なものとして処理し、前のアクセスがわずか数秒前に行われた場合でもそのアクセスについていかなる情報も保持せず、したがって、アプリケーション・サーバは同じクライアントからの前のアクセスについていかなる情報も把握していない。
【０００３】
したがって、ＨＴＴＰプロトコルのこの欠点を矯正するために、アプリケーション・サーバでは、典型的にはセッション・マネージャを使用して、すべてのセッション状態情報を管理する。Ｈａｓｈｔａｂｌｅなどのセッション・マネージャは、新しいセッションごとにセッションＩＤと呼ばれる固有ＩＤを生成し、すべてのセッション状態情報を保存するためのキーとしてこれらのセッションＩＤを使用する。クライアントによるアプリケーション・サーバへのアクセス中に、セッション・マネージャはセッション状態情報を維持することになる。同時に、セッションＩＤもクライアントのブラウザ内にクッキーの形で保存されることになる。
【０００４】
セッション状態情報は典型的にはアプリケーション・サーバのメモリ、ファイル、またはデータベース内に保存することができ、このため、メモリベースのセッション管理、ファイルベースのセッション管理、データベースベースのセッション管理という３通りのセッション管理メカニズムが存在する。
【０００５】
メモリベースのセッション管理は、最高動作速度のメカニズムであり、典型的には、特にセッション状態情報に素早くアクセス可能なアプリケーション・サーバのメモリ内の共用メモリ領域を割り振る。このメカニズムはアプリケーション・サーバのシステム構成に関する高い要件を提起し、システム・リソースは高いアクセス・トラフィックに耐えなければならず、さもなければ、アクセス速度を増加できないだけでなく、これに反して、システム・リソースが不十分であるためにサーバが過負荷になる恐れがある。
【０００６】
ファイルベースのセッション管理は、最も広く使用されるメカニズムであり、セッション状態情報は典型的にはテキスト・ファイルの形でアプリケーション・サーバのハード・ディスク内に保管される。このメカニズムは実現しやすいものであり、サーバのシステム構成に関する要件は高くないが、セッション状態情報を保管するファイルにはそれらの間の論理関係が欠落し、同時アクセス・トラフィックが大きい場合、セッション管理ファイルの数が急速に増加することになり、セッション管理メカニズムを設計する際の難しさを大幅に増大するだけでなく、それに応じてセッション情報にアクセスする速度にも影響することになる。
【０００７】
データベースベースのセッション管理は、最も容易に拡張可能なメカニズムであり、アプリケーション・サーバがネットワーク・データベース・システムのサポートを備えていなければならず、セッション状態情報はすべてネットワーク・データベースに保管され、データベース・システムのサポートの下で、セッション管理は、すべてのセッション状態情報を効率よく管理するために、データベースのトランザクション処理、セキュア・アクセス、データ保全性チェック、およびその他のメカニズムを完全に利用することができる。
【０００８】
セッション管理技法を採用すると、セッション状態情報へのアクセスの問題を解決するだけでなく、アプリケーション・サーバ用のアプリケーションの開発を大幅に容易にする。
【０００９】
しかし、どのセッション管理メカニズムを使用する場合でも、ユーザが多数または大型のセッション・オブジェクトを頻繁に確立する必要がある場合、アプリケーション・サーバの大量のメモリ空間が占有されることになる。特に、セッション・アフィニティおよびパーシスタンス対応または重負荷環境では、アプリケーション・サーバのパフォーマンスおよび能力が大幅に低下することになる。大型オブジェクトの直列化／非直列化および入出力はアプリケーション・サーバのボトルネックになる。
【００１０】
したがって、システム上のユーザのセッション状態情報の負担を効果的に緩和できる技法が必要である。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上記の問題を解決するために、本発明は、適応セッション圧縮管理方法および圧縮マネージャを提示し、これらは、ユーザのセッション状態情報を適応圧縮するために、保存する必要があるセッション状態情報のサイズならびにシステム・リソース（たとえば、ＣＰＵおよびメモリ）の条件に応じて最適圧縮器および圧縮方法を自動的に選択し、その結果、アプリケーション・サーバのパフォーマンスを強化する。
【課題を解決するための手段】
【００１２】
本発明の一態様によれば、セッション状態情報そのものならびにシステム・リソースの条件に関連する構成情報に応じてセッション状態情報を圧縮する必要があるかどうかを判別するための圧縮決定コンポーネントと、セッション状態情報を圧縮する必要がある場合に、アプリケーション・サーバのシステム・リソースの条件に応じて最適圧縮器および圧縮方法を決定し、対応する圧縮器に通知するための圧縮方法決定コンポーネントと、圧縮方法決定コンポーネントからの命令に応じてセッション状態情報を圧縮するための圧縮器のうちの少なくとも１つとを有する、アプリケーション・サーバ内の適応セッション圧縮マネージャが提供される。
【００１３】
本発明の他の態様によれば、保存する必要があるものとして示されたセッション状態情報をアプリケーション・サーバ内のセッション・マネージャから取得するステップと、セッション状態情報そのものならびにシステム・リソースの条件に関連する構成情報に応じてセッション状態情報を圧縮すべきかどうかを判別するステップと、セッション状態情報を圧縮する必要がある場合に、セッション状態情報を圧縮するために、アプリケーション・サーバ内のシステム・リソースの条件に応じて最適圧縮器および最適圧縮方法を決定するステップと、セッション・マネージャ内の指定の位置にセッション状態情報を保管し、セッション状態情報が圧縮される場合に、セッション状態情報とともに対応する圧縮器のタイプ情報を保管するステップとを含む、アプリケーション・サーバ内の適応セッション圧縮管理方法が提供される。
【００１４】
本発明のさらに他の態様によれば、ユーザおよびアプリケーションのセッション状態情報を管理し維持するためのセッション・マネージャと、セッション・マネージャとアプリケーションとの間でユーザのセッション状態情報を転送するためのセッション状態情報提示コンポーネントと、アプリケーション・サーバのユーザまたはシステム管理者が構成ファイル内に構成情報を設定するためのインターフェース・ユニットと、上述のアプリケーション・サーバ内の適応セッション圧縮マネージャとを有する、適応セッション管理システムが提供される。
【００１５】
本発明の利点は以下の点にある。
１．本発明によるアプリケーション・サーバ内の適応セッション圧縮は、セッション情報内に大型オブジェクトが存在するときにシステム・パフォーマンスを強化することができる。Ｊａｖａ（ＪａｖａおよびすべてのＪａｖａベースの商標は、米国、その他の国、またはその両方におけるサン・マイクロシステムズ社の商標である）プログラムは大型オブジェクトの直列化および非直列化の際に大量の時間を費やすことになるので、より大型のオブジェクトを圧縮すると、この時間を大幅に削減することになり、その結果、システム・パフォーマンスを強化することになる。
２．本発明によるアプリケーション・サーバ内の適応セッション圧縮は、アプリケーション・サーバ内に保持可能なユーザの数を増加することができる。システム・リソースをより効率的に使用することにより、ＣＰＵ、メモリ、およびその他のリソースに対して比較的均等に負荷をかけることができ、その結果、システム容量を増加することができる。
３．本発明によるアプリケーション・サーバ内の適応セッション圧縮は、セッション情報の圧縮および管理によりシステムのフォールト・トレランスを増加することができる。
【００１６】
本発明の上記の特徴、利点、および目的は、添付図面に併せて以下に示す本発明の具体的な実現例の説明を読むことにより、より適切に理解されるものと思われる。
【発明を実施するための最良の形態】
【００１７】
まず第一に、本発明の好ましい諸実施形態の詳細な説明の前に、セッション管理メカニズムについて手短に説明し、以下の通り、サーブレットのセッション管理メカニズムにより例証する。
【００１８】
上述の通り、ＨＴＴＰプロトコルはステートレス・プロトコルであり、Ｗｅｂアプリケーションは同じユーザの前の要求に関する情報を把握していないことを意味する。セッション情報を維持する方法の１つは、サーブレットまたはＪＳＰコンテナによって提供されるセッション追跡機能を使用することである。サーブレットＡＰＩ規格では、単純なＨｔｔｐＳｅｓｓｉｏｎインターフェースを定義し、それによりセッション追跡を都合良く実現することができる。
【００１９】
ＨｔｔｐＳｅｓｓｉｏｎインターフェースは、標準的なセッション属性を保管し返すメソッドを提供する。セッションＩＤ、アプリケーション・データなどの標準的なセッション属性は、「名前−値」対の形で保管される。手短に言えば、ＨｔｔｐＳｅｓｓｉｏｎインターフェースは、メモリ内にオブジェクトを保存し、同じユーザの後続要求中にこれらのオブジェクトを取り出すための標準的なメソッドを提供する。セッション内にデータを保存するためのメソッドはｓｅｔＡｔｔｒｉｂｕｔｅ（Ｓｔｒｉｎｇ  ｓ，Ｏｂｊｅｃｔ  ｏ）であり、前に保存されたオブジェクトをセッションから取り出すためのメソッドはｇｅｔＡｔｔｒｉｂｕｔｅ（Ｓｔｒｉｎｇ  ｓ）である。
【００２０】
ＨｔｔｐＳｅｓｓｉｏｎオブジェクトを取得するためには、ＨｔｔｐＳｅｒｖｌｅｔＲｅｑｕｅｓｔオブジェクトのｇｅｔＳｅｓｓｉｏｎメソッドを呼び出すことができる。セッション状態を適切に維持するためには、任意の応答内容を送信する前にｇｅｔＳｅｓｓｉｏｎメソッドを呼び出さなければならない。
【００２１】
ＨｔｔｐＳｅｓｓｉｏｎオブジェクトを使用するＪＳＰページを新しいユーザが要求するときは必ず、応答ページを返送することは除いて、ＪＳＰコンテナがブラウザに特殊番号も送信することになる。この特殊番号は「セッションＩＤ」と呼ばれ、固有のユーザＩＤである。その後、ＨｔｔｐＳｅｓｓｉｏｎオブジェクトはメモリ内に常駐し、同じユーザが戻ってきたときにそのメソッドを再呼び出しするのを待つ。
【００２２】
クライアント側のブラウザは、セッションＩＤを保存し、後続要求ごとにこのセッションＩＤをサーバに送信する。セッションＩＤは、現行要求がそのユーザによって送信された最初の要求ではなく、サーバがこのユーザのためにＨｔｔｐＳｅｓｓｉｏｎオブジェクトを前に確立していることをＪＳＰコンテナに伝える。この場合、ＪＳＰコンテナは、そのユーザのためにこれ以上新しいＨｔｔｐＳｅｓｓｉｏｎオブジェクトを確立することはなく、その代わりに、同じセッションＩＤを有するＨｔｔｐＳｅｓｓｉｏｎオブジェクトを検索し、次にそのＨｔｔｐＳｅｓｓｉｏｎオブジェクトと現行要求との関連を確立することになる。
【００２３】
セッションＩＤは、サーバとブラウザとの間でクッキーの形で転送される。ブラウザがクッキーをサポートしていない場合、ユーザからサーバへの後続要求はセッションＩＤを伝達しなくなる。その結果、ＪＳＰコンテナは、要求が新しいユーザから来たものと見なし、ＨｔｔｐＳｅｓｓｉｏｎオブジェクトをもう一度確立することになり、前に確立されたＨｔｔｐＳｅｓｓｉｏｎオブジェクトは依然としてメモリ内に常駐するが、そのユーザの前のセッション情報は失われることになる。
【００２４】
ＨＴＴＰプロトコルでは、ユーザがもはやアクティブではない場合、明示的な終了信号はまったく存在しない。このため、アプリケーション・サーバは、ユーザがもう一度戻ってくるのかどうかを把握せず、この問題を解決するための方法がまったく採用されない場合、多数のＨｔｔｐＳｅｓｓｉｏｎオブジェクトがメモり内に蓄積されることになる。
【００２５】
したがって、手動および自動の両方でユーザ・セッションを無効にすることができる。セッションを無効にするということは、ＨｔｔｐＳｅｓｓｉｏｎオブジェクトおよびそのデータをメモリから除去することを意味する。たとえば、特定の期間（デフォルトとしては３０分）内にユーザがもう一度要求を送信しない場合、ＪａｖａのＷｅｂサーバはそのユーザのセッションを自動的に無効にする。
【００２６】
サーブレット／ＪＳＰセッション追跡メカニズムにはいくつかの制約があり、すなわち、セッション・オブジェクトはアプリケーション・サーバのメモリ内に保管され、相当なリソースを占有する。
【００２７】
したがって、本発明の主な考え方は、アプリケーション・サーバ内のセッション管理システムのパフォーマンスを強化し、アプリケーション・サーバが保持可能なセッションの数を増加し、システムのフォールト・トレランスを強化するという諸目的を達成するために、セッション状態情報を適応圧縮するために保存する必要があるセッション状態情報のサイズならびにシステム・リソース（たとえば、ＣＰＵまたはメモリ）の条件に応じて最適圧縮器および圧縮方法を自動的に選択できるようにアプリケーション・サーバ内のセッション管理システムを強化することである。
【００２８】
本発明の好ましい諸実施形態について、添付図面に関して以下に詳細に説明する。
【００２９】
本発明の一態様によれば、適応セッション管理システムが提供される。このシステムについて、添付図面に関して以下に詳細に説明する。
【００３０】
図１は、本発明の一実施形態による適応セッション管理システムの概略図である。この実施形態による適応セッション管理システムは、アプリケーション・サーバ内のセッション状態情報を適応管理し維持する。
【００３１】
図１に図示されている通り、この実施形態の適応セッション管理システム１１０は、アプリケーション・サーバ１００内に常駐し、セッション状態情報提示コンポーネント１２０および１３０と、セッション・マネージャ１４０と、適応セッション圧縮マネージャ１５０と、インターフェース・ユニット１６０とを有する。
【００３２】
セッション状態情報提示コンポーネント１２０は、セッション・マネージャ１４０内でセッション状態情報を管理し維持するために、ユーザとアプリケーションとの間の対話におけるセッション状態情報を取得し、セッション・マネージャとのインターフェースによりこの情報をセッション・マネージャ１４０に転送するために使用される。
【００３３】
セッション状態情報提示コンポーネント１３０は、セッション・マネージャ内で維持されるセッション状態情報を取り出すための要求を受信し、セッション・マネージャ１４０とのインターフェースによりその要求に応じてセッション・マネージャ１４０から対応するセッション状態情報を取り出し、適応セッション圧縮マネージャ１５０による適応圧縮解除後にセッション状態情報をアプリケーションに提示するために使用される。
【００３４】
セッション・マネージャ１４０は、セッション状態情報を保管し維持するために使用される。セッション・マネージャ１４０では、セッション状態情報は好ましくはセッションＩＤによって索引が付けられたセッション状態オブジェクトとして維持される。セッション・マネージャ１４０では、メモリベースのセッション管理メカニズム、ファイルベースのセッション管理メカニズム、およびデータベースのセッション管理メカニズムのうちのいずれか１つを使用することができる。この実施形態では、任意の種類の伝統的なセッション・マネージャをセッション・マネージャ１４０として使用することができる。セッション・マネージャ１４０は、アプリケーションからの新たに確立されたセッションのセッション状態情報またはアプリケーションによって更新されたすでに確立されているセッションのセッション状態情報を受信すると、まずそのセッション状態情報を適応セッション圧縮マネージャ１５０に転送し、それと同時に、それを適応圧縮するために、保存する必要があるセッション状態情報が新たに確立されたかまたは更新されたことを示し、次に、圧縮されたセッション状態情報を指定の位置に保存する。その上、特定のアプリケーションが既存のセッション状態情報を読み出すようセッション・マネージャ１４０に要求した場合、セッション・マネージャ１４０は、指定の位置から要求された既存のセッション状態情報を取り出し、それを適応セッション圧縮マネージャ１５０に転送し、それと同時に、それを適応圧縮解除するために、そのセッション状態情報がアプリケーションに提示する必要があるセッション状態情報であることを示し、次に、セッション状態情報提示コンポーネント１３０によりそれをアプリケーションに提示する。セッション・マネージャ１４０および適応セッション圧縮マネージャ１５０は、インターフェースによりセッション状態情報およびその他の関連情報を相互に転送する。
【００３５】
適応セッション圧縮マネージャ１５０は、一方では、セッション・マネージャ１４０から保存する必要があるものとして示されたセッション状態情報を適応圧縮するために保存する必要があるセッション状態情報のサイズならびにシステム・リソース（たとえば、ＣＰＵ、メモリ）の条件に応じて最適圧縮器および圧縮モードを自動的に選択し、保存するために使用する圧縮器のタイプ情報とともに圧縮されたセッション状態情報をセッション・マネージャ１４０に転送するために使用される。もう一方では、セッション・マネージャ１４０からアプリケーションに提示すべきであると示された既存のセッション状態情報が圧縮解除する必要があるかどうかを判別し、それを圧縮解除する必要がある場合に、セッション状態情報とともに保管された圧縮器のタイプ情報に応じて対応する圧縮解除器（decompressor）によりそれを圧縮解除し、情報を要求しているアプリケーションに提示するために、圧縮解除されたセッション状態情報をセッション・マネージャ１４０に返すために使用される。
【００３６】
アプリケーション・サーバのユーザまたはシステム管理者は、インターフェース・ユニット１６０により構成ファイル内に圧縮しきい値、圧縮器、圧縮方法、およびその他の構成情報を設定する。
【００３７】
図２は、本発明の一実施形態によるアプリケーション・サーバ内の適応セッション圧縮マネージャのブロック図である。
【００３８】
同図に図示されている通り、適応セッション圧縮マネージャ１５０は、セッション状態情報バッファ・コンポーネント１５１０と、構成情報取得コンポーネント１５２０と、圧縮／圧縮解除決定コンポーネント１５３０と、圧縮／圧縮解除方法決定コンポーネント１５４０と、圧縮器／圧縮解除器１５５０とを有する。
【００３９】
セッション状態情報バッファ・コンポーネント１５１０は、適応セッション圧縮マネージャによって適応圧縮／圧縮解除するために、新たに確立されたかまたは更新され、アプリケーション・サーバのセッション・マネージャから保存する必要があるものとして示されたセッション状態情報、あるいはセッション・マネージャによって指定の位置から読み取られ、この情報を要求しているアプリケーションに提示すべきであると示されたセッション状態情報をバッファに入れるために使用される。セッション状態情報バッファ・コンポーネント１５１０とセッション・マネージャ１４０との間には、セッション状態情報および関連情報を転送するためのインターフェースがある。
【００４０】
構成情報取得コンポーネント１５２０は、圧縮しきい値、圧縮器、および圧縮方法など、アプリケーション・サーバのユーザまたはシステム管理者によって設定された構成情報を構成ファイルから取得するために使用される。構成ファイルの一例は以下の通りである。
[threshold]  //セッション状態情報のサイズがこの値、たとえば、５００ｋを超えると、圧縮が始まる。
Size=500,000
[compressor]  //ユーザはここに、使用する予定の圧縮器を指定することができる。
Zip=Zipcompressor
Rar=Rarcompressor...
[CPU]  //ユーザはここに、最大、圧縮なしなど、ＣＰＵの使用率と対応する圧縮方法との関係を百分率を示す数字で指定することができる。
20=Best
50=Normal
70=Fast
80=None
[Memory]  //ユーザはここに、メモリの使用率と圧縮方法との関係を百分率を示す数字で指定することができる。
20=Fast
50=Normal
70=Best
...
【００４１】
この実施形態では、一方では、セッション状態情報を圧縮すべきかどうかを判別するために、圧縮／圧縮解除決定コンポーネント１５３０が、セッション・マネージャ１４０に保存する必要があるものとして示されたセッション状態情報バッファ・コンポーネント１５１０内のセッション状態情報のサイズと、構成ファイル内の圧縮しきい値とを比較する。セッション状態情報のサイズがしきい値を超えると、最適圧縮方法を選択するよう圧縮方法決定コンポーネント１５４０に通知する。もう一方では、この情報を要求しているアプリケーションに提示する必要があるものとして示されたセッション状態情報バッファ・コンポーネント１５１０内の既存のセッション状態情報がすでに圧縮されているかどうかを圧縮／圧縮解除決定コンポーネント１５３０が判別する。この情報がすでに圧縮されている場合、圧縮／圧縮解除方法決定コンポーネント１５４０にこの事実を通知する。
【００４２】
圧縮／圧縮解除方法決定コンポーネント１５４０は、一方では、圧縮／圧縮解除決定コンポーネント１５３０からの命令に応じて、使用する予定の圧縮器および構成ファイルに設定された圧縮方法に関する要件ならびにアプリケーション・サーバのシステム・リソースの条件に基づいて最適圧縮器および最適圧縮方法を選択し、圧縮する必要があるものとして示されたセッション状態情報バッファ・コンポーネント１５１０内のセッション状態情報を圧縮するよう圧縮器／圧縮解除器１５５０内のこの最適圧縮器に通知する。もう一方では、圧縮／圧縮解除決定コンポーネント１５３０からの命令に応じて、圧縮／圧縮解除方法決定コンポーネント１５４０は、圧縮解除する必要があるものとして現在示されているセッション状態情報バッファ・コンポーネント１５１０内のセッション状態情報とともに保管された圧縮器のタイプ情報を取得し、圧縮器に対応する圧縮解除器を決定し、セッション状態情報を圧縮解除するよう圧縮器／圧縮解除器１５５０内のこの対応する圧縮解除器に通知する。この実施形態では、上記の圧縮器に対応する圧縮解除器はＺｉｐ圧縮解除器およびＲａｒ圧縮解除器である。
【００４３】
本発明では、セッション状態情報のサイズおよび構成ファイル内の圧縮しきい値に応じてセッション状態情報を圧縮しなければならないと圧縮／圧縮解除決定コンポーネント１５３０が判別した場合でも、圧縮／圧縮解除方法決定コンポーネント１５４０は依然としてアプリケーション・サーバのシステム・リソースの条件に応じて圧縮しないと決定できることに留意する必要がある。たとえば、ＣＰＵの使用率が８０％を超えると、圧縮／圧縮解除方法決定コンポーネント１５４０によって選択された最適圧縮器および最適圧縮方法は「なし」、すなわち、圧縮なしになるであろう。この場合、圧縮／圧縮解除方法決定コンポーネント１５４０はいかなる圧縮器／圧縮解除器も起動せず、セッション状態情報バッファ・コンポーネント１５１０は元のセッション状態情報をセッション・マネージャ１４０に返すであろう。
【００４４】
圧縮／圧縮解除方法決定コンポーネント１５４０によって決定された圧縮器／圧縮解除器１５５０内の圧縮器／圧縮解除器は、圧縮／圧縮解除方法決定コンポーネント１５４０からの命令に基づいて、決定された最適圧縮／圧縮解除方法によりセッション状態情報バッファ・コンポーネント１５１０内のセッション状態情報を圧縮／圧縮解除する。圧縮の場合、対応する圧縮器のタイプ情報は、圧縮されたセッション状態情報とともにセッション状態情報バッファ・コンポーネント１５１０内に保管される。そして、セッション状態情報バッファ・コンポーネント１５１０は、圧縮器のタイプ情報とともに圧縮されたセッション状態情報をセッション・マネージャ１４０に返す。圧縮解除の場合、指定のセッション状態情報を圧縮解除した圧縮解除器は、圧縮解除した情報をセッション状態情報バッファ・コンポーネント１５１０内に保管し、次にセッション・マネージャ１４０はセッション状態情報提示コンポーネント１３０により要求側アプリケーションにそれを提示する。
【００４５】
セッション・マネージャ１４０に保存すべきであると示されたセッション状態情報がいなかる圧縮も必要としないと圧縮／圧縮解除決定コンポーネント１５３０が判別した場合、セッション状態情報バッファ・コンポーネント１５１０はセッション・マネージャ１４０にその情報を直接返すことに留意する必要がある。その上、アプリケーションに提示すべきであると示されたセッション状態情報がいかなる圧縮解除も必要としない場合、適応セッション圧縮マネージャ１５０はセッション状態情報提示コンポーネント１３０により要求側アプリケーションにその情報を直接返すことができる。
【００４６】
また、上記の実施形態では、圧縮解除に関連するコンポーネントが適応セッション圧縮マネージャ１５０に組み込まれているが、圧縮解除に関連するこれらのコンポーネントが適応セッション圧縮マネージャ１５０から分離したものにし、個別のコンポーネントに統合できることも当業者にとって明白であることにも留意する必要がある。
【００４７】
したがって、本発明の他の態様によれば、アプリケーション・サーバ内の適応セッション圧縮管理方法が提供される。この方法は２通りの態様を有し、一方の態様は新たに確立されたかまたは更新され、セッション・マネージャに保存する必要があるセッション状態情報について実行される適応圧縮プロセスであり、もう一方の態様は指定の位置からセッション・マネージャによって読み取られ、要求側アプリケーションに提示する必要があるセッション状態情報について実行される適応圧縮解除プロセスである。図３は、本発明の一実施形態によるアプリケーション・サーバ内の適応セッション圧縮管理方法内の圧縮プロセスの流れ図である。
【００４８】
同図に図示されている通り、ステップ３１０では、新たに確立されたかまたは更新され、保存する必要があるものとして示されたセッション状態情報がアプリケーション・サーバのセッション・マネージャから取得される。
【００４９】
ステップ３２０では、セッション状態情報のサイズが事前設定圧縮しきい値を超えるかどうかが判別され、そのしきい値はアプリケーション・サーバのユーザまたはシステム管理者によって構成ファイルに設定される。この構成ファイルは上述の通りである。このステップでは、セッション状態情報のサイズが構成ファイル内の圧縮しきい値を超える場合、プロセスはステップ３３０に移行し、超えない場合、プロセスはステップ３５０に移行する。
【００５０】
ステップ３３０では、使用する予定の圧縮器および構成ファイルに設定された圧縮方法に関する要件に応じて、ならびにアプリケーション・サーバのシステム・リソースの条件に応じて、最適圧縮器および最適圧縮方法が決定される。
【００５１】
次に、ステップ３４０では、前のステップで決定された最適圧縮器および圧縮方法を使用して、セッション状態情報が圧縮される。
【００５２】
次に、ステップ３５０では、圧縮器のタイプ情報とともにセッション状態情報がセッション・マネージャに保管される。その情報が圧縮されない場合、セッション状態情報は圧縮器のタイプ情報なしでそのまま保管される。
【００５３】
セッション状態情報はセッション・マネージャの指定の位置に保管され、セッション状態情報が圧縮される場合、セッション状態情報とともに対応する圧縮器のタイプ情報が保管される。
【００５４】
上記のプロセスの場合、セッション状態情報についてユーザがカスタマイズした保存を実現するために、アプリケーション・サーバのパブリック・インターフェースＨｔｔｐＳｅｓｓｉｏｎのｓｅｔＡｔｔｒｉｂｕｔｅ（ｊａｖａ．ｌａｎｇ．Ｓｔｒｉｎｇ，ｊａｖａ．ｌａｎｇ．Ｏｂｊｅｃｔ）関数を使用して、セッション状態情報をセッション状態オブジェクトとして処理することができる。その具体的なコード・インプリメンテーションは以下の通りである。
public classxHttpSession {
//保存すべきセッション状態オブジェクト
HttpSessionsession=null;
//適応セッション圧縮マネージャ
AdaptiveSessionManagerasm=
AdaptiveSessionManager.getInstance();
//構築関数
publicxHttpSession（HttpSession session）{
this.session=session;
}
//セッション情報を保存する
publicsetAttribute (String key，object value) {
//圧縮が必要であるかどうかをチェックする
if ( asm.check(value)==true) {
//圧縮が必要である場合、適応セッション圧縮 
//マネージャは、圧縮するために適切な圧縮器を選択し、 
//圧縮した値を元のセッション・
//マネージャに入れる 
objectnewValue=asm.getCompressor().compress (value);
session.setAttribute(key, newValue);
}
}
【００５５】
したがって、上記の圧縮プロセスにより適応圧縮されているセッション状態情報をもう一度提示する必要がある場合、そのセッション状態情報は圧縮解除する必要がある。したがって、本発明のアプリケーション・サーバ内の適応セッション圧縮管理方法には、対応する適応圧縮解除プロセスも存在し、そのプロセスは上記の適応圧縮プロセスを通過したセッション状態情報について実行される。図４は、本発明の一実施形態によるアプリケーション・サーバ内の適応セッション圧縮管理方法内の圧縮解除プロセスの流れ図である。
【００５６】
同図に図示されている通り、ステップ４１０では、セッション・マネージャによって指定の位置から取り出され、要求側アプリケーションに提示すべきであると示されたセッション状態情報が取得される。
【００５７】
ステップ４２０では、セッション状態情報がすでに圧縮されているかどうかが判別される。この情報がすでに圧縮されている場合、プロセスはステップ４３０に移行し、圧縮されていない場合、プロセスは終了する。
【００５８】
ステップ４３０では、セッション・マネージャにセッション状態情報とともに保管された圧縮器のタイプ情報が取り出される。
【００５９】
ステップ４４０では、ステップ４３０で取り出された圧縮器のタイプ情報に応じて対応する圧縮解除器が決定される。
【００６０】
ステップ４５０では、ステップ４４０で決定された圧縮解除器を使用して、セッション状態情報が圧縮解除される。
【００６１】
ステップ４６０では、アプリケーション・サーバの提示ロジックによりセッション状態情報を要求しているアプリケーションに圧縮解除されたセッション状態情報が返される。
【００６２】
上記の方法の場合、セッション状態情報についてユーザがカスタマイズした取り出しを実現するために、アプリケーション・サーバのパブリック・インターフェースＨｔｔｐＳｅｓｓｉｏｎのｇｅｔＡｔｔｒｉｂｕｔｅ（ｊａｖａ．ｌａｎｇ．Ｓｔｒｉｎｇ）関数を使用することができる。その具体的なコード・インプリメンテーションは以下の通りである。
//セッション状態オブジェクトを読み取る
public ObjectgetAttribute（String key）{
//システム・セッション・マネージャにより値を取り出す
Objectvalue=session.getAttribute（key）；
//値がすでに圧縮されているかどうかをチェックする
if（asm.isCompressed（value））{
value=asm.uncompress（value）；
}
return value;
}
【００６３】
本発明のアプリケーション・サーバ内の適応セッション圧縮管理方法、圧縮マネージャ、およびセッション管理システムについて、諸実施形態に関して上記で説明してきた。これらの実施形態は例に過ぎず、当業者であれば、これらに基づいて様々な変更を行うことができることに留意されたい。
【図面の簡単な説明】
【００６４】
【図１】本発明の一実施形態による適応セッション管理システムの概略図である。
【図２】本発明の一実施形態によるアプリケーション・サーバ内の適応セッション圧縮マネージャのブロック図である。
【図３】本発明の一実施形態によるアプリケーション・サーバ内の適応セッション圧縮管理方法内の圧縮プロセスの流れ図である。
【図４】本発明の一実施形態によるアプリケーション・サーバ内の適応セッション圧縮管理方法内の圧縮解除プロセスの流れ図である。
【図１】
2009503635.tif 000003
【図２】
2009503635.tif 000004
【図３】
2009503635.tif 000005
【図４】
2009503635.tif 000006
【国際調査報告】
2009503635.tif 000007
2009503635.tif 000008