Unterstützung für mehrere Serverpartitionen durch Verwendung des integrierten Liberty-Messaging-Providers aktivieren
Die Stapelumgebung kann so eingerichtet werden, dass einige Server als Stapeldispatcher fungieren und andere Server als Stapelsteuerprogramme.
Vorbereitende Schritte
- Stellen Sie fest, wo die integrierte Messaging-Engine gehostet wird. Sie kann auf dem Server gehostet werden, der als Stapeldispatcher fungiert, auf dem Server, der als Stapelsteuerprogramm fungiert, oder auf einem separaten Server. Dieser Server muss konfiguriert werden, bevor Sie diese Task ausführen. Der Server mit der Messaging-Engine wird in der Konfiguration der JMS-Verbindungsfactory und der Aktivierungsspezifikation referenziert.
- Gehen Sie wie folgt vor, um die Messaging-Engine zu konfigurieren:
- Fügen Sie das Feature wasJmsServer-1.0 zur Datei server.xml hinzu.
- Definieren Sie die Messaging-Engine, indem Sie
das Element messageEngine hinzufügen.
Definieren Sie die Warteschlange, die für den Stapeldispatcher
und das Stapelsteuerprogramm verwendet wird.
Das folgende Beispiel zeigt die Konfiguration der Messaging-Engine in der Datei
server.xml.
<!-Geben Sie die Ports für die Messaging-Engine an. Die Ports in diesem Beispiel sind die Standardports. Dieses Element wird nicht benötigt, wenn die Standardports verwendet werden. --> <wasJmsEndpoint host="*" wasJmsPort="7280" wasJmsSSLPort="7290" enabled="true"> </wasJmsEndpoint> <messagingEngine> <!- Warteschlange für JMS-Stapelnachricht. --> <queue id="batchLibertyQueue" forceReliability="ReliablePersistent" receiveAllowed="true"/> </messagingEngine>
Informationen zu diesem Vorgang
Stapeldispatcher akzeptieren Anforderungen von externen Clients und stellen sie für die Stapelsteuerprogramme bereit. Die Stapelsteuerprogramme empfangen Anforderungen, die ihrer definierten Funktionalität entsprechen, und führen diese Anforderungen aus. Wenn der Job für die Ausführung von Partitionen konfiguriert ist, stellen sich die Stapelsteuerprogramme anderen Steuerprogrammen zur Ausführung zur Verfügung. Die Stapelsteuerprogramme kommunizieren über Java Messaging Service (JMS) miteinander. Diese Task unterstützt Sie bei der Konfiguration des als Stapeldispatcher fungierenden Servers und des Stapelsteuerprogramms unter Verwendung des integrierten Liberty-Messaging-Providers.
Vorgehensweise
- Konfigurieren Sie den JMS-Stapeldispatcher.
- Fügen Sie der Datei server.xml das Feature wasJmsClient-2.0 hinzu, um die JMS-Unterstützung zu aktivieren.
- Fügen Sie das Element batchJmsDispatcher zu Ihrer Datei server.xml
auf dem Server mit dem Stapeldispatcher hinzu, z. B.:
<batchJmsDispatcher connectionFactoryRef={Referenz auf eine konfigurierte JMS-Verbindungsfactory} queueRef={Referenz auf eine konfigurierte JMS-Warteschlange} />
Anmerkung: Wenn Sie die Attribute connectionFactoryRef und queueRef nicht angeben, wird für connectionFactoryRef der Standardwert batchConnectionFactory und für queueRef der Standardwert batchJobSubmissionQueue verwendet. Sie können das Element batchJmsDispatcher als <batchJmsDispatcher/> angeben. Die JMS-Verbindungsfactory batchConnectionFactory und die JMS-Warteschlange batchJobSubmissionQueue müssen trotzdem in der Datei server.xml konfiguriert werden. - Nehmen Sie die entsprechende JMS-Verbindungsfactory und JMS-Warteschlange in die Serverkonfiguration auf.
Dies ist nicht spezifisch für die Stapelkonfiguration. Das folgende Beispiel zeigt die Konfiguration des JMS-Stapeldispatchers und die zugehörige JMS-Konfiguration:
Anmerkung: Das Attribut remoteServerAddress verweist auf den Host:Port des Servers, auf dem die Liberty-Messaging-Engine gehostet wird.
<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>
Anmerkung: Stellen Sie sicher, dass Sie ein jmsConnectionFactory-Element, wie im Beispiel gezeigt, und kein jmsQueueConnectionFactory-Element referenzieren. Die Verwendung eines jmsQueueConnectionFactory-Elements funktioniert nicht. Ihre Konfiguration sollte sowohl ein jmsConnectionFactory-Element als auch ein jmsQueue-Element enthalten, aber kein jmsQueueConnectionFactory-Element.
- Konfigurieren Sie das JMS-Stapelsteuerprogramm für die Ausführung von Stapeljobs.
- Fügen Sie der Datei server.xml das Feature wasJmsClient-2.0 hinzu, um die JMS-Unterstützung zu aktivieren.
- Fügen Sie der Datei server.xml auf dem Server, der das Stapelsteuerprogramm hostet,
das Element batchJmsDispatcher hinzu.
<batchJmsExecutor activationSpecRef={konfigurierte Aktivierungsspezifikation oder Stapelsteuerprogramm} queueRef={Referenz auf die konfigurierte JMS-Warteschlange} />
Anmerkung: Wenn Sie das Element batchJmsDispatcher nicht zur Datei server.xml hinzufügen, verteilt der Server die Partitionen nicht an mehrere Server und führt die Partitionen lokal aus.Anmerkung: Wenn Sie die Attribute connectionFactoryRef und queueRef nicht angeben, wird für connectionFactoryRef der Standardwert batchConnectionFactory und für queueRef der Standardwert batchJobSubmissionQueue verwendet. Sie können das Element batchJmsDispatcher als <batchJmsDispatcher/> angeben. Die JMS-Verbindungsfactory batchConnectionFactory und batchJobSubmissionQueue müssen trotzdem in der Datei server.xml konfiguriert werden. - Nehmen Sie die entsprechende JMS-Verbindungsfactory und JMS-Warteschlange in die Serverkonfiguration auf. Dies ist nicht spezifisch für die Stapelkonfiguration. Das folgende Beispiel zeigt die Konfiguration des JMS-Stapeldispatchers und die zugehörige JMS-Konfiguration:
Anmerkung: Das Attribut remoteServerAddress verweist auf den Host:Port des Servers, auf dem die Liberty-Messaging-Engine gehostet wird.
<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>
- Fügen Sie der Datei server.xml auf dem Server, der das Stapelsteuerprogramm hostet, das Element
batchJmsExecutor hinzu, z. B.:
<batchJmsExecutor activationSpecRef={konfigurierte Aktivierungsspezifikation oder Stapelsteuerprogramm} queueRef={Referenz auf die konfigurierte JMS-Warteschlange} />
Anmerkung: Wenn Sie die Attribute activationSpecRef und queueRef nicht angeben, wird für activationSpecRef der Standardwert batchConnectionFactory und für queueRef der Standardwert batchJobSubmissionQueue verwendet. Sie können das Element batchJmsExecutor als <batchJmsExecutor/> angeben. Die JMS-Aktivierungsspezifikation für batchActivationSpec und die Warteschlange batchJobSubmissionQueue müssen trotzdem in der Datei server.xml konfiguriert werden. - Nehmen Sie die entsprechende JMS-Aktivierungsspezifikation und JMS-Warteschlange in die Serverkonfiguration auf. Dies ist nicht spezifisch für die Stapelkonfiguration.
- Definieren Sie Leistungsmerkmale des Stapelsteuerprogrammservers,
indem Sie in die Aktivierungsspezifikation einen JMS-Nachrichtenselektor aufnehmen.
- Filterung auf der Basis systemdefinierter Eigenschaften:
Für die JMS-Stapelnachricht sind die folgenden Stapeldispatchereigenschaften verfügbar, die das Stapelsteuerprogramm zum Filtern ankommender Nachrichten verwenden kann.
- com_ibm_ws_batch_applicationName: Der Name der Stapelanwendung für die Jobanforderung.
- com_ibm_ws_batch_moduleName: Der Modulname der Stapelanwendung für die Jobanforderung.
- com_ibm_ws_batch_componentName: Der Komponentenname der Stapelanwendung für die Jobanforderung.
- com_ibm_ws_batch_work_type: Der Arbeitstyp: "Job".
Anmerkung: Geben Sie einen Nachrichtenselektor mit mindestens der Eigenschaft com_ibm_ws_batch_applicationName an, um sicherzustellen, dass das Steuerprogramm nur Jobs empfängt, die es verarbeiten kann.Im folgenden Beispiel legt das Attribut messageSelector für das Stapelsteuerprogramm fest, dass nur Stapeljobs für die Anwendung SimpleBatchJob akzeptiert werden sollen.messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND com_ibm_ws_batch_work_type = 'Job'">
- Filterung auf der Basis benutzerdefinierter Eigenschaften:
Der Stapeldispatcher legt alle Jobparameter, die der richtigen JMS-Nachrichteneigenschaft entsprechen, in seiner Anforderungsnachricht fest. Diese Eigenschaften können vom Nachrichtenselektor ebenfalls verwendet werden, um eine zusätzliche Filterung hinzuzufügen. Der Eigenschaftsname oder die Eigenschafts-ID muss die Bedingungen einer JMS-Nachrichteneigenschaft erfüllen. Beispielsweise ist die Eigenschaft eine unbegrenzte Folge von Buchstaben und Ziffern, wobei das erste Zeichen ein Buchstabe sein muss. Ein Buchstabe ist ein Zeichen, für das die Methode Character.isJavaLetter den Wert true zurückgibt und umfasst auch die Zeichen "_" und "$". Ein Buchstabe oder eine Ziffer ist ein Zeichen, für das die Methode Character.isJavaLetterOrDigit den Wert true zurückgibt. Weitere Informationen zu JMS-Nachrichtenselektoren finden Sie in der Dokumentation zu den JMS-APIs.
Im folgenden Beispiel verwendet ein potenzieller Nachrichtenselektor die Eigenschaft com_ibm_ws_batch_applicationName und den Jobparameter 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>
- Filterung auf der Basis systemdefinierter Eigenschaften:
- Konfigurieren Sie das JMS-Stapelsteuerprogramm ausschließlich für die Ausführung von Partitionen.
- Fügen Sie der Datei server.xml das Feature wasJmsClient-2.0 hinzu, um die JMS-Unterstützung zu aktivieren.
- Fügen Sie der Datei
server.xml auf dem Server, der das Stapelsteuerprogramm hostet, das Stapeljobs ausführt, das Element
batchJmsExecutor hinzu.
<batchJmsExecutor activationSpecRef={konfigurierte Aktivierungsspezifikation oder Stapelsteuerprogramm} queueRef={reference to the configured JMS queue} replyConnectionFactoryRef={reference to the configured JMS connection factory} />
Anmerkung: Wenn Sie die Attribute connectionFactoryRef und queueRef nicht angeben, wird für connectionFactoryRef der Standardwert batchConnectionFactory und für queueRef der Standardwert batchJobSubmissionQueue verwendet. Sie können das Element batchJmsDispatcher als <batchJmsDispatcher/> angeben. Die JMS-Verbindungsfactory batchConnectionFactory und batchJobSubmissionQueue müssen trotzdem in der Datei server.xml konfiguriert werden. - Nehmen Sie die entsprechende JMS-Verbindungsfactory und JMS-Warteschlange in die Serverkonfiguration auf. Dies ist nicht spezifisch für die Stapelkonfiguration.
- Definieren Sie Leistungsmerkmale des Stapelsteuerprogrammservers,
indem Sie in die Aktivierungsspezifikation einen JMS-Nachrichtenselektor aufnehmen.
- Filterung auf der Basis systemdefinierter Eigenschaften:
Für die JMS-Stapelnachricht sind die folgenden Stapeldispatchereigenschaften verfügbar, die das Stapelsteuerprogramm zum Filtern ankommender Nachrichten verwenden kann.
- com_ibm_ws_batch_applicationName: Der Name der Stapelanwendung für die Jobanforderung.
- com_ibm_ws_batch_moduleName: Der Modulname der Stapelanwendung für die Jobanforderung.
- com_ibm_ws_batch_componentName: Der Komponentenname der Stapelanwendung für die Jobanforderung.
- com_ibm_ws_batch_work_type: Der Arbeitstyp: "Partition".
- com_ibm_ws_batch_partitionNum(Type=Integer): Die Partitionsnummer der zu verteilenden Partition.
- com_ibm_ws_batch_stepName: Der Name des in der JSL definierten Schritts.
Anmerkung: Geben Sie einen Nachrichtenselektor mit mindestens der Eigenschaft com_ibm_ws_batch_applicationName an, um sicherzustellen, dass das Steuerprogramm nur Jobs empfängt, die es verarbeiten kann.Im folgenden Beispiel legt das Attribut messageSelector für das Stapelsteuerprogramm fest, dass nur Partitionen für die Anwendung SimpleBatchJob akzeptiert werden sollen.messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND com_ibm_ws_batch_work_type = 'Partition'">
Im folgenden Beispiel legt das Attribut messageSelector für das Stapelsteuerprogramm fest, dass nur Partitionen für die Anwendung SimpleBatchJob akzeptiert werden sollen.messageSelector="com_ibm_ws_batch_applicationName = 'SimpleBatchJob' AND com_ibm_ws_batch_work_type = 'Partition' AND come_ibm_ws_batch_stepName = 'step1'">
- Filterung auf der Basis benutzerdefinierter Eigenschaften:
Der Stapeldispatcher legt alle Jobparameter, die der richtigen JMS-Nachrichteneigenschaft entsprechen, in seiner Anforderungsnachricht fest. Diese Eigenschaften können vom Nachrichtenselektor ebenfalls verwendet werden, um eine zusätzliche Filterung hinzuzufügen. Der Eigenschaftsname oder die Eigenschafts-ID muss die Bedingungen einer JMS-Nachrichteneigenschaft erfüllen. Beispielsweise ist die Eigenschaft eine unbegrenzte Folge von Buchstaben und Ziffern, wobei das erste Zeichen ein Buchstabe sein muss. Ein Buchstabe ist ein Zeichen, für das die Methode Character.isJavaLetter den Wert true zurückgibt und umfasst auch die Zeichen "_" und "$". Ein Buchstabe oder eine Ziffer ist ein Zeichen, für das die Methode Character.isJavaLetterOrDigit den Wert true zurückgibt. Weitere Informationen zu JMS-Nachrichtenselektoren finden Sie in der Dokumentation zu den JMS-APIs.
Im folgenden Beispiel verwendet ein potenzieller Nachrichtenselektor die Eigenschaft com_ibm_ws_batch_applicationName und den Jobparameter 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>
- Filterung auf der Basis systemdefinierter Eigenschaften:
- Installieren Sie die Stapelanwendung auf dem Server. Weitere Informationen hierzu finden Sie unter
Anwendungen in Liberty implementieren. Inaktivierung der Ausführung mehrerer Serverpartitionen: Wenn Sie die Unterstützung mehrerer Server benötigen, aber nicht mehrere Serverpartitionen ausführen möchten,
können Sie die Jobeigenschaft come.ibm.websphere.batch.partition.multiJVM in der
XML-Datei des jsl-Jobs auf false setzen. Das folgende Beispiel zeigt einen JSL-Job für die Inaktivierung von Serverpartitionen:
<property name="com.ibm.websphere.batch.partition.multiJVM" value="false"/>
Anmerkung: Wenn Sie eine Partition in einem fernen Steuerprogramm ausführen, werden keine Jobprotokolle für diese Partition erstellt.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_batch_multipartitionsembed
Dateiname: twlp_batch_multipartitionsembed.html