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

前
次

20 パーティション・バッチ・ジョブ・ランタイムの構成

この章では、Oracle WebLogic Server Multitenant (MT)パーティションでバッチ・ジョブ・ランタイムを構成する方法について説明します。この章の説明に従い、Oracle WebLogic Server管理コンソールまたはWebLogic Scripting Tool (WLST)を使用して、パーティション・レベルのバッチ・ジョブ・ランタイムを構成できます。

パーティション・バッチ・ジョブ・ランタイムの構成: 概要

バッチ・ジョブは、ユーザー対話なしで実行できるタスクであり、非対話型でバルク指向の長時間実行タスクに最も適しています(これらのタスクは、リソース消費型で、順次実行またはパラレル実行が可能であり、動的に開始するか、スケジュールを使用して開始できます)。

WebLogic Serverでは、パーティションにスコープ指定されたバッチ・ジョブ・ランタイムがサポートされています。パーティションでバッチ・ジョブ・ランタイムを使用するには、バッチ・ジョブ用のジョブ・リポジトリ表にアクセスするために、パーティションごとに専用のデータ・ソースを構成する必要があります。パーティションにデプロイされたJava EEコンポーネントがバッチ・ジョブを発行すると、バッチ・ジョブ・ランタイムがこのデータ・ソースを使用してジョブ・リポジトリ表を更新します。

オプションで、ドメイン・レベルでパーティションにスコープ指定された管理対象エグゼキュータ・サービス(MES)テンプレートを構成することによって、アプリケーション・スコープのMESを使用するように、バッチ・ジョブ・ランタイムを構成できます。MESによってジョブが非同期的に処理されて、ジョブ・リポジトリ・データ・ソースに現在および過去のジョブのステータスが格納されます。ただし、パーティションをターゲットにしているMESテンプレートがない場合、バッチ・ジョブ・ランタイムは、Java EE 7の仕様に従って、デフォルトのJNDI名(java:comp/DefaultManagedExecutorService)にバインドされたMESを使用します。

ジョブ・リポジトリ表の作成手順など、ドメイン・スコープのバッチ・ジョブ・ランタイムの構成および管理の詳細は、『Oracle WebLogic Serverサーバー環境の管理』のバッチ・ジョブ・ランタイムの構成に関する項を参照してください。

バッチ・ジョブ、バッチ処理およびバッチ処理フレームワークの詳細は、Java EE 7チュートリアルのバッチ処理に関する項を参照してください。「Java Specification Request 352: Batch Applications for the Java Platform」(http://jcp.org/en/jsr/detail?id=352)も参照してください。仕様により、バッチ・アプリケーションのプログラミング・モデルと、バッチ・ジョブのスケジュールおよび実行のランタイムが定義されます。

パーティション・バッチ・ジョブ・ランタイムの構成: 主な手順

パーティションでバッチ・ジョブ・ランタイムを構成するには、次の手順を実行する必要があります。

  • 必要に応じて、バッチ・ジョブを格納するジョブ・リポジトリ表を作成します。

  • パーティションのJDBCデータ・ソースを構成します。

  • オプションで、MESテンプレートを作成し、そのターゲットとしてパーティションを指定します。

  • WebLogic Server管理コンソールまたはWLSTを使用して、パーティション・バッチ・ジョブ・ランタイムを構成します。

前提条件

パーティションでバッチ・ジョブ・ランタイムを構成するには、ドメイン・レベルで次の前提条件を満たす必要があります。

  • ジョブ・リポジトリ表がすでに存在する必要があります。バッチ・ジョブ・ランタイムによって、ジョブ・リポジトリ表が自動的に作成されることはありません。パーティションをアクティブ化する前に、データベース管理者が表を作成する必要があります。

    ジョブ・リポジトリ表の構成の詳細は、『Oracle WebLogic Serverサーバー環境の管理』のバッチ・ジョブ・ランタイムの構成に関する項を参照してください。

    ジョブ・リポジトリ表を格納するためのサポートされているデータベースの詳細は、Oracle Technology NetworkにあるOracle Fusion Middlewareのサポートされるシステム構成ページを参照してください。

  • パーティションのJDBCデータ・ソースを構成します。各パーティションに、バッチ・ジョブ用に作成された専用のJDBCデータ・ソースが必要です。バッチ・データ・ソースのJNDI名は、PartitionMBean.setBatchJobsDataSourceJndiNameを使用して設定する必要があります。Java EEコンポーネントがバッチ・ジョブを発行すると、バッチ・ジョブ・ランタイムは、データ・ソースのJNDI名の参照により取得されるこのデータ・ソースを使用してジョブ・リポジトリ表を更新します。

    JDBCデータ・ソースの構成の詳細は、『Oracle WebLogic Server JDBCデータ・ソースの管理』のJDBCデータ・ソースの作成に関する項を参照してください。

  • オプションで、MESテンプレートを作成します。最適なパフォーマンスを得るために、ドメイン・レベルでパーティションにスコープ指定されたMESテンプレートを構成することによって、アプリケーション・スコープのMESを使用するように、パーティションのバッチ・ジョブ・ランタイムを構成できます。これにより、MESテンプレートごとに新しいMESインスタンスが作成され、パーティションにデプロイされたJava EEコンポーネントに対して発行されるバッチ・ジョブが実行されます。

    ただし、名前が設定されていない場合、バッチ・ジョブ・ランタイムは、デフォルトのJNDI名(java:comp/DefaultManagedExecutorService)にバインドされたデフォルトのJava EE MESを使用します。

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

管理コンソールを使用したパーティション・バッチ・ジョブ・ランタイムの構成

WebLogic Server管理コンソールを使用して、パーティションごとに専用のバッチ・ジョブ・ランタイムを構成できます。「partition-nameの設定」ページで、パーティションの「構成」→「一般」ページを開き、次の構成フィールドを入力します。

  • エグゼキュータ・サービス・テンプレート: パーティションにデプロイされたアプリケーションから発行されるバッチ・ジョブの実行に使用されるアプリケーション・スコープのMESインスタンスの名前。

    パーティションにバッチ・ジョブを発行する場合は、同じ名前のMESテンプレートが存在し、パーティションにスコープ指定されている必要があります。名前が設定されていない場合、バッチ・ジョブ・ランタイムは、デフォルトのJNDI名(java:comp/DefaultManagedExecutorService)にバインドされたデフォルトのJava EE MESを使用します。

  • データソースJNDI名: パーティションにデプロイされたアプリケーションから発行されるバッチ・ジョブのデータを格納するために使用される、バッチ・ジョブ・ランタイムのデータ・ソースのJNDI名。Java EEコンポーネントがバッチ・ジョブを発行すると、バッチ・ジョブ・ランタイムは、データ・ソースのJNDI名の参照により取得されるこのデータ・ソースを使用してバッチ・ジョブ・リポジトリ表を更新します。

パーティション・バッチ・ジョブ・ランタイムの構成: WLSTの例

WLSTを使用して、パーティションごとに専用のバッチ・ジョブ・ランタイムを構成できます。

WLSTでBatchRuntimeConfigMBeanPartitionMBeanを使用して、ジョブ・リポジトリに特定のデータベースを使用するようにバッチ・ジョブ・ランタイムを構成できます。

def update_partition_batch_config(partitionName, jndiName, schemaName):
    connect('admin','passwd')
    edit()
    startEdit()
    cd('/Partitions/' + <partitionName>)
    cmo.setDataSourceJndiName(jndiName)
    cd('/BatchConfig/')
    cmo.setSchemaName(schemaName)
    save()
    activate()

この例では、管理者がJNDI名jdbc/batchDSを使用してデータ・ソースを作成している場合に、update_partition_batch_config('<partitionName>','jdbc/batchDS','BATCH')を呼び出すと、jndiName: 'jdbc/batchDS'にバインドされたデータ・ソースで指定されたデータベースのスキーマ'BATCH'にすべてのジョブ・リポジトリ表を格納するようにバッチ・ジョブ・ランタイムが構成されます。

WLSTを使用して、バッチ・ジョブの実行に特定のMESを使用するようにバッチ・ジョブ・ランタイムを構成できます。ただし、まずMESテンプレートをドメイン・レベルで作成し、MESの名前をPartitionMBeanに指定する必要があります。

   connect('admin','passwd')
    edit()
    startEdit()
    cd('/Partitions'/ + <partitionName>)
    cmo.setBatchJobsExecutorServiceName('mesName')
    save()
    activate()

mesNameは、このパーティションに対してすでに作成(およびターゲットが指定)されたMESテンプレートの名前です。

PartitionMBeangetBatchJobsManagedExecutorServiceName()メソッドを使用して、異なるMESを使用するようにバッチ・ジョブ・ランタイムを構成できます。ただし、バッチ・ジョブを発行する場合は、同じ名前のMESテンプレートが存在し、パーティションにスコープ指定されている必要があります。

詳細は、Oracle WebLogic Server MBeanリファレンスBatchConfigMBeanに関する項およびPartitionMBeanに関する項を参照してください。

WLSTコマンドの使用の詳細は、『WebLogic Server WLSTコマンド・リファレンス』のオンラインおよびオフラインのWebLogic Server WLSTコマンド・リファレンスに関する項を参照してください。

バッチ・ジョブ・ランタイムの問合せ

次の管理ツールを使用して、パーティション・スコープごとにバッチ・ジョブ・ランタイムのジョブ・リポジトリ表を問い合せることができます。

注意:

バッチ・ジョブ・リポジトリが格納されるデータベースが実行中であることを確認します。たとえば、デフォルトのDerbyデータベースは、java weblogic.Serverコマンドを使用してWebLogic Serverを起動したときに自動的に起動されることはありません。データベースが実行されていない場合は、バッチ・ジョブを発行したときか、WLSTまたはWebLogic Server管理コンソールを使用してBatchJobRepositoryRuntimeMBeanにアクセスしたときに、例外がスローされます。

管理コンソールを使用したバッチ・ジョブ・ランタイムの問合せ

WebLogic Server管理コンソールを使用してジョブ・リポジトリ表を問い合せて、パーティション内のバッチ・ジョブの詳細を取得できます。

すべてのバッチ・ジョブの詳細の取得

パーティションにデプロイされたアプリケーションによって発行されるすべてのジョブに関する詳細を表示するには、「partition-nameの設定」ページで、「モニタリング」→「バッチ・ジョブ」ページに移動します。詳細は、表20-1を参照してください。


表20-1 すべてのバッチ・ジョブ

要素名 説明

Job Name

バッチ・ジョブの名前。

Application Name

バッチ・ジョブを発行したアプリケーションの名前。

Instance ID

インスタンスID。

Execution ID

実行ID。

Batch Status

このジョブのバッチ・ステータス。

Start Time

ジョブの開始時刻。

End Time

ジョブの完了時刻。

Exit Status

ジョブの終了ステータス。


ジョブの実行に関する詳細の取得

ジョブのステップ実行の詳細は、それを選択して「表示」をクリックすることで表示できます。詳細は、表20-2を参照してください。


表20-2 ジョブ実行の詳細

要素名 説明

Job Name

バッチ・ジョブの名前。

Instance ID

インスタンスID。

Execution ID

実行ID。

Batch Status

このジョブのバッチ・ステータス。

Start Time

ジョブの開始時刻。

End Time

ジョブの完了時刻。

Exit Status

ジョブの終了ステータス。


ジョブのステップ実行に関する詳細の取得

ジョブ実行の各ステップに関するメトリックは、それを選択して「表示」をクリックすることで表示できます。詳細については、表20-3を参照してください。


表20-3 ステップ実行の詳細

要素名 説明

Step Name

バッチ・ジョブ・ステップの名前。

Step ID

ステップID。

Execution ID

実行ID。

Batch Status

このジョブのバッチ・ステータス。

Start Time

ジョブの開始時刻。

End Time

ジョブの完了時刻。

Exit Status

ジョブの終了ステータス。


ランタイムMBeanを使用したバッチ・ジョブ・ランタイムの問合せ

WLSTでBatchJobRepositoryRuntimeMBeanを使用してジョブ・リポジトリ表を問い合せて、パーティション内のバッチ・ジョブの詳細を取得できます。

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

getJobDetailsを使用したすべてのバッチ・ジョブの詳細の取得

getJobDetails()属性により、ドメインにデプロイされたアプリケーションによって発行されるすべてのジョブに関する詳細が返されます。コレクションの各エントリには、表20-4に示す要素の配列が含まれます。


表20-4 getJobDetails()属性の要素

要素名 説明

JOB_NAME

バッチ・ジョブの名前。

APP_NAME

バッチ・ジョブを発行したアプリケーションの名前(String)。

INSTANCE_ID

インスタンスID (long)。

EXECUTION_ID

実行ID (long)。

BATCH_STATUS

このジョブのバッチ・ステータス(String)。

START_TIME

ジョブの開始時刻(java.util.Date)。

END_TIME

ジョブの完了時刻(java.util.Date)。

EXIT_STATUS

ジョブの終了ステータス(String)。


次のWLSTスクリプトの例では、getJobDetails()コマンドを使用して、ドメインにデプロイされたすべてのバッチ・ジョブのリストを出力しています。

connect('admin', 'admin123')
domainRuntime()
cd('BatchJobRepositoryRuntime')
cd('myserver')
executions=cmo.getJobDetails()
print "JobName  AppName   InstanceID  ExecutionID  BatchStatus  StartTime  EndTime  ExitStatus"
 print e[0], " ", e[1], " ", e[2], "   ", e[3], "   ", e[4], "  ", e[5], " ", e[6], ",e[7]

次に、getJobDetails()の実行後のサンプル出力を示します。

JobName   AppName InstanceID  ExecutionID   BatchStatus       StartTime                      EndTime                   ExitStatus
PayrollJob     lab1   9           9         COMPLETED   Fri Apr 24 10:11:00 PDT 2015   Fri Apr 24 10:11:01 PDT 2015   COMPLETED
PayrollJob     lab1   8           8         COMPLETED   Fri Apr 24 10:11:00 PDT 2015   Fri Apr 24 10:11:01 PDT 2015   COMPLETED
PayrollJob     lab1   7           7         COMPLETED   Fri Apr 24 10:11:00 PDT 2015   Fri Apr 24 10:11:01 PDT 2015   COMPLETED
PayrollJob     lab1   6           6         COMPLETED   Fri Apr 24 10:11:00 PDT 2015   Fri Apr 24 10:11:01 PDT 2015   COMPLETED
PayrollJob     lab1   5           5         COMPLETED   Fri Apr 24 10:10:57 PDT 2015   Fri Apr 24 10:10:58 PDT 2015   COMPLETED
PayrollJob     lab1   4           4         COMPLETED   Fri Apr 24 10:10:56 PDT 2015   Fri Apr 24 10:10:56 PDT 2015   COMPLETED
PayrollJob     lab1   3           3         COMPLETED   Mon Apr 20 11:32:12 PDT 2015   Mon Apr 20 11:32:12 PDT 2015   COMPLETED
PayrollJob     lab1   2           2         COMPLETED   Mon Apr 20 11:32:10 PDT 2015   Mon Apr 20 11:32:11 PDT 2015   COMPLETED
PayrollJob     lab1   1           1         COMPLETED   Mon Apr 20 11:25:26 PDT 2015   Mon Apr 20 11:25:26 PDT 2015   COMPLETED

getJobExecutionsを使用したジョブ実行の詳細の取得

getJobExecutions属性により、特定のジョブ実行に関する詳細が返されます。コレクションの各エントリには、表20-5に示す要素の配列が含まれます。


表20-5 getJobExecutions()属性の要素

要素名 説明

JOB_NAME

バッチ・ジョブの名前(String)。

INSTANCE_ID

インスタンスID (long)。

EXECUTION_ID

実行ID (long)。

BATCH_STATUS

このジョブのバッチ・ステータス(String)。

START_TIME

ジョブの開始時刻(java.util.Date)。

END_TIME

ジョブの完了時刻(java.util.Date)。

EXIT_STATUS

ジョブの終了ステータス(String)。


次の例では、WLSTスクリプトでgetJobExecutions()コマンドを使用して、特定の実行IDの詳細を取得します(getJobExecutions(6))。すべての実行IDのリストを取得するには、getJobDetails()メソッドを使用します。

connect('admin', 'admin123')
partitionRuntime()
cd('BatchJobRepositoryRuntime')
cd('myserver')
executions=cmo.getJobExecutions(6)
print  "JobName    InstanceID   ExecutionID   BatchStatus   StartTime   EndTime    ExitStatus"
for e in executions
   print e[0], "  ", e[1], "    ", e[2], "    ", e[3], "    ", e[4], "  ", e[5], "  ", e[6]

次に、getJobExecutions()の実行後のサンプル出力を示します。

JobName   InstanceID  ExecutionID   BatchStatus       StartTime                      EndTime                   ExitStatus
PayrollJob     6           6         COMPLETED   Fri Apr 24 10:11:00 PDT 2015   Fri Apr 24 10:11:01 PDT 2015    COMPLETED

getStepExecutionsを使用したジョブ・ステップ実行の詳細の取得

getStepExecutions属性により、ジョブ実行の各ステップに関するメトリックが返されます。コレクションの各エントリには、表20-6に示す要素の配列が含まれます。


表20-6 getStepExecutions()属性の要素

要素名 説明

STEP_NAME

バッチ・ジョブ・ステップの名前(String)。

STEP_ID

ステップID (long)。

EXECUTION_ID

実行ID (long)。

BATCH_STATUS

このジョブのバッチ・ステータス(String)。

START_TIME

ジョブの開始時刻(java.util.Date)。

END_TIME

ジョブの完了時刻(java.util.Date)。

EXIT_STATUS

ジョブの終了ステータス(String)。


次に、特定のステップ実行IDの詳細を取得するためにWLSTスクリプトでgetStepExecutions()を使用する例(getStepExecutions(6))を示します。すべての実行IDのリストを取得するには、getJobDetails()メソッドを使用します。

connect('admin', 'admin123')
partitionRuntime()
cd('BatchJobRepositoryRuntime')
cd('myserver')
executions=cmo.getStepExecutions(6)
print  "StepName   StepExecutionID   BatchStatus    StartTime    EndTime    ExitStatus"
   print e[0], "     ", e[1], "      ", e[2], "     ", e[3], " ", e[4], "   ", e[5], "]

次に、getStepExecutions()の実行後のサンプル出力を示します。

StepName   StepExecutionID  BatchStatus       StartTime                      EndTime                   ExitStatus
PayrollJob     6           6         COMPLETED   Fri Apr 24 10:11:00 PDT 2015   Fri Apr 24 10:11:01 PDT 2015    COMPLETED

パーティション・バッチ・ジョブ・ランタイムの構成: 関連タスクおよびリンク

次の追加情報を参照してください。

  • 『Oracle WebLogic Serverサーバー環境の管理』のバッチ・ジョブ・ランタイムの構成に関する項。

  • 管理対象エグゼキュータ・サービス・テンプレートの構成の詳細は、『Oracle WebLogic Serverサーバー環境の管理』のグローバルCMOテンプレートに関する項を参照してください。

  • JDBCデータ・ソースの構成の詳細は、『Oracle WebLogic Server JDBCデータ・ソースの管理』のJDBCデータ・ソースの作成に関する項を参照してください。

  • バッチ関連の構成およびランタイムMBeanの詳細は、Oracle WebLogic Server MBeanリファレンスBatchConfigMBeanに関する項BatchJobRepositoryRuntimeMBeanに関する項およびPartitionMBeanに関する項を参照してください。

  • WLSTコマンドの使用の詳細は、『WebLogic Server WLSTコマンド・リファレンス』のオンラインおよびオフラインのWebLogic Server WLSTコマンド・リファレンスに関する項を参照してください。

  • 『Oracle WebLogic Serverの理解』のサンプル・アプリケーションとコード例に関する項

  • Java EE 7チュートリアルのバッチ処理に関する項

  • 「Java Specification Request 352: Batch Applications for the Java Platform」(http://jcp.org/en/jsr/detail?id=352)