プライマリ・コンテンツに移動
Oracle® Fusion Middleware WebLogic Server Multitenantの使用
12c (12.2.1)
E67376-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

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

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

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

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

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

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

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

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

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

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

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

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

  • オプションで、MESテンプレートを作成し、それをパーティションにターゲット設定します。

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

前提条件

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

  • JobRepository表が存在している - バッチ・ランタイムでJobRepository表が自動的に作成されることはありません。パーティションをアクティブ化する前に、DB管理者が表を作成する必要があります。

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

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

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

    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テンプレートに関する項を参照してください。

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

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

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

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

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

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

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

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

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'にすべてのJobRepository表を格納するようにバッチ・ランタイムが構成されます。

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コマンド・リファレンスに関する項を参照してください。

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

次の管理ツールを使用して、パーティション・スコープごとにバッチ・ランタイムのJobRepositoryを問合せできます。


注意:

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

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

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

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

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

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

要素名 説明

ジョブ名

バッチ・ジョブの名前。

アプリケーション名

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

インスタンスID

インスタンスID。

実行ID

実行ID。

バッチ・ステータス

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

開始時刻

ジョブの開始時刻。

終了時刻

ジョブの完了時刻。

終了ステータス

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


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

ジョブのステップ実行の詳細は、それを選択して「表示」をクリックすることで表示できます。

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

要素名 説明

ジョブ名

バッチ・ジョブの名前。

インスタンスID

インスタンスID。

実行ID

実行ID。

バッチ・ステータス

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

開始時刻

ジョブの開始時刻。

終了時刻

ジョブの完了時刻。

終了ステータス

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


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

ジョブ実行の各ステップに関するメトリックは、それを選択して「表示」をクリックすることで表示できます。

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

要素名 説明

ステップ名

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

ステップID

ステップID。

実行ID

実行ID。

バッチ・ステータス

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

開始時刻

ジョブの開始時刻。

終了時刻

ジョブの完了時刻。

終了ステータス

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


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

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

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

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

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

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

要素名 説明

JOB_NAME

バッチ・ジョブの名前。

APP_NAME

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

INSTANCE_ID

インスタンスID (長)。

EXECUTION_ID

実行ID (長)。

BATCH_STATUS

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

START_TIME

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

END_TIME

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

EXIT_STATUS

ジョブの終了ステータス(文字列)。


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

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を使用したジョブ実行の詳細の取得

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

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

要素名 説明

JOB_NAME

バッチ・ジョブの名前(文字列)。

INSTANCE_ID

インスタンスID (長)。

EXECUTION_ID

実行ID (長)。

BATCH_STATUS

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

START_TIME

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

END_TIME

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

EXIT_STATUS

ジョブの終了ステータス(文字列)。


次に、特定のExecutionIDの詳細を取得するためにWLSTスクリプトでgetJobExectuions()を使用する例(getJobExecutions(6))を示します。すべてのExecutionIDのリストを取得するには、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属性により、ジョブ実行の各ステップに関するメトリックが返されます。コレクションの各エントリには、次の要素の配列が含まれます。

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

要素名 説明

STEP_NAME

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

STEP_ID

ステップID (長)。

EXECUTION_ID

実行ID (長)。

BATCH_STATUS

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

START_TIME

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

END_TIME

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

EXIT_STATUS

ジョブの終了ステータス(文字列)。


次に、特定のステップ実行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)