Liberty 組み込みメッセージング・プロバイダーの使用による複数サーバー・パーティションのサポートの有効化
一部のサーバーがバッチ・ディスパッチャーとして機能し、それ以外のサーバーがバッチ executor として機能するよう、バッチ環境をセットアップできます。
始める前に
- 組み込みメッセージ・エンジンがどこでホストされるのかを決定してください。ホストできるのは、バッチ・ディスパッチ・サーバー、バッチ executor サーバー、または分離サーバーです。このサーバーが構成されてからでないと、 このタスクを実行することはできません。JMS 接続ファクトリーおよびアクティベーション・スペックは、 その構成内でメッセージング・エンジン・サーバーを参照します。
- メッセージング・エンジンを構成するには、次のようにします。
- wasJmsServer-1.0 フィーチャーを server.xml に追加します。
- messageEngine エレメントを追加することによってメッセージング・エンジンを定義します。バッチ・ディスパッチャーおよびバッチ executor のために使用されるキューを定義します。次の例は、server.xml ファイル内のメッセージング・エンジン構成を示します。
<!-specify the ports for the message engine. The ports in this example are the default ports. This element is not needed when the default ports are used. --> <wasJmsEndpoint host="*" wasJmsPort="7280" wasJmsSSLPort="7290" enabled="true"> </wasJmsEndpoint> <messagingEngine> <!- queue for batch jms message. --> <queue id="batchLibertyQueue" forceReliability="ReliablePersistent" receiveAllowed="true"/> </messagingEngine>
このタスクについて
バッチ・ディスパッチャーは、外部クライアントからの要求を受け入れ、それらの要求をバッチ executor で使用できるようにします。バッチ executor は、定義された能力に合致する要求を受け取って、それらの要求を実行します。パーティションを実行するようにジョブが構成されている場合、バッチ executor はそれらを他の executor が実行に使用できるようにします。バッチ executor は Java Messaging Service (JMS) を使用して互いに通信します。このタスクは、Liberty 組み込みメッセージング・プロバイダーを使用したバッチ・ディスパッチ・サーバーとバッチ executor の構成を支援します。
手順
- バッチ JMS ディスパッチャーを構成します。
- server.xml 内で wasJmsClient-2.0 フィーチャーをフィーチャー・マネージャーに追加することによって、JMS サポートを有効にします。
- バッチ・ディスパッチャーをホストするサーバー上で server.xml ファイルに batchJmsDispatcher エレメントを追加します。以下に例を示します。
<batchJmsDispatcher connectionFactoryRef={reference to a configured JMS connection factory} queueRef={reference to a configured JMS queue} />
注: connectionFactoryRef 属性および queueRef 属性を指定しない場合、connectionFactoryRef のデフォルト値は batchConnectionFactory、queueRef のデフォルト値は batchJobSubmissionQueue です。batchJmsDispatcher エレメントを <batchJmsDispatcher/> と指定することができます。それでも、 server.xml ファイル内で、batchConnectionFactory JMS 接続ファクトリーおよび JMS batchJobSubmissionQueue キューを構成する必要はあります。 - 対応する JMS 接続ファクトリーおよび JMS キューをサーバー構成に追加します。これは、バッチ構成に特有のものではありません。 次の例は、バッチ JMS ディスパッチャー構成とその JMS 構成を示します。注: remoteServerAddress 属性は、Liberty メッセージング・エンジンをホストするサーバーの host:port をポイントします。
<batchJmsDispatcher connectionFactoryRef="batchConnectionFactory" queueRef="batchJobSubmissionQueue" /> <jmsConnectionFactory id="batchConnectionFactory" jndiName="jms/batch/connectionFactory"> <properties.wasJms remoteServerAddress="host:7280:BootstrapBasicMessaging"> </properties.wasJms> </jmsConnectionFactory> <jmsQueue id="batchJobSubmissionQueue" jndiName="jms/batch/jobSubmissionQueue"> <properties.wasJms deliveryMode="Persistent" queuename="batchLibertyQueue"> </properties.wasJms> </jmsQueue>
注: 例に示されているように、jmsQueueConnectionFactory エレメントではなく、jmsConnectionFactory エレメントを参照していることを確認してください。jmsQueueConnectionFactory エレメントを使用した場合、機能しません。構成には jmsConnectionFactory エレメントと jmsQueue エレメントの両方を含め、jmsQueueConnectionFactory エレメントは含めないでください。
- バッチ・ジョブを実行するためのバッチ JMS executor を構成します。
- server.xml 内で wasJmsClient-2.0 フィーチャーをフィーチャー・マネージャーに追加することによって、JMS サポートを有効にします。
- バッチ executor をホストするサーバー上で batchJmsDispatcher ファイルに batchJmsExecutor エレメントを追加します。
<batchJmsExecutor activationSpecRef={configured activation specification or batch executor} queueRef={reference to the configured JMS queue} />
注: server.xml ファイルに batchJmsDispatcher エレメントを追加しない場合、サーバーは複数のサーバー上で実行するようにパーティションをディスパッチせず、パーティションをローカルで実行します。注: connectionFactoryRef 属性および queueRef 属性を指定しない場合、connectionFactoryRef のデフォルト値は batchConnectionFactory、queueRef のデフォルト値は batchJobSubmissionQueue です。batchJmsDispatcher エレメントを <batchJmsDispatcher/> と指定することができます。それでも、server.xml ファイル内で、batchConnectionFactory JMS 接続ファクトリーと batchJobSubmissionQueue を構成する必要はあります。 - 対応する JMS 接続ファクトリーおよび JMS キューをサーバー構成に追加します。 これは、バッチ構成に特有のものではありません。次の例は、バッチ JMS ディスパッチャー構成とその JMS 構成を示します。注: remoteServerAddress 属性は、Liberty メッセージング・エンジンをホストするサーバーの host:port をポイントします。
<batchJmsDispatcher connectionFactoryRef="batchConnectionFactory" queueRef="batchJobSubmissionQueue" /> <jmsConnectionFactory id="batchConnectionFactory" jndiName="jms/batch/connectionFactory"> <properties.wasJms remoteServerAddress="host:7280:BootstrapBasicMessaging"> </properties.wasJms> </jmsConnectionFactory> <jmsQueue id='batchJobSubmissionQueue" jndiName="jms/batch/jobSubmissionQueue"> <properties.wasJms deliveryMode="Persistent" queuename="batchLibertyQueue"> </properties.wasJms> </jmsQueue>
- バッチ executor をホストするサーバー上で server.xml に batchJmsExecutor エレメントを追加します。以下に例を示します。
<batchJmsExecutor activationSpecRef={configured activation specification or batch executor} queueRef={reference to the configured JMS queue} />
注: activationSpecRef 属性および queueRef 属性を指定しない場合、activationSpecRef のデフォルト値は batchConnectionFactory、queueRef のデフォルト値は batchJobSubmissionQueue です。batchJmsExecutor エレメントを <batchJmsExecutor/> と指定することができます。それでも、server.xml ファイル内で、batchActivationSpec の JMS アクティベーション・スペックと batchJobSubmissionQueue キューを構成する必要はあります。 - 対応する JMS アクティベーション・スペックおよび JMS キューをサーバー構成に追加します。これは、バッチ構成に特有のものではありません。
- アクティベーション・スペックに JMS メッセージ・セレクターを含めることによって、バッチ executor サーバーの能力を定義します。
- システム定義プロパティーに基づくフィルター操作:
バッチ JMS メッセージに関して以下のバッチ・ディスパッチャー・プロパティーがあり、バッチ executor はこれらを使用して着信メッセージをフィルター操作できます。
- com_ibm_ws_batch_applicationName: ジョブ要求のバッチ・アプリケーションの名前
- com_ibm_ws_batch_moduleName: ジョブ要求のバッチ・アプリケーションのモジュール名
- com_ibm_ws_batch_componentName: ジョブ要求のバッチ・アプリケーションのコンポーネント名
- com_ibm_ws_batch_work_type: 作業タイプ:「Job」
注: 処理できるジョブのみを executor が受け取ることを確実にするため、メッセージ・セレクターを指定する際に、 最低限 com_ibm_ws_batch_applicationName プロパティーを指定してください。次の例は、executor がアプリケーション SimpleBatchJob のバッチ・ジョブのみを受け入れるようにするための messageSelector 属性を示します。messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND com_ibm_ws_batch_work_type = 'Job'">
- ユーザー定義プロパティーに基づくフィルター操作:
バッチ・ディスパッチャーは、バッチ・ディスパッチャー要求メッセージに対する適切な JMS メッセージ・プロパティーに適合するすべてのジョブ・パラメーターを設定します。 これらのプロパティーは、メッセージ・セレクターにさらにフィルター操作を追加するためにメッセージ・セレクターが使用することもできます。 プロパティーの名前または ID は、JMS メッセージ・プロパティー制約に準拠している必要があります。例えば、 プロパティーは、文字と数字からなる長さ無制限の文字列であり、先頭は文字でなければなりません。文字とは、 メソッド Character.isJavaLetter が true を返す任意のキャラクターであり、「_」および「$」も含まれます。文字または数字とは、 メソッド Character.isJavaLetterOrDigit が true を返す任意のキャラクターです。JMS メッセージ・セレクターについて詳しくは、JMS API 資料を参照してください。
次の例は、com_ibm_ws_batch_applicationName プロパティーおよびジョブ・パラメーター specialCapability を使用するメッセージ・セレクターの例です。messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND specialCapability = 'superCapability'">
<batchJmsExecutor activationSpecRef="batchActivationSpec" queueRef="batchJobSubmissionQueue"/> <jmsActivationSpec id="batchActivationSpec" > <properties.wasJms destinationRef="batchJobSubmissionQueue" messageSelector="(com_ibm_ws_batch_applicationName = 'SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayoutCDI') AND com_ibm_ws_batch_work_type='Job'" destinationType="javax.jms.Queue" remoteServerAddress="host:7280:BootstrapBasicMessaging"> </properties.wasJms> </jmsActivationSpec> <jmsQueue id="batchJobSubmissionQueue" jndiName="jms/batch/jobSubmissionQueue"> <properties.wasJms deliveryMode="Persistent" queueName="batchLibertyQueue"> </properties.wasJms> </jmsQueue>
- システム定義プロパティーに基づくフィルター操作:
- パーティションのみを実行するためのバッチ JMS executor を構成します。
- server.xml 内で wasJmsClient-2.0 フィーチャーをフィーチャー・マネージャーに追加することによって、JMS サポートを有効にします。
- バッチ・ジョブを実行しているバッチ executor をホストするサーバー上で server.xml ファイルに batchJmsExecutor エレメントを追加します。
<batchJmsExecutor activationSpecRef={configured activation specification or batch executor} queueRef={reference to the configured JMS queue} replyConnectionFactoryRef={reference to the configured JMS connection factory} />
注: connectionFactoryRef 属性および queueRef 属性を指定しない場合、connectionFactoryRef のデフォルト値は batchConnectionFactory、queueRef のデフォルト値は batchJobSubmissionQueue です。batchJmsDispatcher エレメントを <batchJmsDispatcher/> と指定することができます。それでも、server.xml ファイル内で、batchConnectionFactory JMS 接続ファクトリーと batchJobSubmissionQueue を構成する必要はあります。 - 対応する JMS 接続ファクトリーおよび JMS キューをサーバー構成に追加します。これは、バッチ構成に特有のものではありません。
- アクティベーション・スペックに JMS メッセージ・セレクターを含めることによって、バッチ executor サーバーの能力を定義します。
- システム定義プロパティーに基づくフィルター操作:
バッチ JMS メッセージに関して以下のバッチ・ディスパッチャー・プロパティーがあり、バッチ executor はこれらを使用して着信メッセージをフィルター操作できます。
- com_ibm_ws_batch_applicationName: ジョブ要求のバッチ・アプリケーションの名前
- com_ibm_ws_batch_moduleName: ジョブ要求のバッチ・アプリケーションのモジュール名
- com_ibm_ws_batch_componentName: ジョブ要求のバッチ・アプリケーションのコンポーネント名
- com_ibm_ws_batch_work_type: 作業タイプ:「Partition」
- com_ibm_ws_batch_partitionNum(タイプ=整数): ディスパッチされているパーティションのパーティション番号
- com_ibm_ws_batch_stepName: JSL で定義されているステップの名前
注: 処理できるジョブのみを executor が受け取ることを確実にするため、メッセージ・セレクターを指定する際に、 最低限 com_ibm_ws_batch_applicationName プロパティーを指定してください。次の例は、executor がアプリケーション SimpleBatchJob のパーティションのみを受け入れるようにするための messageSelector 属性を示します。messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND com_ibm_ws_batch_work_type = 'Partition'">
次の例は、executor がアプリケーション SimpleBatchJob のパーティションのみを受け入れるようにするための messageSelector 属性を示します。messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND com_ibm_ws_batch_work_type = 'Partition' AND come_ibm_ws_batch_stepName = 'step1'">
- ユーザー定義プロパティーに基づくフィルター操作:
バッチ・ディスパッチャーは、バッチ・ディスパッチャー要求メッセージに対する適切な JMS メッセージ・プロパティーに適合するすべてのジョブ・パラメーターを設定します。 これらのプロパティーは、メッセージ・セレクターにさらにフィルター操作を追加するためにメッセージ・セレクターが使用することもできます。 プロパティーの名前または ID は、JMS メッセージ・プロパティー制約に準拠している必要があります。例えば、 プロパティーは、文字と数字からなる長さ無制限の文字列であり、先頭は文字でなければなりません。文字とは、 メソッド Character.isJavaLetter が true を返す任意のキャラクターであり、「_」および「$」も含まれます。文字または数字とは、 メソッド Character.isJavaLetterOrDigit が true を返す任意のキャラクターです。JMS メッセージ・セレクターについて詳しくは、JMS API 資料を参照してください。
次の例は、com_ibm_ws_batch_applicationName プロパティーおよびジョブ・パラメーター specialCapability を使用するメッセージ・セレクターの例です。messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND specialCapability = 'superCapability'">
<jmsConnectionFactory id="batchConnectionFactory" jndiName="jms/batch/connectionFactory"/> <batchJmsExecutor activationSpecRef="batchActivationSpec" queueRef="batchJobSubmissionQueue"/> replyConnectionFactoryRef="batchConnectionFactory"/> <jmsActivationSpec id="batchActivationSpec" > <properties.wasJms destinationRef="batchJobSubmissionQueue" messageSelector="(com_ibm_ws_batch_applicationName = 'SimpleBatchJob' OR com_ibm_ws_batch_applicationName = 'BonusPayoutCDI') AND com_ibm_ws_batch_work_type='Partition'" destinationRef="batchJobSubmissionQueue" destinationType="javax.jms.Queue" remoteServerAddress="host:7280:BootstrapBasicMessaging"> </properties.wasJms> </jmsActivationSpec> <jmsQueue id="batchJobSubmissionQueue" jndiName="jms/batch/jobSubmissionQueue"> <properties.wasJms deliveryMode="Persistent" queueName="batchLibertyQueue"> </properties.wasJms> </jmsQueue>
- システム定義プロパティーに基づくフィルター操作:
- バッチ・アプリケーションをサーバーにインストールします。詳しくは、Liberty でのアプリケーションのデプロイを参照してください。 複数サーバー・パーティション実行を無効にする: 複数サーバーのサポートは望むが、複数サーバー・パーティション実行は望まない場合、
jsl ジョブ XML ファイル内でジョブ・プロパティー come.ibm.websphere.batch.partition.multiJVM を false に設定できます。
次の例は、複数サーバー・パーティションを無効にする JSL ジョブを示します。
<property name="com.ibm.websphere.batch.partition.multiJVM" value="false"/>
注: リモート executor 上でパーティションを実行している場合、そのパーティションのジョブ・ログは作成されません。

ファイル名: twlp_batch_multipartitionsembed.html