이 작업은 구성 관리자 프록시(CMP) 응용프로그램을
개발하는 더 큰 작업의 일부입니다.
리턴 코드(요청 결과를 표시)를 제공하는 상태 변경 메소드만이
deploy() 메소드입니다. 다음 코드 예에는 리턴된
DeployResult 오브젝트를
사용하여 토폴로지 전개 조작의 결과를 찾는 방법이 표시되어 있습니다.
...
TopologyProxy t = cmp.getTopology();
boolean isDelta = true;
long timeToWaitMs = 10000;
DeployResult dr = topology.deploy(isDelta, timeToWaitMs);
System.out.println("Overall result = "+dr.getCompletionCode());
// Display overall log messages
Enumeration logEntries = dr.getLogEntries();
while (logEntries.hasMoreElements()) {
LogEntry le = (LogEntry)logEntries.nextElement();
System.out.println("General message: " + le.getDetail());
}
// Display broker specific information
Enumeration e = dr.getDeployedBrokers();
while (e.hasMoreElements()) {
// Discover the broker
BrokerProxy b = (BrokerProxy)e.nextElement();
// Completion code for broker
System.out.println("Result for broker "+b+" = " +
dr.getCompletionCodeForBroker(b));
// Log entries for broker
Enumeration e2 = dr.getLogEntriesForBroker(b);
while (e2.hasMoreElements()) {
LogEntry le = (LogEntry)e2.nextElement();
System.out.println("Log message for broker " + b +
le.getDetail()));
}
}
이 코드에서 deploy() 메소드는 영향받은 모든 브로커가
전개 요청에 응답할 때까지 차단됩니다. 하지만 메소드에는 CMP의 최대 응답 도착 대기 시간을 설명하는
long 매개변수가 포함됩니다.
메소드가 최종 리턴된 경우
DeployResult가 메소드 리턴 시점에 전개 결과를 표시합니다. 즉, 응용프로그램으로
리턴되면 CMP가 오브젝트를 갱신하지 않습니다.
deploy() 메소드 완료 후에는
예에서 리턴된
DeployResult가 조회되며 전개 조작에 대해 전체 완료 코드가
표시됩니다. 여기에서 다음 값 중 하나를 사용합니다.
- (com.ibm.broker.config.proxy.)CompletionCodeType.pending
- 전개가 하나의 배치로 보류되며 ConfigManagerProxy.sendUpdates()를
실행할 때까지 송신되지 않음을 의미합니다.
이 메시지가 적용될 경우 즉시 리턴된다는 점에 유의하십시오.
즉, 시간 종료 시까지 만기되기를 기다릴 필요가 없습니다.
- CompletionCodeType.submitted
- 전개 메시지가 구성 관리자로 송신되었지만
시간 종료 전에 응답이 수신되지 않았음을 의미합니다. 전개 메시지가
구성 관리자로 송신되지 않는 경우 전개 시에
ConfigManagerProxyLoggedException이 대신 전달된다는 점에 유의하십시오.
- CompletionCodeType.initiated
- 전개가 시작되었지만 시간 종료 전에 브로커 응답이 수신되지 않았다고
구성 관리자가 응답했음을 의미합니다.
- CompletionCodeType.successSoFar
- 구성 관리자가 전개 요청을 발행했지만 전부가
아닌 일부 브로커가 시간 종료 만기 전에 "성공" 메시지로 응답했음을 의미합니다. 브로커가 부정적으로
응답하지 않았습니다.
- CompletionCodeType.success
- 구성 관리자가 전개 요청을 발행했고
모든 관련 브로커가 시간 종료 만기 전에 응답했음을 의미합니다. 이 메시지는
모든 관련 브로커가 응답하는 순간 송신됩니다.
- CompletionCodeType.failure
- 구성 관리자가 전개 요청을 발행했고
최소 하나의 브로커가 부정적으로 응답을 했음을 의미합니다.
완료 코드 모두가 모든 전개에 적용되지 않는다는 점에 유의하십시오. 예를 들어,
단일 특정 브로커로의 전개에서 완료 코드는
'successSoFar'가 될 수 없습니다.
다음 예에는
특정 브로커에 속성화가 될 수 없는 전개의 로그 메시지가 표시되어 있습니다. 성공적인 전개 시, 전개가
계속해서 완료되더라도 이 메시지에는 항상 구성 관리자에서
발생하는 "전개 시작" 로그 항목이 포함됩니다.
최종적으로 예에는 완료 코드와 전개로부터 영향을
받은 각 브로커에 특정한 로그 메시지가 표시되어 있습니다. 토폴로지 또는 토픽 트리 전개에서
로그 메시지가 도메인의 모든 브로커가 된다는 점에 유의하십시오.
특정 브로커의 응답에
해당되는 완료 코드 세트는 다음과 같습니다.
- CompletionCodeType.pending
- 전개가 하나의 배치로 보류되며 ConfigManagerProxy.sendUpdates()를
실행할 때까지 송신되지 않음을 의미합니다.
- CompletionCodeType.submitted
- 전개 메시지가 송신되었지만 구성 관리자에서
전개 시작을 나타내는 응답이 수신되지 않았음을 의미합니다.
- CompletionCodeType.initiated
- 구성 관리자에서 전개가 시작되었다고 응답했지만
브로커에서 아직 응답이 리턴되지 않았음을 의미합니다.
- CompletionCodeType.success
- 구성 관리자가 전개 요청을 발행했고
브로커가 전개 변경 내용을 적용했음을 의미합니다.
- CompletionCodeType.failure
- 구성 관리자가 전개 요청을 발행했고
브로커가 전개에 실패했다고 응답했음을 의미합니다. 전개 실패 이유에 대한 자세한 정보로
getLogEntriesForBroker()를 사용하십시오.
- CompletionCodeType.notRequired
- 전개 요청이 제공된 브로커와 관련된 구성 관리자로
전송되었지만 구성이 이미 최신 상태가 되어 요청이 브로커로 송신되지 않았음을 의미합니다.
DeployResult 오브젝트 구문 분석 방법에 대한 예는
BAR 전개 샘플 실행 또는
브로커 도메인 관리 샘플 실행 CMPAPIExerciser.reportDeployResult() 메소드를 참조하십시오.