사용자 정의 구문 분석기 수명 주기

이 주제에서는 사용자 정의 메시지 플로우 구문 분석기 주기 내의 여러 단계를 안내합니다. 단계는 다음과 같습니다.

본 주제는 사용자 정의 구문 분석기를 실행할 때 WebSphere Message Broker 구성요소 간에 발생하는 상호작용을 이해하도록 도와줍니다. 본 주제에서는 각 단계를 전후하여 발생하는 이벤트 및 호출되는 API 측면에서 각 단계를 설명합니다. 이 주제의 개념을 이해하면 구문 분석기를 더 효과적으로 설계하고 개발할 수 있습니다.

등록

사용자 정의 구문 분석기 수명 주기의 첫 번째 단계는 등록 단계입니다. 등록 단계의 목적은 사용자 정의 구문 분석기를 브로커에 등록하는 것입니다. 그룹 프로세스 실행 시작의 초기화 단계에서 이 단계가 트리거됩니다.

인스턴스화

구문 분석기는 구문 분석기 수명 주기의 인스턴스화 단계에서 작성됩니다. 입력 메시지가 수신되거나 출력 메시지가 Compute 노드에서 빌드되면, 관련 구문 분석기가 확인되며 MQMD와 같은 메시지 헤더에서 구문 분석기 요구사항을 가져오게 됩니다. 브로커는 구문 분석기 팩토리가 들어 있는 LIL(Loadable Implementation Library)을 시작, 로드합니다. 확장 그룹 프로세스는 구문 분석기 인스턴스를 작성하며, 브로커는 cpiCreateContext를 호출하여 구문 분석기 오브젝트가 메시지의 적절한 부분을 취하도록 합니다.

이 함수가 호출되기 전에 브로커는 이름 요소를 구문 분석기의 유효한 루트 요소로 작성한 상태입니다. 그러나, 이 요소의 이름은 지정되지 않았습니다. 구문 분석기는 cpiSetElementName 함수에 이 요소의 이름을 지정합니다.

그 다음 브로커는 cpiParseBuffer를 호출합니다. 이 단계에서 cpiParseBuffer의 목적은 필요한 초기화를 수행하고 구문 분석기가 소유하는 메시지 컨텐츠의 길이를 리턴하는 것입니다. 구문 분석기는 구문 분석할 메시지의 양을 평가하고 적절한 바이트 수를 요구합니다.

사용자 정의 구문 분석기 오브젝트의 인스턴스가 작성될 때마다, 메시지 브로커는 컨텍스트 작성 구현 함수 cpiCreateContext를 호출합니다. 그러면 구문 분석기는 구문 분석기와 연관된 인스턴스 데이터를 할당할 수 있게 됩니다. 구문 분석기 오브젝트 컨텍스트를 삭제할 cpiDeleteContext 함수 또한 필요합니다.

처리

처리 단계의 목적은 구문 분석기가 해석하는 메시지 오브젝트 내의 요소를 조작, 변경, 참조하는 것입니다. 관련 메시지의 브로커 내부 모델 표현에 존재하지 않는 메시지 내의 요소에 액세스해야 하는 탐색과 같은 메시지 처리 작동이 발생할 때 메시지 플로우 처리 단계가 시작됩니다.

메시지 플로우 처리 단계에서 메시지 트리 내부를 탐색하려는 시도에 대한 응답으로 구문 분석기가 호출됩니다. cpiParseBuffer가 호출되었을 때 구문 분석기는 할당된 버퍼를 조사하고 필요한 메시지 요소를 작성합니다.

구문 분석기는 다음 구문 분석기 구현 함수의 일부 또는 전체를 사용하여 메시지를 탐색할 수 있습니다.
  • cpiParseFirstChild
  • cpiParseLastChild
  • cpiParsePreviousSibling
  • cpiParseNextSibling

사용자 정의 구문 분석기가 지원하는 메시지 형식의 데이터를 논리적으로 나타내는 구문 요소 트리의 일부로 메시지 필드를 지정하는 필터 표현식과 같은 일정 형식의 탐색이 수행될 때 이 함수가 호출됩니다. 브로커 내의 조작에 구문 요소 트리를 빌드 또는 확장해야 하는 경우 이러한 작업이 수행됩니다.

구문 요소 트리를 탐색하는 가장 좋은 방법을 결정할 때 다음과 같은 점을 알아야 합니다.
  • 구문 요소는 해당 상위, 동위, 첫 번째 및 마지막 하위 요소를 가리키는 5개의 포인터가 있습니다. 즉, 최종 탐색 세트가 사용 가능합니다.
  • 이러한 탐색을 모두 수행하기 위해 동일한 내부 클래스가 사용됩니다.
  • 구문 분석기는 탐색을 제어하지 않습니다. ESQL 또는 사용자 정의 노드는 탐색 방향, 탐색 구문 분석기 구현 함수의 호출 순서에 대한 결정을 내립니다. 사용자 정의 구문 분석기는 이를 제어하지 않으며, 선택된 탐색 설계에 올바르게 응답해야 합니다. 예를 들면, 왼쪽에서 오른쪽으로 구문 분석할 뿐만 아니라 오른쪽에서 왼쪽으로도 구문 분석할 수 있습니다.
  • 사용자 정의 구문 분석기를 작성할 때는 실제 구문 분석기 코드를 parseNextItem 함수에 배치해야 합니다. 이 함수는 한 번에 한 요소씩 구문 요소 트리를 빌드하여 이름, 값, 완전한 플래그를 적절히 설정합니다. 이 함수의 구현 방식은 구문 분석될 비트스트림의 성질에 따라 다릅니다. WebSphere Message Broker가 제공하는 동일한 구문 분석기가 이를 보여줍니다.

구문 분석기가 구문 요소 트리의 관련 부분에 대한 구문 분석을 마치면 cpiWriteBuffer를 호출합니다. 이 함수는 구문 분석기 오브젝트와 연관된 메시지 버퍼의 비트스트림에 구문 요소 트리의 해당 부분을 추가합니다. 그러면 출력 메시지가 작성됩니다.

폐기

폐기 단계는 사용자 정의 구문 분석기 수명 주기의 마지막 단계입니다. 구문 분석기가 구문 요소 트리의 해당 부분을 비트스트림에 쓰고 출력 메시지를 작성하면, 구문 분석기가 사용하도록 브로커가 작성한 시스템 자원을 해제해야 합니다.

mqsistop 명령을 사용하여 실행 프로세스를 정지하면 폐기 단계가 시작됩니다.

주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
as01413_