Java 사용자 정의 입력 노드 수명 주기

이 주제에서는 Java 프로그래밍 언어로 작성된 사용자 정의 입력 노드 수명 주기의 여러 단계를 안내합니다. 다음과 같은 입력 노드 수명 주기의 단계가 포함됩니다.

등록

Java로 작성된 사용자 정의 입력 노드는 등록 단계에서 브로커에 알려집니다. 노드는 정적 getNodeName 메소드를 통해 브로커에 등록됩니다. 브로커가 시작될 때마다 관련된 모든 Java 클래스를 로드합니다. 정적 메소드 getNodeName은 이 때 호출되고 브로커는 입력 노드를 getNodeName 메소드에 지정된 노드 이름으로 등록합니다. 노드 이름을 지정하지 않은 경우에는 브로커가 포함된 패키지에 따라 노드의 이름을 자동으로 작성합니다.

여기서 정적 메소드의 사용은 노드가 인스턴스화되기 전에 브로커가 메소드를 호출할 수 있음을 의미합니다.

인스턴스화

Java 사용자 정의 입력 노드는 브로커가 사용자 정의 입력 노드를 포함하는 메시지 플로우를 전개할 때 인스턴스화됩니다. 노드가 인스턴스화될 때, 입력 노드의 클래스 구성자가 호출됩니다.

노드가 인스턴스화되면 지정된 터미널이 작성됩니다. 메시지 처리 노드에는 여러 개의 입력 및 출력 터미널이 연관될 수 있습니다. 이러한 터미널을 선언하려면 노드 구성자에 createInputTerminalcreateOutputTerminal 메소드가 포함되어야 합니다.

입력 노드로 다시 전달되는 예외를 처리하려는 경우, createOutputTerminal을 사용하여 입력 노드의 catch 터미널을 작성해야 합니다. 입력 노드가 오류를 포착하면 catch 터미널이 일반 MQInput 노드와 같은 방식으로 오류를 처리합니다. 대부분의 예외(예: 전개 문제로 발생한 예외)를 브로커에 다시 전달할 수 있으며 브로커는 사용자에게 가능한 구성 오류를 경고합니다.

최소한 구성자 클래스는 이러한 출력 터미널을 입력 노드에 작성하기만 하면 됩니다. 그러나, 처음에 입력 노드에서 전달된 메시지를 구문 분석하는 구문 분석기의 정의와 같은 속성 값을 초기화해야 하는 경우, 이 지점의 코드도 입력 노드에 포함시켜야 합니다.

처리

입력 노드에 대한 메시지 처리는 브로커가 실행 메소드를 호출할 때 시작됩니다. 실행 메소드는 입력 메시지를 작성하고 입력 노드의 처리 기능을 포함해야 합니다.

실행 메소드는 MbInputNodeInterface에 정의됩니다. 이 인터페이스는 이를 입력 노드로 정의하는 사용자 정의 입력 노드에서 사용되는 인터페이스입니다. 사용자 노드에 실행 메소드를 포함해야 합니다. 사용자 정의 입력 노드에 실행 메소드가 포함되지 않으면, 노드 소스 코드는 컴파일되지 않습니다.

사용자 정의 입력 노드를 포함하는 메시지 플로우가 전개되면, 브로커는 노드의 실행 구현 메소드를 호출하며 메시지가 처리되기를 기다리는 동안 계속해서 이 메소드를 호출합니다.

메시지 플로우가 시작되면 단일 스레드가 브로커에 의해 디스패치되고 입력 노드의 run 메소드로 호출됩니다. dispatchThread() 메소드가 호출되면 같은 run 메소드로 추가 스레드가 작성될 수 있습니다. 이러한 새 스레드는 즉시 입력 노드의 run 메소드로 호출되고 원래 스레드와 동일하게 처리될 수 있습니다. 작성할 수 있는 새 스레드 수는 additionalInstances 등록 정보에 정의됩니다. 권장되는 모델은 메시지가 작성된 후 전달되기 전에 스레드가 디스패치되도록 하는 것입니다. 그래야만 한 번에 하나의 스레드가 새 메시지를 기다리게 됩니다.

사용자 정의 입력 노드는 다른 스레드 모델을 선택할 수 있으며 선택된 모델을 구현해야 합니다. 입력 노드가 additionalInstances 등록 정보를 지원하고 dispatchThread()가 호출되면, 코드는 전부 재실행 가능(re-entrant)해야 하며 노드에 의해 호출된 함수도 재실행 가능(re-entrant)해야 합니다. 입력 노드가 단일 스레드를 강제 실행할 경우, 즉 dispatchThread()를 호출하지 않으면 additionalInstances 등록 정보가 입력 노드에 적용되지 않도록 설정한 노드의 사용자를 지워야 합니다.

사용자 정의 입력 노드의 모델 스레드에 대한 자세한 정보는 스레드를 참조하십시오.

폐기

Java 사용자 정의 입력 노드는 노드가 삭제되거나 브로커가 종료될 때 제거됩니다. 코드에 노드의 물리적 삭제를 지정하는 부분을 포함시킬 필요가 없습니다. 이는 노드가 가비지 콜렉터에 의해 처리될 수 있기 때문입니다.

노드가 곧 삭제될 것임을 알리려면 onDelete 메소드를 사용할 수 있습니다. 가비지로 수집할 자원이 아닌 자원을 삭제할 경우 이 메소드를 사용할 수 있습니다. 예를 들어 소켓을 연 경우 노드가 자동으로 삭제되면 소켓이 올바르게 닫히지 않습니다. 이 지시사항을 onDelete 메소드에 포함시켜 소켓을 올바르게 닫을 수 있습니다.

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