Speichermanagement

In diesem Abschnitt wird hauptsächlich auf die Aspekte in Bezug auf das Speichermanagement eingegangen, die bei der Entwicklung benutzerdefinierter Erweiterungen für WebSphere Message Broker in C berücksichtigt werden sollten. Wenn Sie benutzerdefinierte Erweiterungen in Java entwickeln, können Sie die Java-Standardmethoden für das Speichermanagement verwenden.

Der gesamte Speicher, der von einer benutzerdefinierten Erweiterung angelegt wird, muss von der benutzerdefinierten Erweiterung auch wieder freigegeben werden. Bei der Erstellung eines Knotens während der Laufzeit wird die Funktion cniCreateNodeContext aufgerufen, die es der benutzerdefinierten Erweiterung ermöglicht, Datenbereiche zum Speichern von Kontextdaten für die Knoteninstanz anzulegen. Die Kontextadresse wird an den Nachrichtenbroker zurückgegeben und vom Broker wieder zurückgegeben, wenn durch eine interne Methode benutzerdefinierte Erweiterungsfunktionen aufgerufen werden; auf diese Weise kann eine in C erstellte benutzerdefinierte Erweiterung den richtigen Kontext für die Verarbeitung der Funktion ermitteln und verwenden.

Der Nachrichtenbroker übergibt die Adressen von C++-Objekten an die benutzerdefinierte Erweiterung. Diese dienen nur als Kennungen, die bei anschließenden Funktionsaufrufen zurückgegeben werden. In C erstellte benutzerdefinierte Erweiterungen sollten nicht in der Lage sein, diese Zeiger zu manipulieren oder zu verwenden, beispielsweise indem versucht wird, unter Verwendung der Funktion free Speicher freizugeben. Solche Vorgänge führen zu unvorhersehbarem Verhalten im Nachrichtenbroker.

Die Implementierungsfunktion cniCreateNodeContext wird immer dann aufgerufen, wenn das zugrundeliegende Knotenobjekt intern erstellt wurde. Dieser Umstand tritt ein, wenn ein Broker mit einem Nachrichtenfluss definiert wird, der einen benutzerdefinierten Knoten verwendet. Hier muss angemerkt werden, dass dies nicht unbedingt dasselbe ist wie die Erstellung (oder Wiederverwendung) eines Threads für die Ausführung einer Nachrichtenflussinstanz, die einen solchen Knoten enthält. Tatsächlich wird die Funktion cniCreateNodeContext nur einmal aufgerufen, und zwar während der Konfiguration des Nachrichtenflusses und unabhängig davon, wie viele Threads für die Ausführung des Nachrichtenflusses verwendet werden.

Ähnliche Überlegungen gelten auch für benutzerdefinierte Parser und die entsprechende Implementierungsfunktion cpiCreateContext.

Zugehörige Konzepte
Benutzerdefinierte Erweiterungen
Benutzerdefinierte Parser
Zugehörige Verweise
cpiCreateContext
cniCreateNodeContext
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
as01440_