(57)【要約】  一実施形態に従い、複数サーバ、単一キュー（ＭＳＳＱ）コンフィギュレーションを有するトランザクション処理環境において特定のサーバにリクエストを行なうためのシステムおよび方法について説明される。ＭＳＳＱセットの各サーバは、セカンダリリクエストキューと関連付けることが可能であり、メインスレッドと、セカンダリスレッドと、内部メモリキューとを含み得る。各サーバは、アプリケーションプログラミングインターフェース（ＡＰＩ）を用いて、該サーバと関連するセカンダリリクエストキューで１つ以上のノン・ユナニマスサービスをアドバタイズし得る。特定のサーバのセカンダリスレッドは、該特定のサーバと関連するセカンダリリクエストキューから、ノン・ユナニマスサービスに関するリクエストメッセージをデキューし、デキューされたメッセージを内部メモリキューに格納するように構成されている。該特定のサーバのメインスレッドは、処理するメッセージについてメインリクエストキューを確認する前に内部メモリキューを確認する。
2018531438.tif 000002
【特許請求の範囲】
【請求項１】
トランザクション処理環境において複数サーバ、単一キュー（ＭＳＳＱ）通知を提供するためのシステムであって、前記システムは、
１つ以上のマイクロプロセッサを含むコンピュータと、
前記コンピュータで実行する、メインリクエストキューを共有する複数のサーバを有するドメインを含むトランザクション処理環境とを備え、各サーバはさらにセカンダリリクエストキューと関連付けられており、各サーバは、メインスレッドと、セカンダリスレッドと、内部メモリキューとを含み、前記システムはさらに、
各サーバによって前記サーバと関連する前記セカンダリリクエストキューで１つ以上のノン・ユナニマスサービスをアドバタイズするために使用されるアプリケーションプログラミングインターフェース（ＡＰＩ）を備え、
特定のサーバの前記セカンダリスレッドは、前記特定のサーバと関連する前記セカンダリリクエストキューから、ノン・ユナニマスサービスに関するリクエストメッセージをデキューし、かつ、前記デキューされたメッセージを前記内部メモリキューに格納するように構成されており、
前記特定のサーバの前記メインスレッドは、処理するメッセージに関して前記メインリクエストキューを確認する前に前記内部メモリキューを確認する、システム。
【請求項２】
前記１つ以上のノン・ユナニマスサービスの各々は、前記複数のサーバのうちの少なくとも１つによってサポートされない、請求項１に記載のシステム。
【請求項３】
前記メインスレッドは、前記内部メモリキューに存在するメッセージを検出し、前記ノン・ユナニマスサービスと関連するサービスルーチンを呼び出す、請求項１または２に記載のシステム。
【請求項４】
前記ＡＰＩはフラグをパラメータとみなし、前記フラグは、前記１つ以上のノン・ユナニマスサービスは前記特定のサーバの前記セカンダリリクエストキューでアドバタイズされるべきであることを示す、請求項１〜３のいずれか１項に記載のシステム。
【請求項５】
コンフィギュレーションファイルのサーバパラメータは、各サーバについて作成されるべきセカンダリリクエストを有効にするために使用される、請求項１〜４のいずれか１項に記載のシステム。
【請求項６】
前記メインリクエストキューおよび前記セカンダリリクエストキューの各々は、プロセス間連絡（ＩＰＣ）キューである、請求項１〜５のいずれか１項に記載のシステム。
【請求項７】
前記ノン・ユナニマスサービスは、前記複数のサーバのうちのただ一つのサーバによってサポートされるシングルトンサービスである、請求項１〜６のいずれか１項に記載のシステム。
【請求項８】
トランザクション処理環境において、複数サーバ、単一キュー（ＭＳＳＱ）通知を提供するための方法であって、前記方法は、
１つ以上のマイクロプロセッサを含むコンピュータで実行する、メインリクエストキューを共有する複数のサーバを有するドメインを含むトランザクション処理環境を提供するステップを備え、各サーバはさらにセカンダリリクエストキューと関連付けられており、各サーバはメインスレッドと、セカンダリスレッドと、内部メモリキューとを含み、
各サーバと関連する前記セカンダリリクエストキューで１つ以上のノン・ユナニマスサービスをアドバタイズするために前記サーバによって使用されるアプリケーションプログラミングインターフェース（ＡＰＩ）を提供するステップと、
特定のサーバと関連する前記セカンダリリクエストキューからノン・ユナニマスサービスに関するリクエストメッセージをデキューし、かつ、前記デキューされたメッセージを前記内部メモリキューに格納するために前記特定のサーバの前記セカンダリスレッドを使用するステップと、
前記特定のサーバの前記メインスレッドを介して、処理するメッセージについて前記メインリクエストキューを確認する前に前記内部メモリキューを確認するステップと、
を備える方法。
【請求項９】
前記１つ以上のノン・ユナニマスサービスの各々は、前記複数のサーバのうちの少なくとも１つによってサポートされない、請求項８に記載の方法。
【請求項１０】
前記メインスレッドは、前記内部メモリキューに存在するメッセージを検出し、前記ノン・ユナニマスサービスと関連するサービスルーチンを呼び出す、請求項８または９に記載の方法。
【請求項１１】
前記ＡＰＩはフラグをパラメータとみなし、前記フラグは、前記１つ以上のノン・ユナニマスサービスは前記特定のサーバの前記セカンダリリクエストキューでアドバタイズされるべきであることを示す、請求項８〜１０のうちいずれか１項に記載の方法。
【請求項１２】
コンフィギュレーションファイルのサーバパラメータは、各サーバについて作成されるべきセカンダリリクエストを有効にするために使用される、請求項８〜１１のいずれか１項に記載の方法。
【請求項１３】
前記メインリクエストキューおよび前記セカンダリリクエストキューの各々は、プロセス間連絡（ＩＰＣ）キューである、請求項８〜１２のいずれか１項に記載の方法。
【請求項１４】
前記ノン・ユナニマスサービスは、前記複数のサーバのうちのただ一つのサーバによってサポートされるシングルトンサービスである、請求項８〜１３のいずれか１項に記載の方法。
【請求項１５】
トランザクション処理環境において、複数サーバ、単一キュー（ＭＳＳＱ）通知を提供するための命令のセットを格納する非一時的なコンピュータ読取可能な記憶媒体であって、１つ以上のプロセッサによって実行されると、前記命令は前記１つ以上のプロセッサに、
１つ以上のマイクロプロセッサを含むコンピュータで実行する、メインリクエストキューを共有する複数のサーバを有するドメインを含むトランザクション処理環境を提供するステップを実行させ、各サーバはさらにセカンダリリクエストキューと関連付けられており、各サーバは、メインスレッドと、セカンダリスレッドと、内部メモリキューとを含み、
各サーバと関連する前記セカンダリリクエストキューで１つ以上のノン・ユナニマスサービスをアドバタイズするために前記サーバによって使用されるアプリケーションプログラミングインターフェース（ＡＰＩ）を提供するステップと、
特定のサーバと関連する前記セカンダリリクエストキューからノン・ユナニマスサービスに関するリクエストメッセージをデキューし、かつ、前記デキューされたメッセージを前記内部メモリキューに格納するように前記特定のサーバの前記セカンダリスレッドを使用するステップと、
前記特定のサーバの前記メインスレッドを介して、処理するメッセージについて前記メインリクエストキューを確認する前に前記内部メモリキューを確認するステップと、
を実行させる、非一時的なコンピュータ読取可能な記憶媒体。
【請求項１６】
前記１つ以上のノン・ユナニマスサービスの各々は、前記複数のサーバのうちの少なくとも１つによってサポートされない、請求項１５に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項１７】
前記メインスレッドは、前記内部メモリキューに存在するメッセージを検出し、前記ノン・ユナニマスサービスと関連するサービスルーチンを呼び出す、請求項１５または１６に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項１８】
前記ＡＰＩはフラグをパラメータとみなし、前記フラグは、前記１つ以上のノン・ユナニマスサービスは前記特定のサーバの前記セカンダリリクエストキューでアドバタイズされるべきであることを示す、請求項１５〜１７のいずれか１項に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項１９】
コンフィギュレーションファイルのサーバパラメータは、各サーバについて作成されるべきセカンダリリクエストを有効にするために使用される、請求項１５〜１８のいずれか１項に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項２０】
前記ノン・ユナニマスサービスは、前記複数のサーバのうちのただ一つのサーバによってサポートされるシングルトンサービスである、請求項１５〜１９のいずれか１項に記載の非一時的なコンピュータ読取可能な記憶媒体。
【請求項２１】
トランザクション処理環境において、複数サーバ、単一キュー（ＭＳＳＱ）通知を提供するための命令のセットを格納する非一時的なコンピュータ読取可能な記憶媒体であって、前記命令は、１つ以上のプロセッサによって実行されると、前記１つ以上のプロセッサに、請求項８〜１４のいずれか１項に記載の方法を実行させる、非一時的なコンピュータ読取可能な記憶媒体。
【請求項２２】
コンピュータによって実行されると、前記コンピュータシステムに請求項８〜１４のいずれか１項に記載の方法を実行させるマシン読取可能なフォーマットのプログラム命令を含む、コンピュータプログラム。
【請求項２３】
非一時的なマシン読取可能なデータ記憶媒体に格納される、請求項２２に記載の前記コンピュータプログラムを含む、コンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
著作権に関する注意
この特許文献の開示の一部は、著作権保護の対象となるものを含んでいる。この特許文献または特許開示の何者かによる複製に対しては、それが特許商標庁の特許ファイルまたは記録にある限り異議を唱えないが、そうでなければ、いかなる場合もすべての著作権を留保する。
【０００２】
優先権の主張
本願は、２０１５年１０月２２日に出願され「SYSTEM AND METHOD FOR PROVIDING MSSQ NOTIFICATIONS IN A TRANSACTIONAL PROCESSING ENVIRONMENT」と題された国際特許出願第ＰＣＴ／ＣＮ２０１５／０９２５７３号の一部継続出願であり、これに基づく優先権の利益を主張し、上記出願を本明細書に引用により援用する。
【０００３】
また、本願は、２０１６年１月１５日に出願され「SYSTEM AND METHOD FOR PROVIDING MSSQ NOTIFICATIONS IN A TRANSACTIONAL PROCESSING ENVIRONMENT」と題された米国特許出願第１４／９９７，３５８号に基づく優先権の利益を主張し、上記出願を本明細書に引用により援用する。
【０００４】
発明の分野
本発明の実施形態は、概してアプリケーションサーバ、特に、トランザクション処理環境において、複数サーバ、単一キュー（ＭＳＳＱ）通知を提供するためのシステムおよび方法に関する。
【背景技術】
【０００５】
背景
トランザクション処理環境、たとえばＴｕｘｅｄｏ環境では、リクエストキューはロードバランシングのために複数のサーバによって共有され得る。そのような複数サーバ、単一キュー（ＭＳＳＱ）コンフィギュレーションでは、各々のサーバが完全に同一のサービスのセットをサポートしなければならないのが典型的である。他の態様では、サーバが他のサーバがサポートしない１つ以上の特定のサービスをサポートする場合、特定のサービスをサポートしないこれらのサーバのうちの１つは、リクエストキューから特定のサービスについてのリクエストメッセージをデキューすることがある。したがって、ＭＳＳＱコンフィギュレーションを有するトランザクション処理環境において特定のサーバにリクエストを行なったり通知を送信したりすることは、極めて困難な場合がある。
【発明の概要】
【課題を解決するための手段】
【０００６】
概要
一実施形態に従い、複数サーバ、単一キュー（ＭＳＳＱ）コンフィギュレーションを有するトランザクション処理環境において特定のサーバにリクエストを行なうためのシステムおよび方法が説明される。トランザクション処理環境におけるメインリクエストキューは、複数のサーバによって共有可能であり、各サーバによってサポートされる１つ以上のユナニマス（unanimous）サービスをアドバタイズ可能である。セカンダリリクエストキューは、サーバごとに提供可能であり、少なくとも１つのサーバによってサポートされない１つ以上のノン・ユナニマス（non-unanimous）サービスをアドバタイズ可能である。各サーバは、メインスレッド、セカンダリスレッド、および内部メモリキューを含み得る。
【０００７】
一実施形態に従い、ユナニマスサービスに関するリクエストメッセージは、メインリクエストキューに配置することが可能であり、ＭＳＳＱセットのいずれかのサーバのメインスレッドによってデキュー可能である。ノン・ユナニマスサービスに関するリクエストメッセージは、ノン・ユナニマスサービスをサポートしているサーバのセカンダリリクエストキューに配置することが可能であり、サーバのセカンダリスレッドによってデキュー可能である。デキューされたリクエストメッセージは、サーバの内部メモリキューに格納して、サーバのメインスレッドによって処理のために取り出すことが可能である。
【０００８】
一実施形態に従い、アプリケーションプログラミングインターフェース（ＡＰＩ）を、１つ以上のノン・ユナニマスサービスをアドバタイズするために設けることができる。ドメインコンフィギュレーションファイルの１つ以上のサーバパラメータは、上記の特徴を有効にするために使用可能である。
【図面の簡単な説明】
【０００９】
【図１】一実施形態に係る、ＭＳＳＱコンフィギュレーションを有するトランザクション処理環境において特定のサーバにリクエストを行なうためのシステムを示す図である。
【図２】一実施形態に係る、ＭＳＳＱコンフィギュレーションを有するトランザクション処理環境において特定のサーバにリクエストを行なうためのシステムをさらに示す図である。
【図３】一実施形態に係る、キューテーブルエントリと、シングルトンサービス、ＭＳＳＱセットのサーバのユナニマスサービス、およびＭＳＳＱセットのサーバの各々との関係を示す図である。
【図４】一実施形態に係る、ＭＳＳＱコンフィギュレーションを有するトランザクション処理環境において特定のサーバにリクエストを行なうための方法を示す図である。
【発明を実施するための形態】
【００１０】
詳細な説明
ＭＳＳＱコンフィギュレーションを有する典型的なトランザクション処理環境では、リクエストメッセージは、メインリクエストキューに配置され、ＭＳＳＱセットの各サーバによってデキュー可能である。そのようなコンフィギュレーションによると、複数のサーバ間でのクライアントリクエストのロードバランシングによって、システムの性能が改善され得る。
【００１１】
しかしながら、ＭＳＳＱコンフィギュレーションは、ＭＳＳＱセットの各サーバが同一のサービスのサポートおよびアドバタイズを行なうことを要求するため、これによって、特定のサーバにリクエストを行なうことが困難になる。ＭＳＳＱコンフィギュレーションのこのような欠点は、性能を妨げる複数の影響を有し得る。たとえば、トランザクション処理環境は、リクエストメッセージが特定のサーバによってデキューされているか否かを確認できないため、トランザクション処理環境は性能の向上のためにＸＡ−アフィニティをサポートすることができない。
【００１２】
一実施形態によると、ここで説明されるのは、複数サーバ、単一キュー（ＭＳＳＱ）コンフィギュレーションを有するトランザクション処理環境において特定のサーバにリクエストを行なうためのシステムおよび方法である。トランザクション処理環境におけるメインリクエストキューは、複数のサーバによって共有することができ、各サーバによってサポートされる１つ以上のユナニマスサービスをアドバタイズ可能である。セカンダリリクエストキューは、サーバごとに設けることが可能であり、少なくとも１つのサーバによってサポートされない１つ以上のノン・ユナニマスサービスをアドバタイズ可能である。各サーバは、メインスレッド、セカンダリスレッド、および内部メモリキューを含み得る。
【００１３】
一実施形態によると、ノン・ユナニマスサービスがＭＳＳＱセットまたはドメインのどちらかにおいて単一のサーバインスタンスによってサポートされる場合、ノン・ユナニマスサービスはシングルトンサービスだと考えられる。
【００１４】
一実施形態によると、ユナニマスサービスに関するリクエストメッセージは、メインリクエストキューに配置可能であり、かつ、ＭＳＳＱセットにおけるいずれかのサーバのメインスレッドによってデキュー可能である。ノン・ユナニマスサービスに関するリクエストメッセージは、ノン・ユナニマスサービスをサポートしているサーバのセカンダリリクエストキューに配置可能であり、かつ、サーバのセカンダリスレッドによってデキュー可能である。デキューされたリクエストメッセージは、サーバの内部メモリキューに格納されてサーバのメインスレッドによって処理のために取り出すことが可能である。
【００１５】
一実施形態によると、アプリケーションプログラミングインターフェース（ＡＰＩ）を、該１つ以上のノン・ユナニマスサービスをアドバタイズするために設けることができる。ＡＰＩをさらに使用してノン・ユナニマスサービスまたはシングルトンサービスをサーバ、たとえば、Ｔｕｘｅｄｏサーバのセカンダリリクエストキューでアドバタイズすることが可能である。ＡＰＩを用いると、たとえ特定のサーバがＭＳＳＱセット内にある場合でも、クライアントアプリケーションは、ノン・ユナニマスサービスを通じて該特定のサーバにサービスリクエストを行なうことが可能になる。
【００１６】
一実施形態によると、上述の特徴は、サーバコンフィギュレーションファイルのサーバパラメータを通して有効にできる。この特徴が有効にされると、アプリケーションサーバはセカンダリリクエストキューを作成することができ、セカンダリスレッドはセカンダリリクエストキューからメッセージを受信する。セカンダリリクエストキューから受信されたメッセージは、メモリキューに格納可能であり、サーバのメインスレッドと交換される。
【００１７】
加えて、この特徴が有効にされると、サービスリクエストはＭＳＳＱセットにおける特定のサーバインスタンス、およびＭＳＳＱセットにおけるすべてのサーバに対して送信可能になるため、ＸＡアフィニティをトランザクション処理環境でサポート可能になる。
【００１８】
図１は、一実施形態に係る、ＭＳＳＱコンフィギュレーションを有するトランザクション処理環境において特定のサーバにリクエストを行なうためのシステムを示す。
【００１９】
図１に示すように、トランザクション処理環境１００、たとえばＴｕｘｅｄｏドメインは、複数のサーバ（たとえば、サーバＡ１０５、サーバＢ１０７、およびサーバＮ１０９）によって共有されるメインリクエストキュー１０２を備え得る。
【００２０】
図１にさらに示すように、各サーバは、メインスレッド（たとえば、メインスレッドＡ１１１、メインスレッドＢ１１３、またはメインスレッドＮ１１５）と、セカンダリスレッド（たとえば、セカンダリスレッドＡ１１７、セカンダリスレッドＢ１１９、またはセカンダリスレッド Ｎ１２１）と、内部メモリキュー（たとえば、内部メモリバッファＡ１２３、内部メモリバッファＢ１２５、または内部メモリバッファＮ１２７）とを備え得る。各サーバはさらに、セカンダリリクエストキュー（たとえば、セカンダリリクエストキューＡ１３１、セカンダリリクエストキューＢ１３３、またはセカンダリリクエストキューＮ１３５）と関連付けられ得る。
【００２１】
一実施形態によると、メインリクエストキューおよびセカンダリリクエストキューの各々はプロセス間連絡（ＩＰＣ）キューでもよく、各サーバのメインスレッドは、メッセージのためのメインリクエストキュー上でリッスン可能であり、各サーバのセカンダリスレッドは、該サーバと関連するセカンダリリクエストキュー上でリッスン可能である。
【００２２】
一実施形態によると、各サーバは、１つ以上のユナニマスサービスおよび１つ以上のノン・ユナニマスサービスをサポート可能である。ここで用いられる、ユナニマスサービスは、メインリクエストキューを共有する複数のサーバの各々によってサポートされるサービスである。一方、ノン・ユナニマスサービスは、メインリクエストキューを共有する少なくとも１つのサーバによってサポートされないサービス、すなわち、シングルトンサービスである。
【００２３】
図１に示すように、サービスＡおよびＢは、サーバＡ上のサービスＡ１５５およびＢ１５７、サーバＢ上のサービスＡ１６１およびＢ１６３、ならびにサーバＮ上のサービスＡ１６７およびＢ１６８で示すような、各サーバによってサポートされるユナニマスサービスである。一方、サービスＤおよびＥはノン・ユナニマスサービスであり、その各々は少なくとも１つのサーバによってサポートされない。たとえば、サービスＤは、サービスＤ１５９およびサービスＤ１６５で示すように、サーバＡおよびＢによってのみサポートされており、サービスＥ１６９は、サーバＮによってのみサポートされている。
【００２４】
一実施形態によると、各サーバは、ＡＰＩを用いてメインリクエストキュー上でユナニマスサービスをアドバタイズ可能であり、該サーバと関連するセカンダリリクエストキュー上でノン・ユナニマスサービスをアドバタイズ可能である。ユナニマスサービス向けのリクエストメッセージは、メインリクエストキューに配置可能であり、メインリクエストキューを共有するいずれかのサーバのメインスレッドによってデキュー可能である。
【００２５】
一実施形態によると、ＭＳＳＱセットの一部であるサーバにおけるすべてのメインスレッドは、アイドル状態の場合、メインリクエストキューからリクエストメッセージを同時にデキューするように動作している。リクエストメッセージがメインリクエストキューに配置されると、メインリクエストキューで待機しているサーバはすべてウェイクアップされ、リクエストメッセージを取り出そうとする。しかしながら、成功するのはこれらのサーバのうちの１つのみであり、他のサーバは待ち状態に戻ることが可能である。
【００２６】
上述のように、ユナニマスサービス向けのリクエストメッセージは、いずれかのサーバがアイドル状態の場合、該サーバのメインスレッドによってデキュー可能である。したがって、ノン・ユナニマスサービス向けのリクエストメッセージは、メインリクエストに配置された場合、ノン・ユナニマスサービスをサポートしないサーバのメインスレッドによってデキューし得る。
【００２７】
しかしながら、一実施形態によると、ノン・ユナニマスサービス向けのリクエストメッセージがノン・ユナニマスサービスをサポートするサーバと関連するセカンダリリクエストキューに配置されると、サーバにおけるセカンダリスレッドは、該リクエストメッセージをデキュー可能であり、サーバの内部メモリキューまたは内部メモリバッファ内にデキューされたメッセージを格納可能である。その結果、メインスレッドは、メインリクエストキューからメッセージをデキューするためにそれ自体を使用可能にする前に、処理のために利用可能なメッセージに関するセカンダリリクエストキューを確認することが可能である。
【００２８】
図２は、一実施形態に係る、ＭＳＳＱコンフィギュレーションを有するトランザクション処理環境において特定のサーバに対してリクエストを行うためのシステムを示す。
【００２９】
図２に示すように、ＭＳＳＱセットの複数のサーバのうちの１つ（サーバＡ）は、メインリクエストキューで複数のユナニマスサービス（たとえば、サービスＡおよびＢ）をアドバタイズ２５６可能であり、セカンダリリクエストキューで１つ以上のノン・ユナニマスサービス（たとえば、サービスＤ）をアドバタイズ２５８可能である。
【００３０】
一実施形態によると、 クライアント２０１は、メインリクエストキューにユナニマスサービスに関するリクエストメッセージを配置２０４可能である。サーバＡのメインスレッドがアイドル状態の場合、メインスレッドは、ディスパッチングのために、メインリクエストキューからリクエストメッセージをデキューするよう動作可能である。
【００３１】
一実施形態によると、サーバＡがクライアントから見てただ１つのスレッドサーバである場合、メインスレッドは、メインリクエストキューからリクエストメッセージを取り出した後、ユナニマスサービスと関連するサービスルーチンを呼び出すことが可能である。サーバＡがマルチスレッドサーバである場合、メインスレッドは、ユナニマスサービスと関連するサービスルーチンを呼び出すディスパッチスレッドにリクエストメッセージを渡すことができる。
【００３２】
一実施形態によると、クライアントは、特定のサーバ（たとえば、サーバＡ）でノン・ユナニマスサービスについてリクエストを行なう必要がある場合、特定のサーバのセカンダリリクエストキューにリクエストメッセージを配置２０３可能である。サーバＡのセカンダリスレッドは、リクエストメッセージをデキュー可能であり、デキューされたリクエストメッセージを特定のサーバの内部メモリキューに格納可能である。内部メモリを使用して、ディスパッチングのために、メッセージをセカンダリリクエストキューから特定のサーバのメインスレッドに移動させることが可能である。特定のサーバがシングルスレッドであるかまたはマルチスレッドであるかによって、メインスレッドはノン・ユナニマスサービスと関連するサービスルーチンを直接呼び出すことが可能である、または、リクエストメッセージを、ノン・ユナニマスサービスと関連するサービスルーチンを呼び出すディスパッチスレッドに渡すことが可能である。
【００３３】
一実施形態によると、メインスレッドは、メインリクエストキューからメッセージをデキューするためにそれ自体を利用可能にする前に、処理のために利用可能なメッセージについて内部メモリキューを確認することが可能である。
【００３４】
例示的な実施態様
一実施形態によると、各ＭＳＳＱサーバインスタンスは、単一メインリクエストキューと関連していることに加えて、セカンダリリクエストキューと関連していてもよい。ユーザは、ＵＢＢＣＯＮＦＩＧファイル内のサーバコンフィギュレーションセクションのサーバパラメータを通じてこの特徴を有効にできる。ＵＢＢＣＯＮＦＩＧファイルの例は、アプリケーションのインストレーション依存パラメータを規定するコンフィギュレーションファイルであり得る。
【００３５】
一実施形態によると、セカンダリリクエストキューから通知を受信するために、以下のステップを実行可能である。
【００３６】
１）ＭＳＳＱセットのサーバごとにセカンダリリクエストキューを作成すること。
２）ＭＳＳＱセットのサーバごとにセカンダリスレッドを作成すること。
【００３７】
３）セカンダリスレッドのためのコンテキストを作成すること。
４）各サーバのセカンダリスレッドとメインスレッドとの間でメッセージを交換するために使用可能な内部メモリキューを作成すること。
【００３８】
５）セカンダリスレッドのセカンダリリクエストキューからメッセージを受信し、内部メモリキューにメッセージを格納すること。
【００３９】
６）内部メモリキューまたはバッファからメッセージを取り出し、処理のためにメッセージをメインスレッドに渡すこと。
【００４０】
一実施形態によると、アドバタイジングアプリケーションプログラミングインターフェース（ＡＰＩ）を、セカンダリリクエストキューでノン・ユナニマスまたはシングルトンサービスをアドバタイズするように設けることが可能である。
【００４１】
一実施形態によると、アドバタイジングＡＰＩは、次のように示すことができる。
tpadvertisex(char *svcname, void (*func)(TPSVCINFO *), long flags)
上記のＡＰＩでは、有効フラグは以下のうちの一つであり得る。１）TPSINGLETON。これは、指定されたサービスが、現在のドメインまたはＭＳＳＱセットにおいて一度に一つのサーバによってのみアドバタイズ可能であることを示す。２）TPSECONDARYRQ。これは、指定されたサービスがセカンダリリクエストキューでアドバタイズ可能であることを示す。このフラグが設定されず、セカンダリリクエストキューがUBBCONFIGコンフィギュレーションファイルにおいて設定されている場合、サービスは、メインリクエストキューおよびセカンダリリクエストキューの双方でアドバタイズ可能である。
【００４２】
一実施形態によると、以下は、上述のアドバタイジングＡＰＩの例示的なtperrno標識（エラー標識）である。１）TPENOSINGLETON。これは、svcnameが現在のドメインにおいて他のサーバインスタンスで既にアドバタイズされていることを示す。２）TPENOSECONDARYRQ。これは、svcnameが関連サーバのセカンダリリクエストキューでアドバタイズされているが、SECONDARYRQが設定されていないこと、およびセカンダリリクエストキューが存在しないことを示す。
【００４３】
さらに、１つ以上のキューテーブルエントリ（ＱＴＥ）と、ＭＳＳＱセットのサーバ、ＭＳＳＱサーバのユナニマスサービス、およびＭＳＳＱセットのシングルトンサービスの各々との関係は、図３に示すように拡張可能である。図３では、「public Q」はメインリクエストキューを表し、「private Q」はセカンダリリクエストキューを表す。
【００４４】
図４は、一実施形態に係る、ＭＳＳＱコンフィギュレーションを有するトランザクション処理環境において特定のサーバにリクエストを行なうための方法を示す。
【００４５】
図４に示すように、ステップ４１１で、トランザクション処理環境を設けて１つ以上のマイクロプロセッサを備えるコンピュータ上で実行可能である。トランザクション処理環境は、複数のサーバを有するドメインを備えることが可能であり、複数のサーバはメインリクエストキューを共有し、各サーバは、さらにセカンダリリクエストキューと関連付けられ、メインスレッド、セカンダリスレッド、および内部メモリキューを備える。
【００４６】
ステップ４１３で、アプリケーションプログラミングインターフェース（ＡＰＩ）を、各サーバによってメインリクエストキューで１つ以上のユナニマスサービスをアドバタイズするために使用可能である。各ユナニマスサービスは、複数のサーバの各々によってサポートされる。ＡＰＩはさらに、各サーバによって特定のサーバと関連するセカンダリリクエストキューで１つ以上のノン・ユナニマスサービスをアドバタイズするために使用可能であり、各ノン・ユナニマスサービスは、特定のサーバによってサポートされるが、ＭＳＳＱセットの少なくとも１つの他のサーバによってサポートされない。
【００４７】
ステップ４１５で、特定のサーバのセカンダリスレッドは、特定のサーバと関連するセカンダリリクエストキューからノン・ユナニマスサービスに関するリクエストメッセージをデキューし、デキューされたリクエストメッセージを特定のサーバのメモリキューに格納する。
【００４８】
ステップ４１７で、特定のサーバのメインスレッドは、処理するメッセージについてのメインリクエストキューからのメッセージのデキューにそれ自体を利用可能にする前に、内部メモリキューを確認可能である。
【００４９】
ステップ４１９で、メインスレッドが内部メモリキューに存在するメッセージを検出した場合、特定のサーバがシングルスレッドであるか、またはマルチスレッドであるかによって、メインスレッドは、ノン・ユナニマスサービスと関連するサービスルーチンを直接呼び出すことが可能である、または、リクエストメッセージを、ノン・ユナニマスサービスと関連するサービスルーチンを呼び出すディスパッチスレッドに渡すことが可能である。
【００５０】
本発明は、本開示の教示に従ってプログラムされた、１つ以上のプロセッサ、メモリおよび／またはコンピュータ読取可能な記憶媒体を含む、１つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティングデバイス、マシン、またはマイクロプロセッサを用いて、適宜実行可能である。適切なソフトウェア符号化は、ソフトウェア分野の当業者にとって明らかであるように、本開示の教示に基づいて熟練したプログラマによって容易に準備可能である。
【００５１】
いくつかの実施形態において、本発明は、本発明のプロセスのいずれかを実行するようにコンピュータをプログラムするのに使用可能な命令が格納されている非一時的な記憶媒体またはコンピュータ読取可能な媒体（複数の媒体）であるコンピュータプログラムプロダクトを含む。上記記憶媒体の例は、フロッピー（登録商標）ディスク、光ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、マイクロドライブ、および光磁気ディスクを含む何らかの種類のディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＤＲＡＭ、ＶＲＡＭ、フラッシュメモリデバイス、磁気もしくは光学カード、ナノシステム（分子メモリＩＣを含む）、または命令および／またはデータの格納に適した何らかの種類の媒体またはデバイスを含み得るが、これらに限定される訳ではない。
【００５２】
本発明のこれまでの説明は、例示と説明を目的として提供されている。すべてを網羅すること、または、本発明を開示されている形態そのものに限定することは意図されていない。多くの修正および変形が当業者には明らかであろう。これらの修正および変形は、開示された特徴の適切な組合せを含む。これらの実施形態は、本発明の原理およびその実際の応用を最も上手く説明することによって、意図されている特定の用途に適した本発明のさまざまな実施形態とさまざまな変形を当業者が理解できるようにすることを目的として、選択されて記載されている。本発明の範囲は、次の特許請求の範囲およびその均等物によって定義されるように意図されている。
【図１】
2018531438.tif 000003
【図２】
2018531438.tif 000004
【図３】
2018531438.tif 000005
【図４】
2018531438.tif 000006
【国際調査報告】
2018531438.tif 000007
2018531438.tif 000008
2018531438.tif 000009