ByteWriterPattern
Das Muster "ByteWriterPattern" wird verwendet, um Bytedaten in eine Datei zu schreiben.
Unterstützungsklassen
Die Klasse "FileByteWriter" stellt die Logik zum Öffnen und Schreiben von Bytes in die gegebene Datei bereit. Sie kann entweder Inhalt anfügen oder vorhandenen Inhalt überschreiben, je nachdem, welche Eigenschaften angegeben wurden. Während eines Neustarts wird die Datei immer im Anfügemodus geöffnet.
Erforderliche Eigenschaften
Die folgenden Eigenschaften sind für das Muster erforderlich.
Eigenschaftsname | Wert |
---|---|
PATTERN_IMPL_CLASS | Klasse, die die Schnittstelle ByteWriterPattern implementiert |
FILENAME | Vollständiger Pfad zur Eingabedatei |
Optionale Eigenschaften
Die folgenden Eigenschaften sind für das Muster optional.
Eigenschaftsname | Wert | Beschreibung |
---|---|---|
debug | true oder false (der Standardwert ist false) | Aktiviert detailliertes Tracing in diesem Stapeldatenstrom. |
EnablePerformanceMeasurement | true oder false (der Standardwert ist false) | Berechnet die Gesamtzeit in den Stapeldatenströmen und in der Methode "processRecord" bei Verwendung des GenericXDBatchStep. |
EnableDetailedPerformanceMeasurement | true oder false (der Standardwert ist false) | Bietet eine detailliertere Aufgliederung der Zeit pro Methode des Stapeldatenstroms. |
file.encoding | Codierung der Datei. | Beispiel: 8859_1 |
AppendJobldToFileName | true oder false (der Standardwert ist false) | Hängt die Job-ID an den Dateinamen an, bevor die Datei geladen wird. |
append | true oder false (der Standardwert ist true) | Bestimmt, ob die Datei im Anfügemodus (append) geöffnet wird.
Wichtig: Während eines Neustarts wird die Datei immer im Anfügemodus geöffnet.
|
Schnittstellendefinition
public interface ByteWriterPattern {
/**
* Wird bei der Konfiguration des Abschnitts aufgerufen
* @param props
*/
public void initialize(Properties props);
/**
* Schreibt ein bestimmtes Objekt in einen bestimmten Ausgabedatenstrom. Jeder Verarbeitungsvorgang,
* der vor dem Schreibvorgang ausgeführt werden muss, kann hier hinzugefügt werden.
* @param out
* @param record
* @throws IOException
*/
public void writeRecord(BufferedOutputStream out, Object record) throws IOException;
/**
* Header-Informationen schreiben, falls vorhanden
* @param out
* @throws IOException
*/
public void writeHeader(BufferedOutputStream out) throws IOException;
/**
* Diese Methode kann während des Verarbeitungsschritts aufgerufen werden,
* um den Header explizit zu initialisieren und zu schreiben.
* @param header
*/
public void writeHeader(BufferedOutputStream out, Object header) throws IOException;
}
xJCL-Beispiel
<batch-data-streams>
<bds>
<logical-name>outputStream</logical-name>
<props>
<prop name="PATTERN_IMPL_CLASS" value="com.ibm.websphere.batch.samples.tests.bds.EchoWriter"/>
<prop name="file.encoding" value="8859_1"/>
<prop name="FILENAME" value="/opt/txlist.txt" />
<prop name="debug" value="true"/>
</props>
<impl-class>com.ibm.websphere.batch.devframework.datastreams.patterns.FileByteWriter</impl-class>
</bds>
</batch-data-streams>