저장영역 관리

이 주제에서는 C 프로그래밍 언어로 WebSphere Message Broker의 사용자 정의 확장을 개발할 때 고려해야 할 저장영역 관리 관련 문제를 다룹니다. Java 프로그래밍 언어를 사용하여 사용자 정의 확장을 개발할 경우에는 표준 Java 저장영역 관리 메소드를 사용할 수 있습니다.

사용자 정의 확장에 의해 할당된 모든 메모리는 해당 사용자 정의 확장에 의해 해제되어야 합니다. 런타임에 노드를 구성하면 cniCreateNodeContext가 호출되며, 사용자 정의 확장은 컨텍스트를 저장할 노드 인스턴스 고유 데이터 영역을 할당할 수 있습니다. 컨텍스트의 주소는 Message Broker로 리턴되었다가, 내부 메소드에 의해 사용자 정의 확장 기능이 호출될 때 브로커에서 다시 전달됩니다. 따라서 C 사용자 정의 확장은 기능 처리에 올바른 컨텍스트를 찾아 사용할 수 있습니다.

Message Broker는 C++ 오브젝트의 주소를 사용자 정의 확장에 전달합니다. 이러한 주소는 단순히 후속 함수 호출 시 다시 전달할 핸들로서 사용하기 위한 것입니다. C 사용자 정의 확장이 어떠한 방식으로든 이 포인터를 조작하거나 사용하지 못하게 해야 합니다(예를 들면, free 기능으로 저장영역을 해제하여). C 사용자 정의 확장이 이 포인터를 조작하거나 사용하면 Message Broker에서 예상치 못한 작동이 발생합니다.

cniCreateNodeContext 구현 함수는 근본적인 노드 오브젝트가 내부적으로 구성될 때마다 호출됩니다. 브로커가 사용자 정의 노드를 사용하는 메시지 플로우로 정의할 때 이러한 상황이 발생합니다. 이 함수는 사용자 정의 노드가 포함된 메시지 플로우 인스턴스를 실행하는 스레드를 작성(또는 재사용)하는 것과 반드시 동일하지는 않습니다. 사실상, cniCreateNodeContext 함수는 메시지 플로우를 실행하는 스레드의 수와 무관하게 메시지 플로우 구성 중에 한 번만 호출됩니다.

사용자 정의 구문 분석기 및 해당 구현 함수 cpiCreateContext에도 유사한 고려사항이 적용됩니다.

관련 개념
사용자 정의 확장 구성요소
사용자 정의 구문 분석기
관련 참조
cpiCreateContext
cniCreateNodeContext
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
as01440_