第21章 バッチアプリケーションの設定


JBoss EAP 7 には JSR-352 に定義されている Java バッチアプリケーションのサポートが導入されました。バッチアプリケーションを実行するための環境を設定し、batch-jberet サブシステムを使用してバッチジョブを管理できます。

バッチアプリケーションの開発に関する詳細は、JBoss EAP『 開発ガイド』の「Java バッチアプリケーション開発」を参照してください。

21.1. batch ジョブの設定

JBeret 実装を基にした batch-jberet サブシステムを使用してバッチジョブを設定できます。

デフォルトの batch-jberet サブシステム設定は、インメモリージョブリポジトリーとデフォルトのスレッドプールの設定を定義します。

<subsystem xmlns="urn:jboss:domain:batch-jberet:2.0">
    <default-job-repository name="in-memory"/>
    <default-thread-pool name="batch"/>
    <job-repository name="in-memory">
        <in-memory/>
    </job-repository>
    <thread-pool name="batch">
        <max-threads count="10"/>
        <keepalive-time time="30" unit="seconds"/>
    </thread-pool>
</subsystem>
Copy to Clipboard Toggle word wrap

デフォルトでは、サーバーの一時停止中に停止したバッチジョブはサーバーの再開時に再度開始されます。restart-jobs-on-resume プロパティーを false に設定すると STOPPED 状態のジョブをそのままにすることができます。

/subsystem=batch-jberet:write-attribute(name=restart-jobs-on-resume,value=false)
Copy to Clipboard Toggle word wrap

バッチジョブリポジトリーおよびスレッドプールを設定することもできます。

21.1.1. バッチジョブリポジトリーの設定

本項では、管理 CLI を使用してバッチジョブ情報を保存するインメモリーおよび JDBC ジョブリポジトリーを設定する方法を説明します。管理コンソールを使用してジョブリポジトリーを設定することもできます。管理コンソールを使用する場合は Configuration タブで Batch サブシステムを選択し、左側のメニューから In Memory または JDBC を選択します。

インメモリージョブリポジトリーの追加

バッチジョブ情報をメモリーに保存するジョブリポジトリーを追加できます。

/subsystem=batch-jberet/in-memory-job-repository=REPOSITORY_NAME:add
Copy to Clipboard Toggle word wrap
JDBC ジョブリポジトリー

バッチジョブ情報をデータベースに保存するジョブリポジトリーを追加できます。データソースの名前を指定してデータベースに接続する必要があります。

/subsystem=batch-jberet/jdbc-job-repository=REPOSITORY_NAME:add(data-source=DATASOURCE)
Copy to Clipboard Toggle word wrap
デフォルトのジョブリポジトリーの設定

インメモリーまたは JDBC ジョブリポジトリーをバッチアプリケーションのデフォルトのジョブリポジトリーとして設定できます。

/subsystem=batch-jberet:write-attribute(name=default-job-repository,value=REPOSITORY_NAME)
Copy to Clipboard Toggle word wrap

サーバーをリロードする必要があります。

reload
Copy to Clipboard Toggle word wrap

21.1.2. バッチスレッドプールの設定

本項では、管理 CLI を使用を使用してバッチジョブに使用されるスレッドプールおよびスレッドファクトリーを設定する方法を説明します。管理コンソールを使用してスレッドプールおよびスレッドファクトリーを設定することもできます。管理コンソールを使用する場合は Configuration タブで Batch サブシステムを選択し、左側のメニューから Thread Pools または Thread Factories を選択します。

スレッドプールの設定

スレッドプールを追加するときに max-threads を指定する必要があります。パーティションのジョブが想定どおりに実行されるように 2 つのスレッドが予約されているため、3 よりも大きい値を常に設定してください。

  1. スレッドプールを追加します。

    /subsystem=batch-jberet/thread-pool=THREAD_POOL_NAME:add(max-threads=10)
    Copy to Clipboard Toggle word wrap
  2. 必要な場合は keepalive-time の値を設定します。

    /subsystem=batch-jberet/thread-pool=THREAD_POOL_NAME:write-attribute(name=keepalive-time,value={time=60,unit=SECONDS})
    Copy to Clipboard Toggle word wrap
スレッドファクトリーの使用
  1. スレッドファクトリーを追加します。

    /subsystem=batch-jberet/thread-factory=THREAD_FACTORY_NAME:add
    Copy to Clipboard Toggle word wrap
  2. スレッドファクトリーの属性を設定します。

    • group-name - このスレッドファクトリーに作成するスレッドグループの名前。
    • priority - 作成されたスレッドの優先度。
    • thread-name-pattern - スレッドの名前の作成に使用されるテンプレート。以下のパターンを使用できます。

      • %% - パーセント記号
      • %t - ファクトリーごとのスレッドシーケンス番号
      • %g - グローバルスレッドシーケンス番号
      • %f - ファクトリーシーケンス番号
      • %i - スレッド ID
  3. スレッドファクトリーをスレッドプールに割り当てます。

    /subsystem=batch-jberet/thread-pool=THREAD_POOL_NAME:write-attribute(name=thread-factory,value=THREAD_FACTORY_NAME)
    Copy to Clipboard Toggle word wrap

    サーバーをリロードする必要があります。

    reload
    Copy to Clipboard Toggle word wrap
デフォルトスレッドプールの設定

別のスレッドプールをデフォルトのスレッドプールとして設定できます。

/subsystem=batch-jberet:write-attribute(name=default-thread-pool,value=THREAD_POOL_NAME)
Copy to Clipboard Toggle word wrap

サーバーをリロードする必要があります。

reload
Copy to Clipboard Toggle word wrap
スレッドプールの統計表示

read-resource 管理 CLI 操作を使用するとバッチスレッドプールのランタイム情報を表示できます。このランタイム情報を表示するには include-runtime=true パラメーターを使用する必要があります。

/subsystem=batch-jberet/thread-pool=THREAD_POOL_NAME:read-resource(include-runtime=true)
{
    "outcome" => "success",
    "result" => {
        "active-count" => 0,
        "completed-task-count" => 0L,
        "current-thread-count" => 0,
        "keepalive-time" => undefined,
        "largest-thread-count" => 0,
        "max-threads" => 15,
        "name" => "THREAD_POOL_NAME",
        "queue-size" => 0,
        "rejected-count" => 0,
        "task-count" => 0L,
        "thread-factory" => "THREAD_FACTORY_NAME"
    }
}
Copy to Clipboard Toggle word wrap

管理コンソールの Runtime タブで Batch サブシステムを選択して、バッチスレッドプールのランタイム情報を表示することもできます。

21.2. バッチジョブの管理

デプロイメントの batch-jberet サブシステムリソースを使用すると、バッチジョブを起動、停止、および再起動でき、実行詳細を表示することもできます。バッチジョブは 管理 CLI または 管理コンソール から管理できます。

管理 CLI からのバッチジョブの管理

バッチジョブの再開

STOPPED または FAILED 状態のジョブを再開するには、実行 ID を指定し、任意でバッチジョブの再開時に使用するプロパティーを指定します。

/deployment=DEPLOYMENT_NAME/subsystem=batch-jberet:restart-job(execution-id=EXECUTION_ID,properties={PROPERTY=VALUE})
Copy to Clipboard Toggle word wrap

実行 ID はジョブインスタンスが最後に実行された ID である必要があります。

バッチジョブの開始

バッチジョブを開始するには、ジョブ XML ファイルを指定し、任意でバッチジョブの再開時に使用するプロパティーを指定します。

/deployment=DEPLOYMENT_NAME/subsystem=batch-jberet:start-job(job-xml-name=JOB_XML_NAME,properties={PROPERTY=VALUE})
Copy to Clipboard Toggle word wrap
バッチジョブの停止

実行中のバッチジョブを停止するには、実行 ID を指定します。

/deployment=DEPLOYMENT_NAME/subsystem=batch-jberet:stop-job(execution-id=EXECUTION_ID)
Copy to Clipboard Toggle word wrap
バッチジョブ実行詳細の表示

バッチジョブ実行の詳細を表示することができます。このランタイム情報を表示するには、 read-resource 操作で include-runtime=true パラメーターを使用する必要があります。

/deployment=DEPLOYMENT_NAME/subsystem=batch-jberet:read-resource(recursive=true,include-runtime=true)
{
    "outcome" => "success",
    "result" => {"job" => {"import-file" => {
        "instance-count" => 2,
        "running-executions" => 0,
        "execution" => {
            "2" => {
                "batch-status" => "COMPLETED",
                "create-time" => "2016-04-11T22:03:12.708-0400",
                "end-time" => "2016-04-11T22:03:12.718-0400",
                "exit-status" => "COMPLETED",
                "instance-id" => 58L,
                "last-updated-time" => "2016-04-11T22:03:12.719-0400",
                "start-time" => "2016-04-11T22:03:12.708-0400"
            },
            "1" => {
                "batch-status" => "FAILED",
                "create-time" => "2016-04-11T21:57:17.567-0400",
                "end-time" => "2016-04-11T21:57:17.596-0400",
                "exit-status" => "Error : org.hibernate.exception.ConstraintViolationException: could not execute statement",
                "instance-id" => 15L,
                "last-updated-time" => "2016-04-11T21:57:17.597-0400",
                "start-time" => "2016-04-11T21:57:17.567-0400"
            }
        }
    }}}
}
Copy to Clipboard Toggle word wrap

管理コンソールからのバッチジョブの管理

管理コンソールからバッチジョブを管理するには Runtime タブに移動してサーバーを選択し、 Subsystems Batch View と選択します。 その後、Jobs タブを開きます。

バッチジョブの再開

表から最後に実行したジョブインスタンスを選択して Restart をクリックし、STOPPED または FAILED のジョブを再起動します。

バッチジョブの開始

表からジョブを選択して Start をクリックし、バッチジョブの実行を新たに開始します。

バッチジョブの停止

表で実行を選択して Stop をクリックし、実行中のバッチジョブを停止します。

バッチジョブ実行詳細の表示

表で実行が選択されると、ジョブ実行の詳細が Job Status の部分に表示されます。

21.3. バッチジョブのセキュリティー設定

batch-jberet サブシステムを設定すると、Elytron セキュリティードメインで バッチジョブを実行することができます。これにより、バッチジョブをセキュアに一時停止でき、同じセキュアなアイデンティティーで再開できます。たとえば、batch-jberet サブシステムを使用して、バッチジョブを開始するためにセキュアな RESTful エンドポイントが作成されます。RESTful エンドポイントと batch-jberet サブシステムの両方が同じセキュリティードメインを使用してセキュア化された場合、または batch-jberet セキュリティードメインが RESTful エンドポイントのセキュリティードメインドメインを信頼した場合、このように開始されたバッチジョブはセキュアに一時停止され、同じセキュアなアイデンティティーによって再開されます。

以下の管理 CLI コマンドを使用して security-domain 属性を更新し、バッチジョブのセキュリティーを設定します。

/subsystem=batch-jberet:write-attribute(name=security-domain, value=ExampleDomain)

reload
Copy to Clipboard Toggle word wrap
注記

バッチジョブには、org.wildfly.extension.batch.jberet.deployment.BatchPermission パーミッションが必要です。これは、javax.batch.operations.JobOperator に対応する startstoprestartabandonおよび read を提供します。default-permission-mapper マッパーは org.wildfly.extension.batch.jberet.deployment.BatchPermission パーミッションを提供します。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat