バッチ・ジョブは、ユーザー対話なしで実行できるタスクであり、非対話型でバルク指向の長時間実行タスクに最も適しています(これらのタスクは、リソース消費型で、順次実行またはパラレル実行が可能であり、動的に開始するか、スケジュールを使用して開始できます)。
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で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コマンド・リファレンスに関する項を参照してください。
次の管理ツールを使用して、パーティション・スコープごとにバッチ・ジョブ・ランタイムのジョブ・リポジトリ表を問い合せることができます。
注意:
バッチ・ジョブ・リポジトリが格納されるデータベースが実行中であることを確認します。たとえば、デフォルトの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。 |
|
このジョブのバッチ・ステータス。 |
|
ジョブの開始時刻。 |
|
ジョブの完了時刻。 |
|
ジョブの終了ステータス。 |
WLSTでBatchJobRepositoryRuntimeMBean
を使用してジョブ・リポジトリ表を問い合せて、パーティション内のバッチ・ジョブの詳細を取得できます。
詳細は、『Oracle WebLogic Server MBeanリファレンス』のBatchJobRepositoryRuntimeMBeanに関する項を参照してください。
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
属性により、特定のジョブ実行に関する詳細が返されます。コレクションの各エントリには、表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
属性により、ジョブ実行の各ステップに関するメトリックが返されます。コレクションの各エントリには、表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 EE 7チュートリアルのバッチ処理に関する項
「Java Specification Request 352: Batch Applications for the Java Platform」(http://jcp.org/en/jsr/detail?id=352
)