Verbinden Sie das HTTPTimeout-Terminal von HTTPInput- oder SOAPInput-Knoten mit anderen Knoten, damit die Zeitlimits verarbeitet werden können.
Sie können Nachrichtenflüsse, die mit einem HTTPInput- oder SOAPInput-Knoten beginnen, so konfigurieren, dass das HTTPTimeout-Terminal zur Verarbeitung der Zeitlimits mit anderen Knoten verbunden wird:
Falls diese Bedingungen bei der Implementierung der BAR-Datei für den Nachrichtenfluss nicht erfüllt sind, wird eine Warnung generiert und der Pfad des Nachrichtenflusses, den Sie mit dem HTTPTimeout-Terminal verbunden haben, wird ignoriert. Bis zum nächsten Neustart werden keine weiteren Warnungen generiert.
So legen Sie in einem Empfangsknoten einen statischen Zeitlimitwert fest:
Wenn diese Zeit abläuft und das HTTPTimeout-Terminal mit keinem Knoten verbunden ist, antwortet das Empfangsprogramm, das die Anforderungsnachricht vom Client erhalten hat, mit einer SOAP-Fehlernachricht, die auf eine Zeitlimitüberschreitung hinweist.
So legen Sie in einem Empfangsknoten einen dynamischen Zeitlimitwert fest:
MbMessage localEnv = assembly.getLocalEnvironment();
MbElement rootElem = localEnv.getRootElement();
MbElement repIdElement = rootElem.getFirstElementByPath(
"/Destination/SOAP/Reply/ReplyIdentifier");
Object repId = repIdElement.getValue();
boolean success = changeIdentifierTimeout((byte[])repId, timeout);
Durch Weiterleitung vom HTTPTimeout-Terminal können Sie dann den Inhalt der Antworten ändern, die Ihr Nachrichtenfluss an den Client sendet. Die Verarbeitung durch die Folge der Knoten, die Sie mit dem HTTPTimeout-Terminal verbinden, unterliegt einem weiteren Zeitlimit, sodass der Client immer eine Antwort innerhalb eines bekannten Zeitlimitintervalls erhält.
(0x01000000:Name):HTTP = (
(0x01000000:Name):Input = (
(0x01000000:Name):Timeout = (
(0x03000000:NameValue):OriginalClientLastWaitTime = 10 (INTEGER)
(0x03000000:NameValue):OriginalClientWaitTime = 15 (INTEGER)
(0x03000000:NameValue):OriginalMessageMadeTheFlow = TRUE (BOOLEAN)
(0x03000000:NameValue):OriginalRequestIdentifier =
X'48545450000000000000000000000000c00c000000000000' (BLOB)
(0x03000000:NameValue):OriginalInboundMessage = X'3c3e' (BLOB)
)
)
)
Bei SOAPInput-Knoten muss der mit dem HTTPTimeout-Terminalpfad verbundene SOAPReply-Knoten eine SOAP-Fehlerantwortnachricht senden und der Antwortstatuscode 500 kann nicht geändert werden. Bei HTTPInput-Knoten kann das HTTPTimeout-Terminal jede Antwortnachricht senden und der Antwortstatuscode kann durch Aktualisierung des Felds LocalEnvironment.Destination.HTTP.ReplyStatusCode der Nachrichtenbaumstruktur geändert werden.