Questo argomento riguarda questioni correlate alla gestione della memoria che è necessario considerare quando si sviluppano estensioni definite dall'utente per WebSphere Message Broker nel linguaggio di programmazione C. Se si stanno sviluppando estensioni definite dall'utente utilizzando il linguaggio di programmazione Java, è possibile utilizzare metodi di gestione della memoria Java standard.
Tutta la memoria assegnata da un'estensione definita dall'utente deve essere rilasciata da tale estensione. La creazione di un nodo in fase di runtime fa sì che venga richiamato cniCreateNodeContext, che consente all'estensione definita dall'utente di assegnare aree di dati specifiche dell'istanza del nodo per memorizzare un contesto. L'indirizzo del contesto viene restituito al broker dei messaggi e viene ripassato dal broker quando un metodo interno richiama una funzione dell'estensione definita dall'utente; quindi l'estensione definita dall'utente in C può localizzare ed utilizzare l'esatto contesto per l'elaborazione della funzione.
Il broker dei messaggi passerà gli indirizzi degli oggetti C++ all'estensione definita dall'utente. Questi sono previsti semplicemente per essere utilizzati come un handle da ripassare alle chiamate di funzioni successive. L'estensione definita dall'utente in C non deve essere abilitata alla manipolazione o all'uso di questo puntatore, ad esempio tentando di rilasciare memoria utilizzando la funzione free. Tali azioni causano un funzionamento imprevedibile nel broker dei messaggi.
La funzione di implementazione cniCreateNodeContext viene richiamata ogni volta che l'oggetto nodo sottostante è stato creato internamente. Ciò si verifica quando un broker viene definito con un flusso di messaggi che utilizza un nodo definito dall'utente. E' importante tenere presente che questa non è necessariamente la stessa attività come la creazione (o il riutilizzo) di un thread per l'esecuzione di un'istanza flusso di messaggi contenente il nodo. Infatti, la funzione cniCreateNodeContext verrà richiamata solo una volta, durante la configurazione del flusso di messaggi, indipendentemente da quanti thread stanno eseguendo il flusso di messaggi.
Considerazioni simili sono valide per i programmi di analisi definiti dall'utente e la corrispondente funzione di implementazione cpiCreateContext.