(57)【要約】【課題】コネクションの動作チェックによる負荷を低減し、かつ、コネクション取得のレスポンスの低下を抑制しつつ正常に動作するコネクションを割り当てることが可能なコネクション割当管理方法を提供する。【解決手段】コネクションプール１０、及びコネクションプール１０にコネクション要求等をするアプリケーション２０を有するアプリケーションサーバ１と、アプリケーションサーバ１に接続されたデータベース２とを備え、コネクションプール１０は、確立済みのコネクション１１１〜１１ｎを保持するプール部１１と、コネクション取得要求、コネクション返却要求等を処理する制御部１２とを有し、アプリケーション２０に渡すコネクション１１１〜１１ｎを割り当てると共に管理し、制御部１２は、コネクションの動作チェックを行うコネクション確認手段１２１と、コネクション１１１〜１１ｎの管理情報を記憶する記憶手段１２２と、を有する構成をなす。【選択図】図１
2008134767.tif 000002
【特許請求の範囲】
【請求項１】
コネクションの最終アクセス時刻を管理し、アプリケーションからのコネクション取得要求に応じてコネクションを割り当てて渡す方法であって、
前記アプリケーションから前記コネクションが返却されたとき、次回のコネクション取得要求があったときに渡す次回候補コネクションの動作を別スレッドでチェックする第１のステップと、
前記第１のステップで前記次回候補コネクションの動作をチェックしたときに、チェックした前記次回候補コネクションの前記最終アクセス時刻を更新する第２のステップと、
コネクション取得要求があったときに、前記アプリケーションに渡す前記次回候補コネクションを、現時刻が前記次回候補コネクションの最終アクセス時刻から一定時間経過している場合に、動作をチェックする第３のステップと、
を備えたことを特徴とするコネクション割当管理方法。
【請求項２】
コネクションの最終アクセス時刻を管理し、アプリケーションからのコネクション取得要求に応じてコネクションを割り当てて渡す方法であって、
前記アプリケーションからのアクセスをインターセプトし、前記コネクションの最終アクセス時刻を更新する第１のステップと、
コネクション取得要求があったときに、前記アプリケーションに渡す前記次回候補コネクションを、現時刻が前記次回候補コネクションの最終アクセス時刻から一定時間経過している場合に、動作をチェックする第２のステップと、
を備えたことを特徴とするコネクション割当管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コネクションプールされているコネクションのコネクション割当管理方法に関する。
【背景技術】
【０００２】
アプリケーションサーバ等のアプリケーション端末がデータベースにアクセスして処理を行うとき、アプリケーション端末とデータベースとを接続するコネクションを確立する必要がある。ここで、コネクションの確立は時間がかかる処理であるため、確立済みのコネクションをアプリケーション端末内に保持しておくコネクションプールの技術がある（例えば、特許文献１参照。）。
【０００３】
アプリケーションは、データベースにアクセスするとき、アプリケーション端末からコネクションを取得する。このとき、アプリケーション端末は、コネクションプールされている確立済みの未使用のコネクションをアプリケーションに渡す。アプリケーションは、渡されたコネクションを介してデータベースにアクセスすることによって、アクセス時間を短縮することができる。
【０００４】
ここで、アプリケーション端末とデータベースとを接続しているネットワーク、データベース等において一時的な障害が発生したとき、コネクションプールされているコネクションは、正常に動作せず、データベースにアクセスするときにエラーが発生するコネクションになってしまう。
【０００５】
エラーが発生するコネクションを渡された場合、アプリケーションは、データベースへのアクセスを最初からやり直す、ユーザに対しエラーメッセージを通知する等の所定の対処をしなければならない。かかる対処として、アプリケーションに、エラーの発生する確率を低減させたコネクションを渡す技術が特許文献１に記載されている。
【０００６】
この技術は、アプリケーションからのコネクション取得要求が発生したときに、コネクションプールされているコネクションの動作チェックを行い、正常に動作するコネクションをアプリケーションに渡すことによって、エラーの発生する確率を低減させるものである。
【特許文献１】特開２００３−２１６４７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のコネクション割当管理方法では、コネクションの動作チェックに処理コストがかかるため、コネクション取得要求毎に動作チェックを行うのでは、コネクション取得のレスポンスを低下させてしまうという問題を有していた。コネクション取得要求があったとき、ネットワーク障害、データベース障害等が発生していた場合は、コネクションプールされたコネクションの動作チェック及びコネクション破棄が繰り返し実行されることになるため、アプリケーションにコネクションが渡されるまでに長時間を要する。
【０００８】
一方、コネクションの動作チェックをコネクション取得要求のときではなく一定間隔で行う方法も考えられるが、間隔が長過ぎる場合は、ネットワーク障害、データベース端末障害等の検出が遅くなり、エラーが発生するコネクションをアプリケーションに渡してしまう確率が高くなる。間隔が短過ぎる場合は、アプリケーション端末、データベース端末等に課される負荷を不必要に高めることとなる。
【０００９】
以上の現状に鑑み、本発明の目的は、コネクションの動作のチェックによる負荷を低減し、かつ、コネクション取得のレスポンスの低下を抑制しつつ正常に動作するコネクションを割り当てることが可能なコネクション割当管理方法を提供する。
【課題を解決するための手段】
【００１０】
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項１に係る発明は、コネクションの最終アクセス時刻を管理し、アプリケーションからのコネクション取得要求に応じてコネクションを割り当てて渡す方法であって、前記アプリケーションから前記コネクションが返却されたとき、次回のコネクション取得要求があったときに渡す次回候補コネクションの動作を別スレッドでチェックする第１のステップと、前記第１のステップで前記次回候補コネクションの動作をチェックしたときに、チェックした前記次回候補コネクションの前記最終アクセス時刻を更新する第２のステップと、コネクション取得要求があったときに、前記アプリケーションに渡す前記次回候補コネクションを、現時刻が前記次回候補コネクションの最終アクセス時刻から一定時間経過している場合に、動作をチェックする第３のステップと、を備えたことを特徴とする。
【００１１】
請求項２に係る発明は、コネクションの最終アクセス時刻を管理し、アプリケーションからのコネクション取得要求に応じてコネクションを割り当てて渡す方法であって、前記アプリケーションからのアクセスをインターセプトし、前記コネクションの最終アクセス時刻を更新する第１のステップと、コネクション取得要求があったときに、前記アプリケーションに渡す前記次回候補コネクションを、現時刻が前記次回候補コネクションの最終アクセス時刻から一定時間経過している場合に、動作をチェックする第２のステップと、を備えたことを特徴とする。
【発明の効果】
【００１２】
請求項１に係る発明によれば、コネクションの最終アクセス時刻を管理し、アプリケーションからのコネクション取得要求に応じてコネクションを割り当てて渡す方法であって、アプリケーションからコネクションが返却されたとき、次回のコネクション取得要求があったときに渡す次回候補コネクションの動作を別スレッドでチェックする第１のステップと、第１のステップで次回候補コネクションの動作をチェックしたときに、チェックした次回候補コネクションの最終アクセス時刻を更新する第２のステップと、コネクション取得要求があったときに、アプリケーションに渡す次回候補コネクションを、現時刻が次回候補コネクションの最終アクセス時刻から一定時間経過している場合に、動作をチェックする第３のステップと、を備えるため、使用環境に応じて経過時刻を適切に設定することによって、コネクションの動作のチェックによる負荷を低減し、かつ、コネクション取得のレスポンスの低下を抑制しつつ正常に動作するコネクションを割り当てることが可能なコネクション割当管理方法を実現することができる。
【００１３】
請求項２に係る発明によれば、コネクションの最終アクセス時刻を管理し、アプリケーションからのコネクション取得要求に応じてコネクションを割り当てて渡す方法であって、アプリケーションからのアクセスをインターセプトし、コネクションの最終アクセス時刻を更新する第１のステップと、コネクション取得要求があったときに、アプリケーションに渡す次回候補コネクションを、現時刻が次回候補コネクションの最終アクセス時刻から一定時間経過している場合に、動作をチェックする第２のステップと、を備えるため、使用環境に応じて経過時刻を適切に設定することによって、コネクションの動作のチェックによる負荷を低減し、かつ、コネクション取得のレスポンスの低下を抑制しつつ正常に動作するコネクションを割り当てることが可能なコネクション割当管理方法を実現することができる。
【発明を実施するための最良の形態】
【００１４】
以下、実施例を示した図面を参照しつつ本発明の実施の形態について説明する。
図１は、本発明によるコネクション割当管理方法が実行される情報処理システムの一実施例を模式的に示すブロック構成図である。この情報処理システムは、図１に示すように、コネクションプール１０、及びコネクションプール１０にコネクション要求等をするアプリケーション２０を有する、アプリケーションサーバ等のアプリケーション端末１と、アプリケーション端末１に接続されたデータベース２とを備える。
【００１５】
コネクションプール１０は、データベース２との間で確立済みのコネクション１１１〜１１ｎを保持するプール部１１と、アプリケーション２０からのコネクション取得要求、コネクション返却要求等を処理する制御部１２とを有し、アプリケーション２０に渡すコネクション１１１〜１１ｎを割り当てると共に管理する。制御部１２は、さらに、コネクションが正常に動作するかをチェックするコネクション確認手段１２１と、コネクション１１１〜１１ｎを管理するための情報を記憶する記憶手段１２２と、を有する。
【００１６】
図２は、コネクションプール内に保持されたコネクションの管理テーブルの一実施例を示す図である。コネクションの管理テーブルは、記憶手段１２２に記憶され、図２に示すように、コネクションプール内のコネクションを一意に識別するコネクション識別子２１、コネクション状態２２、最終アクセス時刻２３を有し、コネクション毎にデータが登録される。
【００１７】
管理テーブルへの登録は、コネクションプールにコネクションが追加されるときに行われ、管理テーブルからの各コネクションのデータの削除は、対応するコネクションが破棄されたときに行われる。コネクション状態２２は、使用されていないコネクションを検索するときに用いられ、アプリケーションにコネクションを渡すときに「使用中」に更新され、コネクションが返却されたときに「未使用」に更新される。また、コネクションが正常に動作しているか否かをチェックするコネクション動作チェックの実行中は、「動作チェック中」に更新される。最終アクセス時刻２３は、対応するコネクションを介してデータベースにアクセスした最終時刻であり、コネクション確認手段、アプリケーション等が対応するコネクションを介してデータベースにアクセスを実行したときに更新される。
【００１８】
図３は、アプリケーションからコネクションが返却されるときの処理について説明するためのシーケンス図である。
まず、コネクションプールから渡されたコネクションの使用を終了したとき、アプリケーションは、図３に示すように、コネクションプールの制御部にコネクションの返却要求を行い、コネクションプールにコネクションを返却する（Ｓ３０１）。
【００１９】
次に、制御部は、コネクションの管理テーブル内のコネクション状態を「未使用」に更新し（Ｓ３０２）、別スレッドで動作しているコネクション確認手段にコネクションの動作チェックを指示する（Ｓ３０３）。
【００２０】
次に、コネクションの動作チェックを指示されたコネクション確認手段は、この指示に対して応答を通知し（Ｓ３０４）、データベースとの間でコネクションの動作チェック（以下、この処理をコネクション動作チェック処理という。）を行う（Ｓ３１１）。コネクション動作チェック処理では、データベースとの間で通信を発生させて所定のコネクションが正常に動作するか否かがチェックされる（Ｓ３１１、Ｓ３１２）。
【００２１】
ステップＳ３０４で通知を受けた制御部１２は、コネクションの動作チェックの結果を待つことなく、コネクションの返却要求に対する応答をアプリケーションに通知し、コネクションの返却処理を終了する（Ｓ３０５）。
【００２２】
図４は、コネクション動作チェック処理を説明するためのフローチャートである。
コネクション動作チェック処理では、まず、対象のコネクションとして、プール部から次回のコネクション取得要求でアプリケーションに渡すコネクションの候補（以下、次回候補コネクションという。）を選択してコネクション状態を「動作チェック中」に設定し（Ｓ４０１）、現時刻が最終アクセス時刻から一定時間経過しているか否かを判定する（Ｓ４０２）。
【００２３】
ステップＳ４０２で最終アクセス時刻から一定時間経過していないと判定したとき、次回候補コネクションのコネクション状態を「未使用」に設定する（ステップ４０３）。
【００２４】
ステップＳ４０２で最終アクセス時刻から一定時間経過していると判定したとき、次回候補コネクションを使って、例えばＳＱＬ（Structured Query Language）での通信をデータベースとの間で発生させてコネクションの動作チェックを行い（Ｓ４０４）、コネクションが正常に動作するか否かを判定する（Ｓ４０５）。
【００２５】
ステップＳ４０５でコネクションが正常に動作すると判定したとき、次回候補コネクションの最終アクセス時刻を更新して（Ｓ４０６）、ステップＳ４０３に跳び、コネクション状態を「未使用」に設定する。コネクションが正常に動作しないと判定したとき、次回候補コネクションを破棄して（Ｓ４０７）、コネクションの管理テーブルから対応する情報を削除する（Ｓ４０８）。
【００２６】
図５は、アプリケーションからコネクションプールにコネクション取得要求とデータベースへのアクセスがあったときに、制御部が行う処理について説明するためのシーケンス図である。
アプリケーションからコネクション取得要求（Ｓ５０１）があったとき、制御部は、アプリケーションにコネクションを割り当てるコネクション割り当て処理を行い（Ｓ５０２）、コネクションの管理テーブルのコネクション状態を「使用中」に設定し（Ｓ５０３）、割り当てられたコネクションをアプリケーションに引き渡す（Ｓ５０４）。コネクション割り当て処理については、以下に図６を用いて詳細に説明される。
【００２７】
ステップＳ５０４でコネクションが渡されたアプリケーションは、データベースを使用する処理（Ｓ５１０）においてデータベースにアクセスする必要が生じたとき、渡されたコネクションを介してデータベースにアクセスする手順を進め（Ｓ５１１１）、制御部は、このデータベースへのアクセスをインターセプトして（Ｓ５１２１）、アクセスを実行する（Ｓ５１３１）。
【００２８】
ステップＳ５１３１のアクセスに応答して、データベースは、アプリケーションから要求された処理を実行して（Ｓ５１４１）、データベース内のデータ等を制御部経由でアプリケーションに送信する（Ｓ５１５１、Ｓ５１６１）。同様の処理は、データベースへのアクセスが終了するまで、例えば、ｎ回実行される（Ｓ５１５ｎ、Ｓ５１６ｎ）。
【００２９】
ステップＳ５１６ｎでアクセスが終了したとき、アプリケーションは、制御部にコネクション返却要求を行い（Ｓ５２１）、制御部は、コネクション返却要求に応答して、管理テーブルの最終アクセス時刻を更新すると共に上記のステップＳ３０２、Ｓ３０３、Ｓ３０５の各ステップでの処理を行う（Ｓ５２２）。
【００３０】
図６は、コネクション取得要求があったときに制御部が行う、コネクション割り当て処理について説明するためのフローチャートである。
アプリケーションからコネクション取得要求があったとき、制御部は、プール部からアプリケーションに渡すコネクションを選択し（Ｓ６０１）、現時刻が最終アクセス時刻から一定時間経過しているか否かを判定する（Ｓ６０２）。ここで、ステップＳ６０１で選択したコネクションのコネクション状態が「動作チェック中」のときは、コネクション状態が「未使用」になるまで待ってから、ステップＳ６０２での処理が行われる。
【００３１】
ステップＳ６０２で最終アクセス時刻から一定時間経過していないと判定したとき、ステップＳ６０１で選択したコネクションをアプリケーションに渡すコネクションと決定する（Ｓ６０３）。
【００３２】
ステップＳ６０２で最終アクセス時刻から一定時間経過していると判定したとき、ステップＳ６０１で選択したコネクションに対して上記のコネクション動作チェック処理を行い（Ｓ６０４）、コネクションが正常に動作しているか否かを判定する（Ｓ６０５）。
【００３３】
ステップＳ６０５でコネクションが正常に動作していると判定したとき、ステップＳ６０３に跳び、コネクション動作チェック処理を行ったコネクションをアプリケーションに渡すコネクションと決定する。コネクションが正常に動作していないと判定したときは、コネクションプール内にコネクションが残っているか否かを判定する（Ｓ６０６）。
【００３４】
ステップＳ６０６でコネクションプール内にコネクションが残っていると判定したとき、ステップＳ６０１に戻り、上記の処理が繰り返される。コネクションプール内にコネクションが残っていないと判定したときは、新たにデータベースとのコネクションを確立し（Ｓ６０７）、ステップＳ６０３に跳び、ここで確立したコネクションをアプリケーションに渡すコネクションと決定する。
【図面の簡単な説明】
【００３５】
【図１】本発明によるコネクション割当管理方法が実行される情報処理システムの一実施例を模式的に示すブロック構成図である。
【図２】コネクションプール内に保持されたコネクションの管理テーブルの一実施例を示す図である。
【図３】アプリケーションからコネクションが返却されるときの処理について説明するためのシーケンス図である。
【図４】コネクション動作チェック処理を説明するためのフローチャートである。
【図５】アプリケーションからコネクションプールにコネクション取得要求とデータベースへのアクセスがあったときに、制御部が行う処理について説明するためのシーケンス図である。
【図６】コネクション取得要求があったときに制御部が行う、コネクション割り当て処理について説明するためのフローチャートである。
【符号の説明】
【００３６】
１  アプリケーション端末（サーバ）
２  データベース
１０  コネクションプール
１１  プール部
１１１〜１１ｎ  コネクション
１２  制御部
２０  アプリケーション
１２１  コネクション確認手段
１２２  記憶手段
【図１】
2008134767.tif 000003
【図２】
2008134767.tif 000004
【図３】
2008134767.tif 000005
【図４】
2008134767.tif 000006
【図５】
2008134767.tif 000007
【図６】
2008134767.tif 000008