プライマリ・コンテンツに移動
Oracle® Fusion Middleware WebLogic Server Multitenantの使用
12c (12.2.1.3.0)
E90313-02
目次へ移動
目次

前
次

19 パーティション同時管理対象オブジェクトの構成

Java EE 1.0の同時実行性ユーティリティ(Java Specification Request (JSR) 236)は、サーブレットやEJBなどのJava EEアプリケーション・コンポーネントに非同期実行機能を提供する標準APIを実装しています。WebLogic Serverでは、同時管理対象オブジェクト(CMO)がJava EEアプリケーションに対して同時実行機能を提供しています。同時管理対象オブジェクトを構成してから、それをアプリケーション・コンポーネントが使用できるようにすることができます。Oracle WebLogic Server Multitenant (MT)でパーティション・レベルの同時管理対象オブジェクト(CMO)テンプレートおよび同時制約を構成する方法について理解します。

この章の内容は次のとおりです。

パーティション同時管理対象テンプレートの構成: 概要

ドメインおよびサーバー・レベルのCMOに対するサポートの提供に加えて、WebLogic Serverでは、パーティション・スコープのタスクを実行するためのパーティション・レベルのCMOテンプレートも提供されます。

このドキュメントでは、CMOテンプレートがパーティションに適用されるため、このテンプレートについてのみ説明します。

同時管理対象オブジェクト・コンポーネント

同時実行性ユーティリティのプライマリ・コンポーネントは次のとおりです。

  • ManagedExecutorService (MES): 発行されたタスクを非同期的に実行するためにアプリケーションによって使用されます。タスクは、コンテナによって開始および管理されるスレッドで実行されます。コンテナのコンテキストは、タスクを実行するスレッドに伝播されます。

  • ManagedScheduledExecutorService (MSES): 発行されたタスクを特定の時点で非同期的に実行するためにアプリケーションによって使用されます。タスクは、コンテナによって開始および管理されるスレッドで実行されます。コンテナのコンテキストは、タスクを実行するスレッドに伝播されます。

  • ManagedThreadFactory (MTF): 管理対象スレッドを作成するためにアプリケーションによって使用されます。スレッドは、コンテナによって開始および管理されます。コンテナのコンテキストは、タスクを実行するスレッドに伝播されます。

  • ContextService: コンテナのコンテキストを取得する動的プロキシ・オブジェクトを作成して、アプリケーションがそのコンテキスト内で後で実行されるようにするか、管理対象エグゼキュータ・サービスに発行されるようにするために使用されます。コンテナのコンテキストは、タスクを実行するスレッドに伝播されます。

詳細は、Java EE 7チュートリアルJava EEの同時実行性ユーティリティに関する項を参照してください。「Java Specification Request 236: Concurrency Utilities for Java EE 1.0」(http://jcp.org/en/jsr/detail?id=236)も参照してください。

CMOによるパーティション・レベルの非同期タスク管理

WebLogic Serverでは、非同期タスク管理は表19-1にまとめられている4つのタイプのCMOで提供されます。

表19-1 非同期タスク管理を提供するCMO

管理対象オブジェクト コンテキストの伝播 自動チューニング 停止時のスレッド中断 同時長時間実行新規スレッドの制限

管理対象エグゼキュータ・サービス(MES)

コンテキストは構成に基づいて伝播されます。

短時間実行タスクのみが、指定されたワーク・マネージャによって単一の自己チューニング・スレッド・プールにディスパッチされます。

ワーク・マネージャの停止中に、すべての未完了タスクが取り消されます。

過剰な数のスレッドによってサーバーが悪影響を受けないように、MESやMSESによって作成される長時間実行スレッドの最大数を構成できます。

管理対象スケジュール済エグゼキュータ・サービス(MSES)

コンテキストは構成に基づいて伝播されます。

MESと同じ動作。

MESと同じ動作。

MESと同じ動作。

コンテキスト・サービス

コンテキストは構成に基づいて伝播されます。

該当せず

該当せず

該当せず

管理対象スレッド・ファクトリ(MTF)

コンテキストは構成に基づいて伝播されます。

newThread()メソッドによって戻されるスレッドは、単一の自己チューニング・スレッド・プールからのスレッドではなく、タスクの完了時にこのスレッド・プールに入れられることはありません。

newThread()メソッドによって作成されたスレッドは、MTFの停止時に中断されます。

過剰な数のスレッドによってサーバーが悪影響を受けないように、MTFによって作成される新規スレッドの最大数を構成できます。

WebLogic Serverには3つのタイプのJSR236 CMOがあり、各CMOは、そのスコープ、およびその定義方法や使用方法で特徴付けられます。

  • デフォルトJava EE CMO: アプリケーションがデフォルト・リソースを利用できるようにするためにJava EE標準で必要となり、これらのデフォルト・リソースに固有のJNDI名を定義します。

  • 構成ファイル内のカスタマイズ済CMO: アプリケーションおよびモジュール・レベルで定義するか、JNDIにバインドされたアプリケーション・コンポーネント環境から参照できます。

  • グローバルCMOテンプレート: WebLogic Server管理コンソールおよび構成MBeanを使用して、ドメイン、サーバーおよびパーティション・レベルの構成でテンプレートとしてグローバルに定義できます。

注意:

このドキュメントでは、グローバルCMOテンプレートがドメイン・パーティションに適用されるため、このテンプレートについてのみ説明します。構成ファイル内のデフォルトJava EE CMOおよびカスタマイズ済CMOに関する概念の詳細は、『Oracle WebLogic Serverサーバー環境の管理』の「同時管理対象オブジェクトの構成」を参照してください。

ワーク・マネージャと同様に、グローバルCMOテンプレートは、WebLogic Server管理コンソールまたは構成MBeanを使用して、ドメイン、サーバーおよびパーティション・レベルで定義できます。パーティション・レベルでのCMOの構成の詳細は、「パーティションCMOテンプレートの構成: 主な手順」を参照してください。

パーティション・レベルのMESテンプレート構成要素

表19-2に、パーティション・レベルのMESテンプレートの構成要素を定義します。

表19-2 管理対象エグゼキュータ・サービスの構成要素

名前 説明 必須 デフォルト値 範囲

name

MESの名前。

  • 名前はDefaultManagedExecutorServiceにしないでください。そうしないと、サーバーを正常に起動できません。

  • 同じ名前のパーティション・レベルのMESは同じパーティション内に構成できません。そうしないと、サーバーを正常に起動できません。

  • ManagedExecutorServiceは、任意のパーティション内の無関係なその他のタイプの管理対象オブジェクト(ContextServiceなど)と同じ名前にすることができます。

  • パーティション・レベルのMESとJSR236 MESは無関係であるため、同じ名前にすることができます。

  • 同じ名前のパーティション・レベルMESが、<resource-group-template>およびあるパーティションの<resource-group>の両方で定義されている場合、<resource-group>定義は、そのパーティションの<resource-group-template>定義をオーバーライドします。

はい

該当せず

任意の空でない文字列。

dispatch-policy

ワーク・マネージャの名前。パーティション・レベルのワーク・マネージャは、この名前で選択されます。ワーク・マネージャが存在しない場合、パーティション・レベルのデフォルトのワーク・マネージャが使用されます。

いいえ

デフォルトのワーク・マネージャ

該当せず

max-concurrent-long-running-requests

同時長時間実行タスクの最大数。

いいえ

10

[0-65534].

範囲外の場合、デフォルト値が使用されます。

long-running-priority

長時間実行デーモン・スレッドの優先度を指定する整数。指定すると、すべての長時間実行スレッドが影響を受けます。

いいえ

Thread.NORM_PRIORITY

1-10

Thread.MIN_PRIORITY,とThread.MAX_PRIORITYとの間の範囲。範囲外の場合、デフォルト値が使用されます。

パーティション・レベルのMSESテンプレート構成要素

表19-3に、パーティション・レベルのMESテンプレートに類似した、パーティション・レベルのMSESテンプレートの構成要素を定義します。

表19-3 管理対象スケジュール済エグゼキュータ・サービスの構成要素

名前 説明 必須 デフォルト値 範囲

name

MSESの名前。

ネーミング規則については、表19-2を参照してください。

はい

該当せず

任意の空でない文字列。

dispatch-policy

ワーク・マネージャの名前。

ワーク・マネージャの使用方法の規則については、表19-2を参照してください。

いいえ

デフォルトのワーク・マネージャ

該当せず

max-concurrent-long-running-requests

同時長時間実行タスクの最大数。

いいえ

10

[0-65534].

範囲外の場合、デフォルト値が使用されます。

long-running-priority

長時間実行デーモン・スレッドの優先度を指定する整数。指定すると、すべての長時間実行スレッドが影響を受けます。

いいえ

5 Thread.NORM_PRIORITY

1-1

Thread.MIN_PRIORITYThread.MAX_PRIORITYとの間の範囲。範囲外の場合、デフォルト値が使用されます。

パーティション・レベルのMTFテンプレート構成要素

表19-4に、パーティション・レベルのMTFテンプレートの構成要素を定義します。

表19-4 管理対象スレッド・ファクトリの構成要素

名前 説明 必須 デフォルト値 範囲

name

MTFの名前。

ネーミング規則については、表19-2を参照してください。

はい

該当せず

任意の空でない文字列。

priority

スレッドに割り当てる優先度。(数が大きいほど、高い優先度を示します。)

いいえ

5 Thread.NORM_PRIORITY

1-10 Thread.MIN_PRIORITYThread.MAX_PRIORITYとの間の範囲。範囲外の場合、デフォルト値が使用されます。

max-concurrent-new-threads

MTFによって作成され、タスクのrun()メソッドを引き続き実行するスレッドの最大数。

いいえ

10

[0-65534]

範囲外の場合、デフォルト値が使用されます。

表19-5に、パーティション・レベルのMTFの構成要素を定義します。

表19-5 管理対象スレッド・ファクトリの構成要素

名前 説明 必須 デフォルト値 範囲

name

MTFの名前。

ネーミング規則については、表19-2を参照してください。

はい

該当せず

任意の空でない文字列。

priority

スレッドに割り当てる優先度。(数が大きいほど、高い優先度を示します。)

いいえ

5 Thread.NORM_PRIORITY

1-10 Thread.MIN_PRIORITYThread.MAX_PRIORITYとの間の範囲。範囲外の場合、デフォルト値が使用されます。

max-concurrent-new-threads

MTFによって作成され、タスクのrun()メソッドを引き続き実行するスレッドの最大数。

いいえ

10

[0-65534]

範囲外の場合、デフォルト値が使用されます。

長時間実行スレッドのパーティション・レベルCMO制約

MESおよびMSESに発行された長時間実行タスクと、MTFのnewThread()メソッドの呼出しでは、自己チューニング・スレッド・プールの一部として管理されない新しいスレッドを作成する必要があります。実行中のスレッドの数が過大になると、サーバーのパフォーマンスと安定性に悪影響を与える可能性があるため、同時実行性ユーティリティAPIによって作成される実行中のスレッドの最大数を指定する構成が用意されています。

最大同時長時間実行リクエストの制限の設定

MESおよびMSESに発行される同時長時間実行リクエストの制限は、パーティションで指定できます。すべての構成レベルは独立しており、最大同時長時間実行リクエストはそれらのいずれも超えることはできません。

表19-6は、デプロイメント・ディスクリプタで定義できるmax-concurrent-long-running-requests要素を含む同時長時間実行リクエストの制限をまとめたものです。

表19-6 パーティションでの同時長時間実行リクエストの制限

スコープ デプロイメント・ディスクリプタ 説明 <max-concurrent-long-running-requests>要素の詳細

パーティション

config.xml内:

一般的なパーティションでは、<domain><partition>のサブ要素として。グローバル・ランタイムでは、<domain>のサブ要素として。

そのサーバーのそのパーティションに指定された同時長時間実行リクエストの制限。

オプション

範囲: [0-65534]。範囲外の場合、デフォルト値が使用されます。

デフォルト値: 50

指定された制限を超えた場合、MESまたはMSESは、発行された新しい長時間実行タスクに対して次のアクションを実行します。

  • タスク発行APIを呼び出すときにjava.util.concurrent.RejectedExecutionExceptionがスローされます。

  • ユーザーがManagedTaskListenerを使用してタスクを登録している場合、発行メソッドが失敗しているためこのリスナーには通知されません。

前述の規則は、invokeAll()メソッドとinvokeAny()メソッドには適用されないことに注意してください。これらのメソッドによって発行されたいずれかのタスクが指定された制限によって拒否された場合、次のイベントが発生します。

  • ユーザーが登録した管理対象タスク・リスナーのtaskSubmitted()メソッドが呼び出されます。

  • ユーザーが登録した管理対象タスク・リスナーのtaskDone()メソッドが呼び出され、throwableParamjavax.enterprise.concurrent.AbortedExceptionになります。

  • その他の発行済タスクは影響を受けません。

  • メソッドは、例外RejectedExecutionExceptionをスローしません

次の例に、config.xmlファイル内のmax-concurrent-long-running-requests要素に指定された値が長時間実行リクエストの最大数にどのように影響する可能性があるかを示します。

<domain>
    <server>
        <name>myserver</server>
        <max-concurrent-long-running-requests>50</max-concurrent-long-running-requests> (place 1)
    </server>
    <max-concurrent-long-running-requests>10</max-concurrent-long-running-requests> (place 2)
    <partition>
        <name>mypartition</name>
    <max-concurrent-long-running-requests>5</max-concurrent-long-running-requests> (place 3)

    </partition>
    <server-template>
        <name>mytemplate</name>
        <max-concurrent-long-running-requests>50</max-concurrent-long-running-requests> (place 4)
    </server-template>
</domain>

  • place 1: サーバー・インスタンスmyserverで定義されているMESとMSESに影響します。そのサーバー・インスタンスで実行されているすべてのMESとMSESは、長時間実行リクエストを合計で最大50件のみ作成できます。

  • place 2: ドメインで定義されるMESおよびMSESにのみ影響します。パーティション・レベルのMESとMSESには影響しません。ドメインで実行されているすべてのMESとMSESは、長時間実行リクエストを合計で最大10件作成できます。

  • place 3: mypartitionで定義されているMESとMSESにのみ影響します。パーティションmypartitionで実行されているすべてのMESとMSESは、長時間実行リクエストを合計で最大5件作成できます。

  • place 4: テンプレートmytemplateに適用されるサーバー・インスタンスで定義されているMESとMSESに影響します。そのサーバー・インスタンスで実行されているすべてのMESとMSESは、長時間実行リクエストを合計で最大50件のみ作成できます。

次の例に、config.xmlファイル内のmax-concurrent-long-running-requests要素に指定された値が長時間実行リクエストの最大数にどのように影響する可能性があるかを示します。

次の場合は、いずれの制限も超過しておらず、前述のアクションは実行されません。

  • 120の長時間実行タスクがmanaged-executor-service1に発行され、それらのうち115は完了し、5つが実行中であると仮定すると、1つの長時間実行タスクがmanaged-executor-service1に追加で発行された場合、制限は超えていないため実行されます。

次の場合は、制限の1つを超過するため、前述のアクションが実行されます。

  • 10の長時間実行タスクがmanaged-scheduled-executor-service1によって実行されていると仮定すると、1つの長時間実行タスクがmanaged-scheduled-executor-service1に追加で発行された場合、managed-scheduled-executor-service1の制限を超過します。

  • 10の長時間実行タスクがapplication1によって実行され、40がapplication2によって実行されていると仮定すると、1つの長時間実行タスクがapplication1またはapplication2に追加で発行された場合、partition1の制限を超過します。

  • 10の長時間実行タスクがapplication1によって実行され、30がapplication2によって実行され、60がpartition2によって実行されていると仮定すると、1つの長時間実行タスクがapplication1application2またはpartition2に追加で発行された場合、server1の制限を超過します。

server1(100)
    |---partition1(50)
         |---application1
              |---managed-scheduled-executor-service1(not specified)
              |---module1
                   |---managed-executor-service1(20)
                   |---managed-scheduled-executor-service2(not specified)
        |---application2
    |---partition2(70)

最大同時新規スレッドの制限の設定

MTFのnewThread()メソッドを呼び出して作成された同時新規実行スレッドの制限は、管理対象オブジェクト、ドメインおよびサーバー・レベルで指定できます。すべての構成レベルは独立しており、最大同時新規実行スレッドはそれらのいずれも超えることはできません。

実行スレッドとは、MTFによって作成され、そのrun()メソッドがまだ完了していないスレッドであることに注意してください。

表19-7は、デプロイメント・ディスクリプタで定義できる要素<max-concurrent-new-threads>を含む同時新規実行スレッドの制限をまとめたものです。

表19-7 同時新規実行スレッドの制限

スコープ デプロイメント・ディスクリプタ 説明 <max-concurrent-long-running-requests>要素の詳細

パーティション

config.xml内:

一般的なパーティションでは、<domain><partition>のサブ要素として。グローバル・ランタイムでは、<domain>のサブ要素として。

そのサーバーのそのパーティションに指定された同時新規実行スレッドの制限。

オプション

範囲: [0-65534]。範囲外の場合、デフォルト値が使用されます。

デフォルト値: 50

指定された制限を超えた場合、MTFのnewThread()メソッドへの呼出しでは、ThreadFactory.newThread Javadocに一致するようにnullを返します。

パーティションCMOテンプレートの構成: 主な手順

WebLogic Server管理コンソールおよび構成MBeanを使用して、パーティションの構成でグローバルCMOをテンプレートとして定義できます。CMOテンプレートは、パーティション内の任意のアプリケーションまたはアプリケーション・コンポーネントに割り当てることができます。

注意:

マルチテナントのパーティション化されたドメインは、WebLogic Server Premium Editionでのみ使用できます。「WebLogic Server MTについて」を参照してください。

パーティション内で次の3つのタイプのCMOテンプレートを定義できます。

  • 管理対象エグゼキュータ・サービス

  • 管理対象スケジュール済エグゼキュータ・サービス

  • 管理対象スレッド・ファクトリ

たとえば、managed-executor-service-templateを定義している場合、パーティションにデプロイされた各アプリケーションに対して一意のMESインスタンスが作成されます。

管理コンソールでのパーティション・スコープCMOテンプレートの構成

CMOテンプレートは、WebLogic Server管理コンソールを使用してパーティションに構成およびスコープ指定することができます。

  1. 「ドメイン構造」ツリーで、「環境」を展開し、「同時テンプレート」をクリックします。
  2. 「新規」をクリックして、次のいずれかのテンプレート・オプションを選択します。
    • 管理対象エグゼキュータ・サービス・テンプレート

    • 管理対象スケジュール済エグゼキュータ・サービス・テンプレート

    • 管理対象スレッド・ファクトリ・テンプレート

  3. 新規テンプレートの作成ページで、必要に応じてテンプレートのプロパティを入力します。プロパティは、作成する同時テンプレートのタイプによって異なります。
  4. 「次」をクリックします。
  5. 同時テンプレートのターゲットとするパーティションを選択します。

    選択したパーティションにデプロイされたアプリケーションのみがこの同時テンプレートを使用できます。

  6. 「終了」をクリックします。「同時テンプレートのサマリー」ページが表示され、新しいパーティション・スコープの同時テンプレートがリストされます。
  7. 必要に応じてその他の同時テンプレートを作成するには、これらの手順を繰り返します。

ドメインおよびサーバー・スコープのCMOテンプレートの構成の詳細は、『Oracle WebLogic Serverサーバー環境の管理』のグローバルCMOテンプレートに関する項を参照してください。

MBeanでのCMOテンプレートの構成

CMOテンプレートは、PartitionMBeanで次の構成MBeanを使用して構成できます。

Oracle WebLogic Server MBeanリファレンスPartitionMBeanに関する項を参照してください。

パーティションの同時制約の構成: 主な手順

制約についても、WebLogic Server管理コンソールおよび構成MBeanを使用してパーティション・スコープに対して定義できます。

管理コンソールでのパーティションの同時制約の構成

同時制約は、WebLogic Server管理コンソールを使用してパーティションごとに構成できます。

  1. 「ドメイン構造」ツリーで、「ドメイン・パーティション」をクリックします。
  2. 「ドメイン・パーティションのサマリー」表で、構成するパーティションを選択します。
  3. partition-nameの設定」ページで、パーティションの「構成」→「同時実行性」ページを開きます
  4. 次の同時制約オプションのいずれかまたはすべての値を指定します。
    • 最大同時長時間実行リクエスト: パーティション・スコープですべての管理対象エグゼキュータ・サービスまたは管理対象スケジュール済エグゼキュータ・サービスに発行できる同時長時間実行リクエストの最大数。

      「最大同時長時間実行リクエストの制限の設定」を参照してください。

    • 最大同時新規スレッド: パーティション・スコープですべての管理対象スレッド・ファクトリによって作成可能な同時新規スレッドの最大数。

      「最大同時新規スレッドの制限の設定」を参照してください。

  5. 「保存」をクリックします。

MBeanでの同時制約の構成

同時制約は、PartitionMBeanで次のメソッドを使用して、パーティションごとに構成できます。

  • maxConcurrentLongRunningRequests() - パーティション・スコープですべての管理対象エグゼキュータ・サービスまたは管理対象スケジュール済エグゼキュータ・サービスに発行できる同時長時間実行リクエストの最大数。

    「最大同時長時間実行リクエストの制限の設定」を参照してください。

  • maxConcurrentNewThreads() - パーティション・スコープですべての管理対象スレッド・ファクトリによって作成可能な同時新規スレッドの最大数。

    「最大同時新規スレッドの制限の設定」を参照してください。

WebLogic Server MBeanの使用の詳細は、Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発のJMXを使用したWebLogic Server MBeanへのアクセスに関する項を参照してください。

パーティション・レベルCMOテンプレートのモニタリング

同時制約は、直接問い合せるか、MBeanを介して問い合せるか、WebLogic Server管理コンソールを使用して問い合せることができます。

管理コンソールでのCMOテンプレートのモニタリング

CMOテンプレートは、管理コンソールを使用してモニターできます。

CMOで作成されたスレッドをパーティションでモニターするには、次のようにします。

  1. 「ドメイン構造」ツリーで、「ドメイン・パーティション」をクリックします。

  2. 「ドメイン・パーティションのサマリー」表で、モニターするパーティションを選択します。

  3. partition-nameの設定」ページで、「モニタリング」→「同時テンプレート」タブを選択します。

    表では、パーティションにターゲット指定されているCMOテンプレートの構成情報を示します。

MBeanでのCMOテンプレートのモニタリング

パーティションのCMOテンプレートは、次のMBean属性からアクセスできるConcurrentManagedObjectsRuntimeMBeanを使用してモニターできます。

  • PartitionRuntimeMBean.ConcurrentManagedObjectsRuntime - パーティションにターゲット指定されているCMOテンプレートの構成情報を示します。

『Oracle WebLogic Server MBeanリファレンス』ConcurrentManagedObjectsRuntimeMBeanに関する項を参照してください。

WebLogic Server MBeanの使用の詳細は、Oracle WebLogic Server JMXによるカスタム管理ユーティリティの開発のJMXを使用したWebLogic Server MBeanへのアクセスに関する項を参照してください。

パーティション同時管理対象オブジェクトの構成: 関連タスクおよびリンク