IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

特許7148570アプリケーションサーバを並列起動するためのシステムおよび方法
<>
  • 特許-アプリケーションサーバを並列起動するためのシステムおよび方法 図1
  • 特許-アプリケーションサーバを並列起動するためのシステムおよび方法 図2
  • 特許-アプリケーションサーバを並列起動するためのシステムおよび方法 図3
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-27
(45)【発行日】2022-10-05
(54)【発明の名称】アプリケーションサーバを並列起動するためのシステムおよび方法
(51)【国際特許分類】
   G06F 9/46 20060101AFI20220928BHJP
   G06F 9/48 20060101ALI20220928BHJP
【FI】
G06F9/46 430
G06F9/48 300Z
【請求項の数】 11
【外国語出願】
(21)【出願番号】P 2020117139
(22)【出願日】2020-07-07
(62)【分割の表示】P 2017552147の分割
【原出願日】2015-10-23
(65)【公開番号】P2020184365
(43)【公開日】2020-11-12
【審査請求日】2020-08-04
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ルブ,シャンチェン
(72)【発明者】
【氏名】ジン,ジム・ヨンシュン
(72)【発明者】
【氏名】リトル,トッド・ジェイ
(72)【発明者】
【氏名】リ,シャンドン
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2014-010772(JP,A)
【文献】国際公開第2006/043321(WO,A1)
【文献】特開平06-149765(JP,A)
【文献】米国特許第08819673(US,B1)
【文献】特開平07-334466(JP,A)
【文献】特開2007-179252(JP,A)
【文献】Timothy E. Carone,ミドルウェアと3層クライアント/サーバーシステム開発,ドクター・ドブス・ジャーナル/日本版 1997年3月号,日本,株式会社翔泳社,1997年03月01日,第6巻,第33頁-第39頁
【文献】平 初&できるシリーズ編集部,できるPRO Red Hat Enterprise Linux7,第1版,株式会社インプレス,2015年07月01日,第116頁-第121頁
【文献】TPシリーズ V1.1 運用手引書 B2WN-0022-01-00,富士通株式会社,1996年05月,第1頁 第26頁-第27頁 第120頁-第125頁
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/46-48
G06F 9/445
G06F 11/30
(57)【特許請求の範囲】
【請求項1】
トランザクション処理環境において、アプリケーションサーバを並列起動するための方法であって、
複数のサーバエントリおよび複数のグループエントリをメモリにロードするステップを含み、前記複数のサーバエントリの各々は、複数のサーバのうち1つのサーバに関連し、前記複数のグループエントリの各々は、複数のサーバグループのうち1つのサーバグループに関連しており、
前記複数のサーバエントリと前記複数のグループエントリとの間の依存関係マップを作成するステップと、
前記複数のサーバの中に依存関係を有しないサーバをチェックするステップと、
前記依存関係を有しないサーバを含む実行可能リストを作成するステップと、
前記実行可能リストに基づいて、前記複数のサーバの中に依存関係を有しないサーバを各々並列起動するステップとを含み、
前記複数のサーバの中に依存関係を有しないサーバを各々並列起動するステップは、
共有メモリ(SHM)モードで前記トランザクション処理環境を実行する間、ブートプロセスモジュールが、前記複数のサーバ内の依存関係を持たないサーバの各々を並列に起動するステップと、
前記ブートプロセスモジュールが、前記複数のサーバ内の依存関係を持たないサーバの各々と通信するためのパイプを生成するステップと、
前記複数のサーバ内の依存関係を持たないサーバの各々が、前記パイプを介して前記ブートプロセスモジュールに応答を送信するステップとを含み、
前記方法はさらに、
前記複数のサーバの中に依存関係を有しないサーバを各々初期化するステップと、
起動したサーバの各々からの応答情報を受信するステップと、
前記応答情報を1つ受信するごとに、依存関係のあるサーバが起動可能か否かを判定するステップと、
前記依存関係のあるサーバが起動可能であることに基づいて、前記依存関係のあるサーバを前記実行可能リストに含めるステップと、
前記依存関係マップおよび前記実行可能リストに従って、残りの未起動サーバを起動するステップとを含む、方法。
【請求項2】
前記依存関係マップを作成するステップは、
前記複数のサーバエントリおよび前記複数のグループエントリの各々の依存関係属性をチェックするステップと、
前記チェック中に発見した各々の依存関係属性に基づいて、前記依存関係マップを作成するステップとを含む、請求項1に記載の方法。
【請求項3】
前記依存関係マップの依存関係ループをチェックするステップと、
依存関係ループを発見した場合、前記発見した依存関係ループを回避するように、前記依存関係マップを再作成するステップとをさらに含む、請求項1または2に記載の方法。
【請求項4】
前記作成された依存関係マップに従って残りの未起動サーバを起動する前に、並列起動された前記複数のサーバの中に依存関係を有しないサーバの各々が起動されたかをチェックするステップをさらに含む、請求項1~のいずれかに記載の方法。
【請求項5】
前記複数のサーバの各々は、Tuxedoアプリケーションサーバを含む、請求項1~のいずれかに記載の方法。
【請求項6】
トランザクション処理環境において、アプリケーションサーバを並列起動するためのシステムであって、
1つ以上のマイクロプロセッサと、
前記1つ以上のマイクロプロセッサ上で動作する処理装置とを備え、前記処理装置は、動作すると、
複数のサーバエントリおよび複数のグループエントリをメモリにロードするステップを実行し、前記複数のサーバエントリの各々は、複数のサーバのうち1つのサーバに関連し、前記複数のグループエントリの各々は、複数のサーバグループのうち1つのサーバグループに関連しており、
前記複数のサーバエントリと前記複数のグループエントリとの間の依存関係マップを作成するステップと、
前記複数のサーバの中に依存関係を有しないサーバをチェックするステップと、
前記依存関係を有しないサーバを含む実行可能リストを作成するステップと、
前記実行可能リストに基づいて、前記複数のサーバの中に依存関係を有しないサーバを各々並列起動するステップとを実行し、
前記複数のサーバの中に依存関係を有しないサーバを各々並列起動するステップは、
共有メモリ(SHM)モードで前記トランザクション処理環境を実行する間、ブートプロセスモジュールが、前記複数のサーバ内の依存関係を持たないサーバの各々を並列に起動するステップと、
前記ブートプロセスモジュールが、前記複数のサーバ内の依存関係を持たないサーバの各々と通信するためのパイプを生成するステップと、
前記複数のサーバ内の依存関係を持たないサーバの各々が、前記パイプを介して前記ブートプロセスモジュールに応答を送信するステップとを含み、
前記複数のサーバの中に依存関係を有しないサーバを各々初期化するステップと、
起動したサーバの各々からの応答情報を受信するステップと、
前記応答情報を1つ受信するごとに、依存関係のあるサーバが起動可能か否かを判定するステップと、
前記依存関係のあるサーバが起動可能であることに基づいて、前記依存関係のあるサーバを前記実行可能リストに含めるステップと、
前記作成された依存関係マップに従って、残りの未起動サーバを起動するステップとをさらに実行する、システム。
【請求項7】
前記依存関係マップを作成するステップは、
前記複数のサーバエントリおよび前記複数のグループエントリの各々の依存関係属性をチェックするステップと、
前記チェック中に発見した各々の依存関係属性に基づいて、前記依存関係マップを作成するステップとを含む、請求項に記載のシステム。
【請求項8】
前記依存関係マップの依存関係ループをチェックするステップと、
依存関係ループを発見した場合、前記発見した依存関係ループを回避するように、前記依存関係マップを再作成するステップとをさらに含む、請求項6または7に記載のシステム。
【請求項9】
前記作成された依存関係マップに従って残りの未起動サーバを起動する前に、並列起動された前記複数のサーバの中に依存関係を有しないサーバの各々が起動されたかをチェックするステップをさらに含む、請求項6~8のいずれかに記載のシステム。
【請求項10】
前記複数のサーバの各々は、Tuxedoアプリケーションサーバを含む、請求項のいずれかに記載のシステム。
【請求項11】
1または複数のプロセッサに請求項1~のいずれかに記載の方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
著作権表示
この特許文書の開示の一部は、著作権保護の対象となるものを含んでいる。著作権者は、特許商標庁の特許ファイルまたは記録に掲載された特許文書または特許開示の複製に対しては異議を唱えないが、その他の場合、全ての著作権を留保する。
【0002】
発明の分野
本発明は、一般にコンピュータシステムに関し、特にトランザクション処理環境に関する。
【背景技術】
【0003】
背景
Tuxedoアプリケーションを起動(boot)するための従来のメカニズム(すなわち、tmboot)は、通常、所定の順序でTuxedoアプリケーションサーバを1つずつ起動する。大規模/複雑なアプリケーションの場合、起動時間が長くなり、望ましくない。
【発明の概要】
【0004】
概要
アプリケーションサーバを並列起動するためのシステムおよび方法が提供される。例示的な方法において、各サーバおよびサーバグループエントリに依存関係属性を関連付けることができる。この方法は、依存関係属性に基づいて、依存関係マップを作成することができる。この方法は、呼び出されると、依存関係を有しないサーバを各々並列起動することができる。依存関係マップに基づいて、残りのサーバおよびサーバグループを起動することができる。
【発明が解決しようとする課題】
【0005】
従来、Tuxedoによって、シーケンスパラメータに従ってアプリケーションサーバを起動することができる。この場合、管理者が(アプリケーションを使用するようにサーバを起動するために)tmbootを呼び出したときに、アプリケーションサーバは、割り当てられたシーケンス番号/パラメータに従って起動される。これによって、サーバの起動シーケンスが遅くなる可能性がある。
【課題を解決するための手段】
【0006】
本開示に記載のシステムおよび方法は、グループおよびサーバにDEPENDSON属性を追加
する。アプリケーションサーバは、DEPENDSONパラメータで指定された順序で起動される
。これによって、アプリケーションサーバを並列起動することができ、より迅速且つより効率的に起動プロセスを実行することができる。
【図面の簡単な説明】
【0007】
図1】一実施形態に従って、トランザクション処理環境を例示する図である。
図2】一実施形態に従って、アプリケーションサーバの並列起動を例示する図である。
図3】トランザクション処理環境においてアプリケーションサーバを並列起動するための例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【0008】
詳細な説明
本発明は、限定ではなく例示として添付の図面に示される。添付図面の図において、同様の参照符号が類似する要素を示す。なお、本開示において、一実施形態、1つの実施形態またはいくつかの実施形態の言及は、必ずしも同一の実施形態に限定されず、少なくとも1つの実施形態を意味する。
【0009】
特定の実現例を説明する場合、これらの特定の実現例は、例示のみの目的で提供されていることを理解すべきである。当業者なら、本発明の範囲および精神から逸脱することなく、他の要素および構成を使用できることを理解するであろう。
【0010】
以下の本発明の説明は、トランザクションミドルウェアマシン環境の例として、Tuxedo(登録商標)環境を使用する。制限することなく、他の種類のトランザクションミドルウェアマシン環境を使用できることは、当業者にとって明らかであろう。
【0011】
場合によって、本発明の完全な説明を提供するように、多くの具体的な詳細を記載する。しかしながら、これらの具体的な詳細がなくても、本発明を実施できることは、当業者にとって明らかであろう。また、場合によって、本発明を不明瞭にしないように、周知の特徴は、詳細に記載されない。例えば、詳細な説明において、例示として、XA分散トランザクション環境を使用する。本発明は、制限することなく、他の種類の分散トランザクション環境に適用できることは、当業者にとって明らかであろう。
【0012】
図面および詳細な説明において、共通の参照番号を使用して同様の要素を示す。したがって、他の箇所で図示された要素を説明する場合、図面に使用されている参照番号は、必ずしもこの図面に対応する詳細な説明に記載する必要がない。
【0013】
本開示は、トランザクション処理環境において、アプリケーションサーバを並列起動するためのシステムおよび方法を説明する。
【0014】
トランザクションミドルウェア環境
トランザクションミドルウェアシステムは、迅速に用意することができ且つオンデマンドで拡張することができる大規模並列処理インメモリグリッドを含む完全なJava(登録商標)EEアプリケーションサーバ複合体を提供するために、64ビットプロセッサ技術などの高性能ハードウェア、高性能大容量のメモリ、冗長インフィニバンド(登録商標)およびイーサネット(登録商標)ネットワーク、並びにWebLogic(登録商標)スイートなどのアプリケーションサーバまたはミドルウェア環境の組み合わせを含む。本発明のシステムは、アプリケーションサーバグリッド、ストレージエリアネットワーク、およびインフィニバンド(IB)ネットワークを形成するフルラック、ハーフラックまたはクォーターラックもしくは他の構成として展開されることができる。ミドルウェアマシンソフトウェアは、アプリケーションサーバ、ミドルウェアおよび他の機能、例えば、WebLogic Server、JRockitまたhはHotspot JVM、Oracle(登録商標)Linux(登録商標)あmたはSolaris、およびOracle(登録商標)VMを提供することができる。本発明のシステムは、I
Bネットワークを介して互いに通信する複数の計算ノード、IBスイッチゲートウェイ、およびストレージノードまたはストレージユニットを含むことができる。ラック構成として実装される場合、ラックの未使用部分は、空のままにしてもよく、詰め物で充填されてもよい。
【0015】
例えば、「Sun Oracle Exalogic」または「Exalogic」などのシステムにおいて、本発
明のシステムは、Oracle(登録商標)ミドルウェアSWスイートまたはWebLogicなどのミドルウェアまたはアプリケーションサーバソフトウェアをホストするために、展開容易な解決案である。本開示に説明するように、トランザクションミドルウェアシステムは、ミドルウェアアプリケーションをホストするために必要とされる1つ以上のサーバ、ストレ
ージユニット、ストレージネットワーク用のIBファブリック、および全ての他の要素を含む「グリッドボックス」(grid in a box)である。例えば、共有キャッシュアーキテ
クチャを備えるクラスタデータベースであり且つクラウドアーキテクチャの構成要素であり得るOracleリアルアプリケーションクラスタ(RAC)エンタープライズデータベースおよびExalogicオープンストレージを使用する大規模並列グリッドアーキテクチャを活用することによって、全ての種類のミドルウェアアプリケーションに高性能を提供することができる。このシステムは、線形I/O拡張性によって改善した性能を提供し、使用および管理が簡単であり、ミッションクリティカルな可用性および信頼性を提供する。
【0016】
本発明の一実施形態によれば、Tuxedoシステムのようなトランザクションミドルウェアシステムは、複数のプロセッサを備える高速マシン、例えばExalogicミドルウェアマシン、および高性能ネットワーク接続、例えばインフィニバンド(IB)ネットワークを利用することができる。
【0017】
Oracle(登録商標)Tuxedoシステムは、高性能分散型ビジネスアプリケーションの構築、実行および管理を可能にするソフトウェアモジュールのセットであり、トランザクションミドルウェアとして多くの複層アプリケーション開発ツールに使用されている。Tuxedoは、分散トランザクション処理を管理するために、分散コンピューティング環境に使用することができるミドルウェアプラットフォームである。Tuxedoは、無制限の拡張性および標準ベースの相互運用性を提供しながら、エンタープライズレガシーアプリケーションのロックを解除し、エンタープライズレガシーアプリケーションをサービス指向型アーキテクチャに拡張するための有効なプラットフォームである。
【0018】
また、Tuxedoは、リクエスト、イベント、システムプロセス間のアプリケーションキュー、およびアプリケーションサービスを効率的にルーティングする、配布するおよび管理するためのサービス指向型インフラストラクチャを提供する。Tuxedoは、事実上無制限に拡張できるため、ピークトランザクションボリュームを効率的に管理することによって、ビジネスの機敏性を向上させ、IT組織がビジネスの需要および処理量の変化に迅速に対応できるようにする。Oracle(登録商標)Tuxedoは、アクセスプロトコルに関係なく、複数のデータベース間のトランザクションを最適化し、全ての加入リソースの間のデータ整合性を保証する。このシステムは、トランザクション加入者を追跡し、拡張コミットプロトコルを監督することによって、全てのトランザクションコミットおよびロールバックを適切に処理することを保証する。
【0019】
さらに、Oracle(登録商標)Tuxedoシステムは、2フェイスコミット(2PC)処理をサポートするためのXA標準、X/Open(登録商標)ATMI API、X/Open(登録商標)「分散トランザクション処理:TX(トランザクション境界設定)仕様」、および言語国際化を行うためのX/Open(登録商標)移植性ガイド(XPG)標準を含むオープングループのX/Open(登録商標)標準に準拠することができる。トランザクションアプリケーションサーバは、XA標準を使用する場合、XAサーバとして呼ばれてもよい。例えば、Tuxedoグループに属する各Tuxedoアプリケーションサーバは、OPENINFO属性を使用するように構成することができる。Tuxedoグループ内の全てのXAサーバは、OPENINFO属性を使用して、リソースマネージャ(RM)との接続を形成することができる。
【0020】
Tuxedoアプリケーションサーバの順次起動
従来、Tuxedoによって、シーケンスパラメータに従ってアプリケーションサーバを起動することができる。この場合、管理者が(アプリケーションを使用するようにサーバを起動するために)tmbootを呼び出すときに、アプリケーションサーバは、割り当てられたシーケンス番号/パラメータに従って起動される。
【0021】
アプリケーションサーバは、シーケンスパラメータ(SEQUENCEパラメータ)によって指定された順序でまたは設定ファイル(例えば、UBBCONFIG)内のサーバエントリの順序で
起動することができる。2つ以上のサーバが同様のSEQUENCEパラメータを有する場合、tmbootは、これらのサーバを並行起動して、全てののサーバの初期化が完了するまで操作を続行しない。
【0022】
あるサーバが起動できなかった場合、tmbootは、診断結果を主要イベントログに書き込み、起動できなかったサーバが親サーバである(すなわち、起動できなかったサーバの後に起動されるサーバが正常に動作するためには起動できなかったサーバに依存する)場合を除いて、操作を続行することができる。
【0023】
このように、起動および/または初期化できなかったサーバが起動プロセス内の他のサーバを起動するための前提条件である場合、またはサーバを確認できなかった場合、アプリケーションサーバの起動プロセスに望ましくない遅延が生じる可能性がある。
【0024】
依存関係に基づくTuxedoアプリケーションサーバの並列起動
図1は、トランザクション処理環境100を例示する図である。より具体的には、図1は、トランザクション処理環境100内のTuxedoアプリケーションサーバを並列起動するためのプロセスを示している。
【0025】
一実施形態によれば、トランザクション処理環境100内で、管理者110は、tmbootなどのコマンドおよび起動マップ115を用いて、1つまたは複数のアプリケーションサーバ130、例えばTuxedoアプリケーションサーバを起動することができる。アプリケーションサーバは、起動され初期化された後、1つ以上のデータベース140と通信することができ、アプリケーション120に利用されることができる。
【0026】
一実施形態によれば、起動マップ115は、2つ以上のアプリケーションサーバ130を並行起動させる起動プランを含むことができ、サーバとサーバグループとの間の依存関係を取り込むことができる。
【0027】
一実施形態によれば、Tuxedoアプリケーションサーバを並列起動するためのオプションをtmbootに追加することができる。このオプションは、アプリケーションサーバを並列モードで起動するよう指定するために、tmbootに追加された「-p num」オプションであってもよい。また、tmbootコマンドを使用するときに、Tuxedoアプリケーションサーバの起動順序を指定するように、新しいキーワード「DEPENDSON」をUBBCONFIG内のグループおよびサーバに追加することもできる。
【0028】
一実施形態によれば、tmbootに追加された「-p num」オプションは、アプリケーションサーバを並列モードで起動するように指定することができる。「-p」は、アプリケーションサーバを並列起動することを意味する。「num」は、同時に起動できるサーバの数を意
味する。例えば、「-p 1」を指定したtmbootは、「-p」オプションを指定しないtmbootと同様である。num=0の場合、システムは、初期の数字、例えば16を使用することができ
る。
【0029】
一実施形態によれば、本開示に記載の方法およびシステムは、キーワードDEPENDSON属
性をグループおよびサーバに追加することができる。アプリケーションサーバは、DEPENDSONパラメータまたはSEQUENCEパラメータにより指定された順序でまたは設定ファイル(
例えば、UBBCONFIG(5))内のサーバエントリの順序で起動することができる。DEPENDSON
パラメータおよびSEQUENCEパラメータが同時に指定された場合、DEPENDSONパラメータが
優先する。
【0030】
一実施形態によれば、本開示に記載の方法およびシステムは、tmbootにオプション「-p
<数字>」を追加することができる。UBBCONFIGに設定されたDEPENDSON関係を有しない全
てのアプリケーションサーバは、並列して起動する。依存関係に従った順序でサーバを起動し且つ並列に動作するために、tmbootは、各サーバが起動した状態まで待機しなければならない。
【0031】
一実施形態によれば、SHM(共有メモリ)モードで動作する場合、tmbootは、並列に動
作するサーバを全て起動し、起動されたサーバからの応答を待つ。これらのサーバは、パイプを介して応答をtmbootプロセスに送信し、tmbootプロセスは、応答を受け取り、次のジョブを実行する。
【0032】
一実施形態によれば、MP(マルチプロセス)モードで動作する場合、tmbootおよびtlistenは、互いに情報を交換するもう1つのスレッドを作成することができる。このローカ
ルスレッドは、リモートマシンから送信されるメッセージを待つことができる。リモートで起動されたサーバがある場合に、続行するようにメインスレッドに通知する。リモートtlistenスレッドは、起動されたサーバからの応答を収集するように準備を整える。1つ
のサーバが起動または失敗した場合、ネットワークメッセージを介してローカルスレッドに通知する。
【0033】
図2は、一実施形態に従って、アプリケーションサーバの並列起動を例示する図である。
【0034】
一実施形態によれば、図2は、いくつかのサーバ、例えば、サーバS11(202)、S12(209)、S13(204)、S14(203)、S21(206)、S22(211)、S23(210)、S24(205)の依存関係および並列起動マップを示している。また、依存関係および並列起動マップは、G1(212)、G2(213)、G3(216)およびG4(218)を含むいくつかのサーバグループを含む。
【0035】
一実施形態によれば、図2の依存関係および並列起動マップ200は、サーバとグループとの間の依存関係に基づいて構築することができる。
【0036】
一実施形態によれば、図2に示すように、サーバグループの数は複数であってもよい。すなわち、サーバグループは、G1、G2およびG3(3つ)を含んでもよい。
【0037】
G1は、サーバS11、S12(DEPENDSON S11)、S13およびS14を含む。表記
(DEPENDSON)を用いて、S12が正常に機能するように起動され且つ初期化されたS1
2に依存することを示すことができる。
【0038】
G2は、サーバS21、S22(DEPENDSON S21)、S23(DEPENDSON G1.S13、S24)およびS24を含む。ここでは、表記(DEPENDSON)を用いて、S22が正常に機能する
ように起動され且つ初期化されたS21に依存することを示すことができる。同様に、S32は、正常に機能するように起動され且つ初期化された(G1の)S13およびS24に依存する。
【0039】
G3(DEPENDSON G1、G2)は、サーバS31およびS32を含むことができる。ここでは、G3が正常に機能するために、グループG1およびG2を完全に起動して初期化する必要がある。
【0040】
G4は、S41、S42(DEPENDSON S41, G3)、およびS3を含むことができる。こ
こでは、表記(DEPENDSON)を用いて、G4が正常に機能するように起動され且つ初期化
されたS41およびG3を示すことができる。
【0041】
一実施形態によれば、S11、S13、S14、S21、S24、S41、S43を並行起動するように、図2の並列起動マップ200を構築し、サーバを起動する(201)ことができる。S11を起動した後、S12を起動することができる。S21を起動した後、S22を起動することができる。S13を起動した後、S24を起動し、その後S23を起動することができる。G1(S11、S12、S13、S14)およびG2(S21、S22、S23、S24)を起動した後、サーバS31、S32を並列起動することができる。G3(S31、S32)およびS41を起動した後、S42を起動することができる。S42およびS43を起動した後、G4を起動し、初期化する。
【0042】
一実施形態によれば、全てのサーバを起動した後、管理者によって開始されたtmbootタスクを完了することができる。
【0043】
図3は、トランザクション処理環境においてアプリケーションサーバを並列起動するための例示的な方法を示すフローチャートである。方法は、ステップ310から始まる。ステップ310において、方法は、複数のサーバエントリおよび複数のグループエントリをメモリにロードすることができる。複数のサーバエントリの各々は、複数のサーバのうち1つのサーバに関連し、複数のグループエントリの各々は、複数のサーバグループのうち1つのサーバグループに関連する。ステップ320において、方法は、複数のサーバと複数のグループエントリとの間の依存関係マップを作成することができる。ステップ330において、方法は、引き続き、複数のサーバの中に依存関係を有しないサーバをチェックすることができる。ステップ340において、方法は、複数のサーバの中に依存関係を有しないサーバを各々並列起動することができる。ステップ350において、方法は、引き続き、複数のサーバの中に依存関係を有しないサーバを各々初期化することができる。ステップ360において、方法は、作成された依存関係マップに従って、残りの未起動サーバを起動することができる。
【0044】
起動プロセス
一実施形態によれば、tmbootが実行されると、例示的なプロセスは、サーバおよびグループエントリをTUXCONFIGからメモリにロードすることができる。次に、プロセスは、グ
ループおよびサーバのDEPENDSON属性に従って、依存関係マップ内のサーバノードとグル
ープノードとの間の依存関係を設定することができる。次に、プロセスは、ループおよび他のDEPENDSONエラーが存在するか否かをチェックすることができる。次に、プロセスは
、map_startノードからサーバを実行可能なリストに追加することができる。次に、プロ
セスは、非同期モードで利用可能なリスト内のサーバを起動し、パイプから応答情報を取得する。プロセスは、1つの応答を受け取ると、従属サーバを起動できるか否かをチェックする。起動できる場合、従属サーバを実行可能なリストに追加し、実行可能なリスト内のプロセスの起動を続行する。最後に、全てのサーバを起動した後、tmbootが終了する。
【0045】
依存関係マップの作成
一実施形態によれば、例示的なプロセスは、例えば以下の例示的な手順に従って、依存関係マップを作成することができる。
【0046】
【数1】
【0047】
【数2】
【0048】
ローカルモードでの並列起動
一実施形態によれば、プロセスは、ローカルモードで並列起動をサポートすることができる。以下、このようなプロセスの一例を示す。
【0049】
【数3】
【0050】
Unix(登録商標)の場合
tmbootプロセスは、匿名パイプを作成し、サーバプロセスを分岐し、パイプfdをサーバプロセスに送信する。
【0051】
サーバプロセスは、tpsrvinitを完了し、パイプを介して応答をtmbootに送信する。
tmbootは、非停止(non-block)モードでパイプを読み込み、応答を取得した場合、依
存関係マップをチェックして、次に起動するサーバを判断する。
【0052】
Windows(登録商標)の場合
tmbootプロセスは、名前付きパイプを作成し、サーバプロセスを分岐する。サーバは、tpsrvinitを完了した後、名前付きパイプを開放して接続し、名前付きパイプを介して応
答をtmbootに送信する。
【0053】
tmbootは、1つのスレッドを作成し、パイプ情報を待つ。応答を取得した場合、依存関係マップをチェックして、次に起動するサーバを決定する。
【0054】
SHMモード
一実施形態によれば、SHMモードで並列起動をサポートすることができる。SHMモードにおいて、tmbootは実行可能なリスト内の全てのサーバを起動し、起動されたサーバからの応答を待つ。サーバは、パイプを介して応答をtmbootプロセスに送信する。tmbootプロセスは、応答を受け取り、次のジョブを実行する。Tmbootは、非同期モードで実行可能なリスト内のサーバを起動し、起動されたサーバからの応答を収集するように準備を整える。サーバが1つの応答を受信した場合、依存先のサーバの準備が整っているか否かをチェックする。準備が整っている場合、そのサーバを実行可能なリストに追加して起動させる。
【0055】
MPモードでの並列起動
一実施形態によれば、MPモードで並列起動をサポートすることができる。MPモードにおいて、tmbootおよびtlistenは、互いに情報を交換するもう1つのスレッドを作成できる
。このローカルスレッドは、リモートマシンから送信されるメッセージを待つことができる。リモートで起動されたサーバがある場合に、続行するようにメインスレッドに通知する。リモートtlistenスレッドは、起動されたサーバからの応答を収集するように準備を
整える。1つのサーバが起動または失敗した場合、ネットワークメッセージを介してローカルスレッドに通知する。
【0056】
本発明の多くの特徴は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせに実行する、またはそれらを使用して実行する、またはそれらの援助で実行することができる。したがって、(例えば、1つ以上のプロセッサを含む)処理システムを用いて、本発明の特徴を実施することができる。
【0057】
本発明の多くの特徴は、コンピュータプログラム製品に実装され、またはこのコンピュータプログラム製品を使用して実装され、またはこのコンピュータプログラム製品の支援によって実装されることができる。このコンピュータプログラム製品は、本明細書に記載の特徴のいずれかを実行するように処理システムをプログラムするために使用できる命令を格納する記憶媒体またはコンピュータ可読媒体である。この記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、DVD、CD-ROM、マイクロドライブ、および光磁気ディスクを含む、任意の種類のディスク、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、フラッシュメモリデバイス、磁気もしくは光カード、ナノシステム(分子メモリICを含む)、または、命令および/もしくはデータを格納するのに適した任意の種類の媒体もしくは装置を含むことができるが、これらに限定されない。
【0058】
本発明の特徴は、機械可読媒体のいずれかに格納された場合、処理システムのハードウェアを制御し、本発明の結果を利用して処理システムと他の機構との相互作用を可能にするソフトウェアおよび/またはファームウェアに組み込むことができる。そのようなソフトウェアまたはファームウェアは、アプリケーションコード、装置ドライバ、オペレーティングシステムおよび実行環境/コンテナを含むことができるが、これらに限定されない。
【0059】
本発明の特徴は、例えば、特定用途向け集積回路(ASIC)などのハードウェア要素を使用して、ハードウェアで実施することもできる。本開示に記載の機能を実行するためのハードウェアステートマシンの実装は、当業者には明らかであろう。
【0060】
さらに、本発明は、本開示の教示に従ってプログラムされた1つ以上のプロセッサ、メモリおよび/またはコンピュータ可読記憶媒体を含む1つ以上の従来の汎用または専用デジタルコンピュータ、コンピューティング装置、機械、またはマイクロプロセッサを使用して都合よく実施することができる。ソフトウェア分野の当業者には明らかであるように、熟練したプログラマは、本開示の教示に基づいて、適切なソフトウェアのコーディングを容易に準備することができる。
【0061】
上記で本発明のさまざまな実施形態を説明したが、これらの実施形態は、限定ではなく例示として提示されることを理解すべきである。本発明の精神および範囲から逸脱することなく、形態および詳細のさまざまな変更を行うことができることは、当業者にとって明らかであろう。
【0062】
本発明は、特定の機能の実行およびそれらの関係を示す機能性構成ブロックを用いて説明された。これらの機能性構成ブロックの境界は、通常、説明の便宜上、本開示に任意に定義される。代替的には、別々の要素によって実行されるように示された機能は、1つの要素によって実行されてもよい。特定の機能およびそれらの関係が適切に実行される限り、代替的な境界を定義してもよい。したがって、これらの代替的な境界のいずれも、本発明の範囲および精神内に含まれる。
【0063】
本発明の上記記載は、例示および説明を目的として提供される。本発明を網羅的なものまたは開示された形態そのものに限定することを意図していない。本発明の広さおよび範囲は、上記の例示的な実施形態のいずれかによって限定されるべきではない。数多くの変
更および変形は、当業者にとって明らかであろう。修正例および変形例は、開示された特徴の任意可能な組み合わせを含む。実施形態は、本発明の原理およびその実際の応用を最も良く説明することによって、他の当業者がさまざまな実施形態および考えられる特定の用途に適したさまざまな変形に応じて本発明を理解できるように、選択され説明される。本発明の範囲は、添付の特許請求の範囲およびそれらの同等物によって規定されると意図する。
図1
図2
図3