20 パーティション・バッチ・ジョブ・ランタイムの構成
バッチ・ジョブは、ユーザー対話なしで実行できるタスクであり、リソースを消費する非対話型でバルク指向の長時間実行タスクに最も適しています。これらは、順次に、または並行して実行でき、動的に開始することも、スケジュールを通じて開始することもできます。WebLogic Serverでは、パーティションにスコープ指定されたバッチ・ジョブ・ランタイムがサポートされています。
注意:
WebLogic Server Multitenantドメイン・パーティション、リソース・グループ、リソース・グループ・テンプレート、仮想ターゲットおよびリソース消費管理は、WebLogic Server 12.2.1.4.0で非推奨になり、次のリリースで削除されます。この章の内容は次のとおりです。
パーティション・バッチ・ジョブ・ランタイムの構成: 概要
パーティションでバッチ・ジョブ・ランタイムを使用するには、バッチ・ジョブ用のジョブ・リポジトリ表にアクセスするために、パーティションごとに専用のデータ・ソースを構成する必要があります。パーティションにデプロイされたJava EEコンポーネントがバッチ・ジョブを発行すると、バッチ・ジョブ・ランタイムがこのデータ・ソースを使用してジョブ・リポジトリ表を更新します。
オプションで、ドメイン・レベルでパーティションにスコープ指定された管理対象エグゼキュータ・サービス(MES)テンプレートを構成することによって、アプリケーション・スコープのMESを使用するように、バッチ・ジョブ・ランタイムを構成できます。MESによってジョブが非同期的に処理されて、ジョブ・リポジトリ・データ・ソースに現在および過去のジョブのステータスが格納されます。ただし、パーティションをターゲットにしているMESテンプレートがない場合、バッチ・ジョブ・ランタイムは、Java EE 7の仕様に従って、デフォルトのJNDI名(java:comp/DefaultManagedExecutorService)にバインドされたMESを使用します。
WebLogic Serverでは、パーティション・スコープ内での複数のバッチ・ランタイム・インスタンスの使用もサポートされます。ただし、クラスタ環境または非クラスタ環境の複数の管理対象サーバー・インスタンスでレプリケートされたバッチ・アプリケーションのデプロイメントに関してと、ロード・バランシングおよび失敗したバッチ・ジョブの再開機能に関しては、注意が必要な重要な考慮事項があります。『Oracle WebLogic Serverサーバー環境の管理』の複数のバッチ・ランタイム・インスタンスの使用に関する項および『Oracle WebLogic Serverクラスタの管理』のバッチ・アプリケーションに関する項を参照してください。
ジョブ・リポジトリ表の作成ステップなど、ドメイン・スコープのバッチ・ジョブ・ランタイムの構成および管理と、複数のバッチ・ランタイム・インスタンスの使用に関する重要な考慮事項の詳細は、『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でBatchRuntimeConfigMBeanとPartitionMBeanを使用して、ジョブ・リポジトリに特定のデータベースを使用するようにバッチ・ジョブ・ランタイムを構成できます。
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テンプレートの名前です。
PartitionMBeanでgetBatchJobsManagedExecutorServiceName()メソッドを使用して、異なるMESを使用するようにバッチ・ジョブ・ランタイムを構成できます。ただし、バッチ・ジョブを発行する場合は、同じ名前のMESテンプレートが存在し、パーティションにスコープ指定されている必要があります。
Oracle WebLogic Server MBeanリファレンスのBatchConfigMBeanに関する項およびPartitionMBeanに関する項を参照してください。
WLSTコマンドの使用の詳細は、WebLogic Server WLSTコマンド・リファレンスのオンラインおよびオフラインのWebLogic Server WLSTコマンド・リファレンスに関する項を参照してください。
バッチ・ジョブ・ランタイムの問合せ
WebLogic Server管理コンソールおよびランタイムMBeanを使用して、パーティション・スコープごとにバッチ・ジョブ・ランタイムのジョブ・リポジトリ表を問い合せることができます。
注意:
バッチ・ジョブ・リポジトリが格納されるデータベースが実行中であることを確認します。たとえば、デフォルトのDerbyデータベースは、java weblogic.Serverコマンドを使用してWebLogic Serverを起動したときに自動的に起動されることはありません。データベースが実行されていない場合は、バッチ・ジョブを発行したときか、WLSTまたはWebLogic Server管理コンソールを使用してBatchJobRepositoryRuntimeMBeanにアクセスしたときに、例外がスローされます。
管理コンソールを使用したバッチ・ジョブ・ランタイムの問合せ
WebLogic Server管理コンソールを使用してジョブ・リポジトリ表を問い合せて、パーティション内のバッチ・ジョブの詳細を取得できます。
すべてのバッチ・ジョブの詳細の取得
パーティションにデプロイされたアプリケーションによって発行されるすべてのジョブに関する詳細を表示するには、「partition-nameの設定」ページで、「モニタリング」→「バッチ・ジョブ」ページに移動します。表20-1を参照してください。
表20-1 すべてのバッチ・ジョブ
| 要素名 | 説明 |
|---|---|
|
|
バッチ・ジョブの名前。 |
|
|
バッチ・ジョブを発行したアプリケーションの名前。 |
|
|
インスタンスID。 |
|
|
実行ID。 |
|
|
このジョブのバッチ・ステータス。 |
|
|
ジョブの開始時刻。 |
|
|
ジョブの完了時刻。 |
|
|
ジョブの終了ステータス。 |
ジョブの実行に関する詳細の取得
ジョブのステップ実行の詳細は、それを選択して「表示」をクリックすることで表示できます。表20-2を参照してください。
表20-2 ジョブ実行の詳細
| 要素名 | 説明 |
|---|---|
|
|
バッチ・ジョブの名前。 |
|
|
インスタンスID。 |
|
|
実行ID。 |
|
|
このジョブのバッチ・ステータス。 |
|
|
ジョブの開始時刻。 |
|
|
ジョブの完了時刻。 |
|
|
ジョブの終了ステータス。 |
ジョブのステップ実行に関する詳細の取得
ジョブ実行の各ステップに関するメトリックは、それを選択して「表示」をクリックすることで表示できます。表20-3を参照してください。
表20-3 ステップ実行の詳細
| 要素名 | 説明 |
|---|---|
|
|
バッチ・ジョブ・ステップの名前。 |
|
|
ステップID。 |
|
|
実行ID。 |
|
|
このジョブのバッチ・ステータス。 |
|
|
ジョブの開始時刻。 |
|
|
ジョブの完了時刻。 |
|
|
ジョブの終了ステータス。 |
ランタイムMBeanを使用したバッチ・ジョブ・ランタイムの問合せ
WLSTでBatchJobRepositoryRuntimeMBeanを使用してジョブ・リポジトリ表を問い合せて、パーティション内のバッチ・ジョブの詳細を取得できます。
Oracle WebLogic Server MBeanリファレンスのBatchJobRepositoryRuntimeMBeanに関する項を参照してください。
getJobDetailsを使用したすべてのバッチ・ジョブの詳細の取得
getJobDetails()属性により、ドメインにデプロイされたアプリケーションによって発行されるすべてのジョブに関する詳細が返されます。コレクションの各エントリには、表20-4に示す要素の配列が含まれます。
表20-4 getJobDetails()属性の要素
| 要素名 | 説明 |
|---|---|
|
|
バッチ・ジョブの名前。 |
|
|
バッチ・ジョブを発行したアプリケーションの名前( |
|
|
インスタンスID ( |
|
|
実行ID ( |
|
|
このジョブのバッチ・ステータス( |
|
|
ジョブの開始時刻( |
|
|
ジョブの完了時刻( |
|
|
ジョブの終了ステータス( |
次の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()属性の要素
| 要素名 | 説明 |
|---|---|
|
|
バッチ・ジョブの名前( |
|
|
インスタンスID ( |
|
|
実行ID ( |
|
|
このジョブのバッチ・ステータス( |
|
|
ジョブの開始時刻( |
|
|
ジョブの完了時刻( |
|
|
ジョブの終了ステータス( |
次の例では、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()属性の要素
| 要素名 | 説明 |
|---|---|
|
|
バッチ・ジョブ・ステップの名前( |
|
|
ステップID ( |
|
|
実行ID ( |
|
|
このジョブのバッチ・ステータス( |
|
|
ジョブの開始時刻( |
|
|
ジョブの完了時刻( |
|
|
ジョブの終了ステータス( |
次に、特定のステップ実行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 Specification Request 352: Batch Applications for the Java Platform」(
http://jcp.org/en/jsr/detail?id=352)