43.4. 프로토콜 처리기 구현
43.4.1. 개요
프로토콜 처리기는 사용 중인 프로토콜에 따라 다릅니다. Apache CXF는 Cryostat-WS에서 지정한 대로 Cryostat 프로토콜 처리기를 제공합니다. Cryostat 프로토콜 처리기는 javax.xml.ws.handler.soap.SOAPHandler 인터페이스를 구현합니다.
예 43.8. “CryostatHandler Synopsis” 에 표시된 CryostatHandler 인터페이스는 message에 대한 액세스를 Cryostat Message
오브젝트로 제공하는 Cryostat 특정 메시지 컨텍스트를 사용합니다. 또한 Cryostat 헤더에 액세스할 수 있습니다.
예 43.8. CryostatHandler Synopsis
public interface SOAPHandler extends Handler
{
boolean handleMessage(SOAPMessageContext context);
boolean handleFault(SOAPMessageContext context);
void close(SOAPMessageContext context);
Set<QName> getHeaders()
}
Cryostat 특정 메시지 컨텍스트를 사용하는 것 외에도 Cryostat 프로토콜 처리기에서는 getHeaders()
라는 추가 메서드를 구현해야 합니다. 이 추가 메서드는 처리기에서 처리할 수 있는 헤더 블록의 QNames를 반환합니다.
43.4.2. 프로세스
논리 핸드퍼를 구현하려면 다음을 수행합니다.
- 처리기에 필요한 모든 43.6절. “처리기 초기화” 논리를 구현합니다.
- 43.5절. “Cryostat 처리기에서 메시지 처리” 논리를 구현합니다.
- 43.7절. “오류 메시지 처리” 논리를 구현합니다.
-
getHeaders()
메서드를 구현합니다. - 완료되면 처리기에 대한 논리를 43.8절. “처리기 닫기” 에 구현합니다.
- 43.9절. “처리기 해제” 에 대한 모든 논리가 제거되기 전에 처리기의 리소스를 구현합니다.
43.4.3. getHeaders() 메서드 구현
예 43.9. “Cryo statHander.getHeaders()
메서드” 에 표시된 getHeaders()
는 Apache CXF 런타임에서 처리기가 처리하는 Loki 헤더를 알립니다. 처리기에서 이해할 수 있는 각 Cryostat 헤더의 외부 요소의 QNames를 반환합니다.
예 43.9. Cryo statHander.getHeaders()
메서드
set<QName>
;getHeaders
대부분의 경우 null을 반환하는 것으로 충분합니다. 그러나 애플리케이션에서 ESP 헤더의 mustUnderstand
특성을 사용하는 경우 애플리케이션의 Cryostat 처리기에서 이해하는 헤더를 지정하는 것이 중요합니다. 런타임은 등록된 모든 핸들러가 mustUnderstand
특성이 true
로 설정된 헤더 목록에 대해 이해하는 Cryostat 헤더 집합을 확인합니다. 플래그가 지정된 헤더 중 하나라도 이해된 헤더 목록에 없는 경우 런타임은 메시지를 거부하고 CloudEvent가 예외를 이해해야 합니다.